Xamarin iOS 更改某些地图图钉的颜色
Posted
技术标签:
【中文标题】Xamarin iOS 更改某些地图图钉的颜色【英文标题】:Xamarin iOS change colour of some map pins 【发布时间】: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;
【问题讨论】:
【参考方案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 渲染器 感谢史蒂夫,这个代码什么时候在自定义地图渲染器中调用? 您最好通过我的答案中的链接查看自定义渲染器。里面有很多。我基于它编写了自己的自定义地图渲染器,但没有实现引脚颜色。以上是关于Xamarin iOS 更改某些地图图钉的颜色的主要内容,如果未能解决你的问题,请参考以下文章