protected void OnUpdateIconView(Pin outerItem, Marker nativeItem) { if (outerItem?.Icon?.Type == BitmapDescriptorType.View && outerItem?.Icon?.View != null) { NativeMap.InvokeOnMainThread(() => { var iconView = outerItem.Icon.View; var nativeView = Utils.ConvertFormsToNative(iconView, new CGRect(0, 0, iconView.WidthRequest, iconView.HeightRequest)); nativeView.BackgroundColor = UIColor.Clear; nativeItem.GroundAnchor = new CGPoint(iconView.AnchorX, iconView.AnchorY); nativeItem.Icon = Utils.ConvertViewToImage(nativeView); // Would have been way cooler to do this instead, but surprisingly, we can't do this on Android: // nativeItem.IconView = nativeView; }); } }