Xamarin iOS 更改某些地图图钉的颜色

Posted

技术标签:

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

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

我在自定义地图中添加图钉的代码在这里:

 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 更改某些地图图钉的颜色的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms.Maps 如何像谷歌地图一样在图钉旁边/上方有一个标签?

谷歌地图图标(图钉) - 如何定义颜色?

xamarin 表单地图上的自定义引脚

如何设置某些图标而不是默认图钉?

无法更改图钉 iOS MapKit 的颜色

如何在单击 xamarin.forms.maps iOS c# 时更改 pin 图标