【问题标题】:Xamarin iOS change colour of some map pinsXamarin iOS 更改某些地图图钉的颜色
【发布时间】:2018-03-07 01:45:15
【问题描述】:

我正在编写一个 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;
}

【问题讨论】:

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


    【解决方案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;
        }
    }
    

    【讨论】:

    • 你的意思是我应该可以使用annotation.PinTintColor之类的东西吗?因为我觉得注解很遗憾没有这样的功能
    • 我在答案中添加了代码,显示更改 iOS 上的引脚颜色 - 取自 TK.CustomMap iOS 渲染器
    • 感谢史蒂夫,这个代码什么时候在自定义地图渲染器中调用?
    • 您最好通过我的答案中的链接查看自定义渲染器。里面有很多。我基于它编写了自己的自定义地图渲染器,但没有实现引脚颜色。
    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2016-03-13
    • 2014-03-12
    • 1970-01-01
    相关资源
    最近更新 更多