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