В соответствии с этим учебным пособием я добавил средство рендеринга для CustomMap
в свой проект iOS Xamarin.Forms.Я хотел бы перезаписать базовый Pin
пин-кодом текущего местоположения пользователя (т.е. белый / синий круг).Поэтому я добавил класс CustomMapRenderer
, который переопределяет метод GetViewForAnnotation
следующим образом
protected override MKAnnotationView GetViewForAnnotation(MKMapView mapView, IMKAnnotation annotation)
{
MKAnnotationView annotationView = null;
if (annotation is MKUserLocation)
return null;
var customPin = getTrackPin(annotation as MKPointAnnotation);
if (customPin == null)
{
throw new Exception("Custom pin not found");
}
annotationView = mapView.DequeueReusableAnnotation(customPin.Id.ToString());
if (annotationView == null)
{
annotationView = new TrackMKAnnotationView(annotation, customPin.Id.ToString());
annotationView.Image = UIImage.FromFile("pin.png");
annotationView.CalloutOffset = new CGPoint(0, 0);
annotationView.LeftCalloutAccessoryView = new UIImageView(UIImage.FromFile("monkey.png"));
annotationView.RightCalloutAccessoryView = UIButton.FromType(UIButtonType.DetailDisclosure);
((TrackMKAnnotationView)annotationView).Id = customPin.Id.ToString();
((TrackMKAnnotationView)annotationView).Url = customPin.url;
}
annotationView.CanShowCallout = true;
return annotationView;
}
Однако вместо того, чтобы делать
annotationView.Image = UIImage.FromFile("pin.png");
, я хотел бы получить UIImage
булавки, представляющей текущее местоположение пользователя, например (псевдокод):
annotationView.Image = UIImage.UserPin;
Есть ли способ сделать это?