Xamarin.Forms.Maps定制时,鉴于

问题描述:

我试图按照this guide以画在Xamarin.Forms应用地图上的折线折线渲染器不渲染。它应该实时跟踪用户的位置,并在新的位置数据进来时更新折线。Xamarin.Forms.Maps定制时,鉴于

我写了一个自定义地图渲染器,它将渲染折线,但由于某种原因,它不会在地图处于更新状态时进行更新视图。我必须导航回到主启动页,再导航到映射页面来更新。

我提取出来的最小代码重现的问题,但它仍然是太多粘贴在这里,所以我主持它在GitHub上:

https://github.com/Steztric/MapWithWaylineSample

请能有人让我知道我在做什么错误。您可以通过克隆回购并运行它说明问题。

您需要创建渲染每一次,所以删除类变量polylineRenderer和使用本地之一。

MKOverlayRenderer GetOverlayRenderer(MKMapView mapView, IMKOverlay overlayWrapper) 
     { 
      IMKOverlay overlay = Runtime.GetNSObject(overlayWrapper.Handle) as IMKOverlay; 

      if (overlay is MKPolyline) 
      { 
       var polylineRenderer = new MKPolylineRenderer(overlay as MKPolyline); 
       polylineRenderer.FillColor = UIColor.Blue; 
       polylineRenderer.StrokeColor = UIColor.Red; 
       polylineRenderer.LineWidth = 3; 
       polylineRenderer.Alpha = 0.4f; 
       return polylineRenderer; 
      } 
      else 
      { 
       return null; 
      } 
     } 

还可以简化事情有点

定义MKPolyline currentWayline;然后

var wayline = MKPolyline.FromCoordinates(coords.ToArray()); 
    //IMKOverlay overlay = Runtime.GetNSObject(wayline.Handle) as IMKOverlay; 
    nativeMap.AddOverlay(wayline); 
    currentWayline = wayline; 
+0

谢谢!此问题已被窃听我从字面上星期! – Steztric