【问题标题】:Monotouch - Draw a MKPolyline on MapMonotouch - 在地图上绘制 MKPolyline
【发布时间】:2011-05-29 13:06:55
【问题描述】:

我有一个由 CLLocationCoordinate2D 数组(点)组成的 MKPolyline。没关系。

我将此线作为叠加层添加到地图中,如下所示:Map.AddOverlay(line);

我设置了这个:Map.SetVisibleMapRect(line.BoundingMapRect, true);

虽然地图边界是正确的,但这条线没有显示出来。

我正在研究 MKPolylineView,但无法正常工作。

有人知道设置颜色和线宽吗?

谢谢

【问题讨论】:

  • 我没用过MonoTouch但是你实现了viewForOverlay委托方法吗?地图视图的委托属性设置了吗?您可以在地图上添加常规注释吗?
  • 是的,我可以添加常规注释。我尝试实现 viewForOverlay 委托,但不起作用。你有 Objective-C 中 viewForOverlay 的例子吗?
  • stackoverflow.com/questions/5474299/…。也可以试试 Apple 示例应用 Breadcrumb 和 KMLViewer(虽然这个有点过于复杂)。
  • 我无法理解这个 viewForOverlay。在 Monotouch 中,这是一种我需要传递 NSObject 覆盖的方法。我不太明白如何使用它。
  • viewForOverlay 方法将由地图视图自动调用,而不是由您的代码调用。如果您在调用 AddOverlay 之前显示创建 line 对象的代码可能会有所帮助。

标签: xamarin.ios mkmapview


【解决方案1】:

头疼之后,下面是如何在 MKMapView 上显示 MKPolyline:

第 1 步:为 Map GetViewForOverlay 创建一个委托方法

Map.GetViewForOverlay = Map_GetViewForOverlay;

其中 Map 是 MKMapView。

MKOverlayView Map_GetViewForOverlay(MKMapView mapView, NSObject overlay)
{
    if(overlay.GetType() == typeof(MKPolyline))
    {
       MKPolylineView p = new MKPolylineView((MKPolyline)overlay);
       p.LineWidth = 2.0f;
       p.StrokeColor = UIColor.Green;
       return p;
    }
    else
        return null;
}

第 2 步:创建 MKPolyline 的新实例

MKPolyline line = MKPolyline.FromCoordinates(polyPoints);

其中 polyPoints 是一个 CLLocationCoordinate2D 数组。

第 3 步:将叠加层添加到地图中

Map.AddOverlay(line);

第 4 步:使用下面的代码缩放和更改地图边界以适应路线

Map.SetVisibleMapRect(line.BoundingMapRect, true);

【讨论】:

    【解决方案2】:

    我很确定您的意图是否是在给定一个支持模型对象的情况下在 MapView 上动态绘制地图,该对象指示您想在此处查看我的项目的两个坐标:

    https://github.com/anujb/MapWithRoutes
    

    这将允许您覆盖路径,并且它会随着地图的变化而更新。它是 obj-C 端口的修改版本,它利用后台线程,因此不会阻塞。

    谢谢,

    阿努杰

    【讨论】:

    • 谢谢Anuj,我会看一下并发布cmets
    猜你喜欢
    • 2014-02-25
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-05-11
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多