protected override void OnElementChanged(ElementChangedEventArgs <View> args) { SKMap oldMap = args.OldElement as SKMap; SKMap newMap = args.NewElement as SKMap; if (oldMap != null) { _NativeControl.OverlayRenderer = null; _NativeControl.GetViewForAnnotation = null; if (oldMap.MapOverlays != null) { oldMap.MapOverlays.CollectionChanged -= MapOverlaysCollectionChanged; } if (oldMap.Pins as ObservableCollection <Pin> != null) { ((ObservableCollection <Pin>)oldMap.Pins).CollectionChanged -= PinsCollectionChanged; } UnregisterPinCallbacks(oldMap.Pins); } base.OnElementChanged(args); if (newMap != null) { _NativeControl.OverlayRenderer = OverlayedMapDelegate.OverlayRenderer; _NativeControl.GetViewForAnnotation = GetViewForPin; if (_SharedControl?.MapOverlays != null) { _SharedControl.MapOverlays.CollectionChanged += MapOverlaysCollectionChanged; SetupMapOverlays(); } if (newMap.Pins as ObservableCollection <Pin> != null) { ((ObservableCollection <Pin>)newMap.Pins).CollectionChanged += PinsCollectionChanged; } RegisterPinCallbacks(newMap.Pins); } }
protected override void OnElementChanged(ElementChangedEventArgs <Map> args) { SKMap oldMap = args.OldElement as SKMap; SKMap newMap = args.NewElement as SKMap; if (oldMap != null) { if (oldMap.MapOverlays != null) { oldMap.MapOverlays.CollectionChanged -= MapOverlaysCollectionChanged; } if (oldMap.Pins as ObservableCollection <Pin> != null) { ((ObservableCollection <Pin>)oldMap.Pins).CollectionChanged -= PinsCollectionChanged; } NativeMap?.SetOnMarkerClickListener(null); UnregisterPinCallbacks(oldMap.Pins); } base.OnElementChanged(args); if (newMap != null) { if (newMap.MapOverlays != null) { newMap.MapOverlays.CollectionChanged += MapOverlaysCollectionChanged; } if (newMap.Pins as ObservableCollection <Pin> != null) { ((ObservableCollection <Pin>)newMap.Pins).CollectionChanged += PinsCollectionChanged; } RegisterPinCallbacks(newMap.Pins); } }
public SKMapKitOverlay(SKMapOverlay sharedOverlay, SKMap sharedControl) { SharedOverlay = sharedOverlay; _SharedControl = sharedControl; }