Попытка отображения круга на карте с помощью Custom Renderer. (Android)Последняя версия Xmarin.Forms.Maps разбивает пользовательский рендерер
Обновлено Xamarin.Forms.Maps to v2.3.3.175 и теперь я получаю сообщение об ошибке: CustomMapRenderer.OnElementChanged (ElementChangedEventArgs) ': не найдено подходящего метода для переопределения.
Работал ранее без проблем. Даже образец из ссылки ниже больше не работает. https://developer.xamarin.com/recipes/cross-platform/xamarin-forms/maps/map-overlay/circle/
Изменение ElementChangedEventArgs<View>
к ElementChangedEventArgs<Map>
устраняет ошибку, но рендер никогда не вызывается, так что круг никогда не показывается.
Любые идеи? Заранее спасибо.
Мой заказ Android Renderer:
using Android.Gms.Maps;
using Android.Gms.Maps.Model;
using Xamarin.Forms;
using Xamarin.Forms.Maps.Android;
using GasFinder;
using MapOverlay.Droid;
[assembly: ExportRenderer(typeof(CustomMap),typeof(CustomMapRenderer))]
namespace MapOverlay.Droid {
public class CustomMapRenderer:MapRenderer, IOnMapReadyCallback {
GoogleMap map;
CustomCircle circle;
protected override void OnElementChanged(Xamarin.Forms.Platform.Android.ElementChangedEventArgs<View> e) {
base.OnElementChanged(e);
if(e.OldElement != null) {
// Unsubscribe
}
if(e.NewElement != null) {
var formsMap = (CustomMap)e.NewElement;
circle = formsMap.Circle;
((MapView)Control).GetMapAsync(this);
}
}
public void OnMapReady(GoogleMap googleMap) {
map = googleMap;
var circleOptions = new CircleOptions();
circleOptions.InvokeCenter(new LatLng(circle.Position.Latitude,circle.Position.Longitude));
circleOptions.InvokeRadius(circle.Radius);
circleOptions.InvokeFillColor(0X233273b1);
circleOptions.InvokeStrokeColor(0X64007eff);
circleOptions.InvokeStrokeWidth(10);
map.AddCircle(circleOptions);
}
}
}
CustomMap.cs выглядит следующим образом:
using System.Collections.Generic;
using Xamarin.Forms.Maps;
namespace GasFinder {
public class CustomMap:Map {
public CustomCircle Circle { get; set; }
}
}
CustomCircle.cs выглядит следующим образом:
using Xamarin.Forms.Maps;
namespace GasFinder {
public class CustomCircle {
public Position Position { get; set; }
public double Radius { get; set; }
}
}
код на моем Page.xaml .cs выглядит следующим образом:
var position = new Xamarin.Forms.Maps.Position(Search.loc.lat,Search.loc.lng);
customMap.Circle = new CustomCircle {
Position = position,
Radius = Settings.Distance*1000
};
Метод подписи должен быть 'защищен переопределения недействительным OnElementChanged (Xamarin.Forms.Platform.Android.ElementChangedEventArgs e) '(вы можете оставить некоторые пространства имен, если вы добавите их в свой список пользователей). Вы уверены, что это называется? Вы поставили какие-то точки останова в этом попадании? –
Это то, что у меня было, но эта линия не работает. –
Если вы наберете 'override' и предложите IntelliSense предложить вам? С чем это связано? –