Xamarin iOS改变了一些地图引脚的颜色

时间:2017-09-26 00:50:46

标签: c# ios xamarin xamarin.ios xamarin.forms

我正在编写一个Xamarin Forms应用程序,它为Android和iOS实现了一个自定义地图渲染器。我想实现自定义引脚,其中不同的颜色在我的地图上意味着不同的东西。

我在自定义地图中添加引脚的代码如下:

 List<BasicMapAnnotation> annotationList = new List<BasicMapAnnotation>();

 for (int i = 0; i < userLocations.Count; i++)
 {
      LatLong latLongs = JsonConvert.DeserializeObject<LatLong>(userLocations[i].coords);
      var annotation = new BasicMapAnnotation(new CLLocationCoordinate2D(Convert.ToDouble(latLongs.latitude), Convert.ToDouble(latLongs.longitude)), userLocations[i].user_id, "Latitude: " + latLongs.latitude.ToString() + " Longitude: " + latLongs.longitude.ToString());

      annotationList.Add(annotation);
 }
 nativeMap.AddAnnotations(annotationList.ToArray());

如何在绘制我的图钉时添加一些自定义登录信息,使它们的颜色不同?

if(something())
{
  annotation.colour = Color.Green;
}

1 个答案:

答案 0 :(得分:1)

我相信在iOS上你可以设置PinTintColor但是在Android上你必须为pin设置一个位图。

查看source code for TK.Custom map on GitHub特别是自定义渲染器。它们展示了如何改变引脚的颜色。

以下是来自iOS自定义渲染器的代码,显示更改引脚颜色。

var pinAnnotationView = annotationView as MKPinAnnotationView;
if (pinAnnotationView != null)
{
    pinAnnotationView.AnimatesDrop = AnimateOnPinDrop;

    var pinTintColorAvailable = pinAnnotationView.RespondsToSelector(new Selector("pinTintColor"));

    if (!pinTintColorAvailable)
    {
        return;
    }

    if (pin.DefaultPinColor != Color.Default)
    {
        pinAnnotationView.PinTintColor = pin.DefaultPinColor.ToUIColor();
    }
    else
    {
        pinAnnotationView.PinTintColor = UIColor.Red;
    }
}