2017-09-26 35 views
0

我写一个Xamarin Xamarin的iOS变色窗体应用程序,它实现了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; 
    } 
} 
+0

你的意思是我应该可以使用类似annotation.PinTintColor的东西?因为我不认为注解有不幸 –

+0

我添加代码,以我的回答改变显示在iOS上的脚色这样的功能 - 从TK.CustomMap的iOS渲染采取 –

+0

谢谢你,史蒂夫,如果是这样的代码中调用的自定义地图渲染? –

相关问题