2017-09-06 7 views
1

thisGoogle.Mapsナガットパッケージとサンプルチュートリアルを使用して、Xamarin Forms iOSアプリケーションでGoogleマップを実装しようとしています。私はnugetパッケージをインストールし、私のプロジェクトのiOSのセクションでusing Google.Mapsとパッケージが含まれていますが、私はGoogle.Maps機能を無効にしようとすると、私は、これらの関数が見つからないというエラーを受信して​​いていますXamarinフォーム - iOSで上書きするGoogle.Maps関数が見つかりません

MyCoolClass.LoadView() : no suitable method found to override MyCoolClass.ViewWillAppear(bool) : no suitable method found to override

ここ

は私のコードです:ここでは

using System; 
using System.Collections.Generic; 
using System.Linq; 
using CoreGraphics; 
using CustomRenderer; 
using CustomRenderer.iOS; 
using MapKit; 
using UIKit; 
using Xamarin.Forms; 
using Xamarin.Forms.Maps; 
using Xamarin.Forms.Maps.iOS; 
using Xamarin.Forms.Platform.iOS; 
using Google.Maps; 

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))] 
namespace CustomRenderer.iOS 
{ 

    public class CustomMapRenderer : MapRenderer 
    { 
     MapView gMapView; 

     public override void LoadView() 
     { 
      base.LoadView(); 
      CameraPosition camera = CameraPosition.FromCamera(latitude: 37.797865, 
                longitude: -122.402526, 
                zoom: 6); 
      mapView = MapView.FromCamera(CGRect.Empty, camera); 
      mapView.MyLocationEnabled = true; 

      gMapView = mapView; 
    } 

... 

} 
+0

レンダラー内のネイティブコントロール( 'Control')はこれらのメソッドを持たないでしょう。 – SushiHangover

+0

ありがとうSushiHangover、私はあなたも過去に私の救助に来たことを覚えています!私はXamarinの新機能で、解決策は何ですか? –

+0

Xamarin.Forms.Mapsの上にGooge Mapsを使用しようとしているのはなぜですか? iOSで?デフォルトでは、Xamarin.Forms.Mapsは、iOSユーザーが表示すると予想されるiOSマップを使用します。 –

答えて

1

は私のカスタムマップの一部が初期位置を設定するiOSのマップを使用してiOS用のレンダリングです。

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))] 
namespace Test.iOS.CustomRenderers 
{ 
    public class CustomMapRenderer : MapRenderer 
    { 
     private CustomMap FormsMap => Element as CustomMap; 
     private MKMapView Map => Control as MKMapView; 


     protected override void OnElementChanged(ElementChangedEventArgs<View> e) 
     { 
      base.OnElementChanged(e); 

      if (e.NewElement != null) 
      { 
       MoveToCenter(); 
      } 
     } 

     private void MoveToCenter() 
     { 
      if (FormsMap != null && FormsMap.MapRegion != null) 
      { 
       MoveToMapRegion(FormsMap.MapRegion, false); 
      } 
     } 

     public void MoveToMapRegion(MapSpan region, bool animate) 
     { 
      var locationCoordinate = new CLLocationCoordinate2D(region.Center.Latitude, region.Center.Longitude); 

      var coordinateRegion = MKCoordinateRegion.FromDistance(
       locationCoordinate, 
       region.Radius.Meters * 2, 
       region.Radius.Meters * 2); 

      BeginInvokeOnMainThread(() => 
      { 
       Map.SetRegion(coordinateRegion, animate); 
      }); 
     } 

    ... 
} 
+0

スティーブこれは読んで本当に面白かった –

関連する問題