Monotouch - 在地图上绘制MKPolyline

时间:2011-05-29 13:06:55

标签: xamarin.ios mkmapview

我有一个由CLLocationCoordinate2D数组(点)组成的MKPolyline。这一切都很好。

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

我的事件设置为:Map.SetVisibleMapRect(line.BoundingMapRect, true);

但是虽然地图边界是正确的,但是线条没有出现。

我正在研究MKPolylineView,但无法让它发挥作用。

任何人都知道设置颜色和线宽?

由于

2 个答案:

答案 0 :(得分:8)

经过多次刮擦,以下是如何在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);

答案 1 :(得分:1)

我很确定你的意图是在MapView上动态绘制一个地图,给出一个支持模型对象,该对象指示你想在这里查看我的项目的两个坐标:

https://github.com/anujb/MapWithRoutes

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

谢谢,

Anuj