2017-07-17 18 views
1

マップ上に緯度/経度座標のポリゴンを示すXamarinフォームアプリケーションを作成しています。私はthis Xamarinのチュートリアルで、地図上のポリゴンオーバーレイ用のカスタムレンダラーを追加する予定です。Xamarinフォーム:Android - OnElementChanged()をオーバーライドする適切なメソッドが見つかりません

AndroidのMapRendererクラスからのCustomMapRenderer.csというクラスをAndroidプロジェクトに作成しました。このクラスでは、私はOnElementChangedメソッドをオーバーライドしようとしていますが、私はエラー

1)CustomMapRenderer.OnElementChanged(ElementChangedEventArgs<View>)': no suitable method found to overrideに実行しています。

2)Argument 1: cannot convert from 'Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.View> to 'Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Xamarin.Forms.Maps.Map>

このコードは、上記のリンク先のチュートリアルから変更されていないので、私は混乱しています。ここで

は私のコードです:

using Android.Gms.Maps; 
using MapOverlay.Droid; 
using SafeAgSystems.Models; 
using System.Collections.Generic; 
using Xamarin.Forms; 
using Xamarin.Forms.Maps; 
using Xamarin.Forms.Maps.Android; 

[assembly: ExportRenderer(typeof(CustomMap), typeof(CustomMapRenderer))] 
namespace MapOverlay.Droid 
{ 
public class CustomMapRenderer : MapRenderer, IOnMapReadyCallback 
    { 
    GoogleMap map; 
    List<Position> shapeCoordinates; 

    protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<View> e) //Error 1 
    { 
     base.OnElementChanged(e); //Error2 

     if (e.OldElement != null) 
     { 
      // Unsubscribe 
     } 

     if (e.NewElement != null) 
     { 
      var formsMap = (CustomMap)e.NewElement; 
      shapeCoordinates = formsMap.ShapeCoordinates; 

      ((MapView)Control).GetMapAsync(this); 
     } 
    } 

    } 
} 

答えて

2

あなたはMapRendererから継承するので、あなたがオーバーライドすべきメソッドが

protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<Map> e) 
+1

である。これはXamarin.Droidにマップが表示されるように努めましたが、私はどんなことに気づきましたmap.MoveToRegionなどのPCLのFormsマップから渡された設定は一見無視されますが、Xamarin.iOSではそうではありません。これについての洞察? –

+0

このスレッドでは、この問題について説明し、回避方法を示します。https://forums.xamarin.com/discussion/92565/android-ionmapreadycallback-forms-2-3-4#latest –

関連する問題