2011-05-29 76 views
3

我有一个由CLLocationCoordinate2D数组(点)组成的MKPolyline。这很好。单击 - 在地图上绘制MKPolyline

我加入这行来作为地图叠加,就像这样:Map.AddOverlay(line);

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

但该行不现身虽然地图的边界是正确的。

我正在调查MKPolylineView,但无法让它工作。

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

感谢

+0

我没有使用MonoTouch的,但你实现viewForOverlay委托方法?地图视图的委托属性是否设置?您是否可以将常规注释添加到地图? – Anna 2011-05-29 17:04:38

+0

是的,我可以添加常规注释。我尝试实现viewForOverlay委托,但不起作用。你有Objective-C中viewForOverlay的例子吗? – 2011-05-29 17:21:11

+0

请参阅http://stackoverflow.com/questions/5474299/iphone-mkmapview-mk​​polygon-issues/5474737#5474737。还可以尝试苹果示例应用程序[Breadcrumb](http://developer.apple.com/library/ios/ipad/#samplecode/Breadcrumb/Introduction/Intro.html)和KMLViewer(尽管这一点有点过于复杂)。 – Anna 2011-05-29 17:36:18

回答

8

经过大量挠头,这里是如何在的MKMapView显示MKPolyline:

步骤1:地图GetViewForOverlay创建委托方法

Map.GetViewForOverlay = Map_GetViewForOverlay; 

如果地图是的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

我敢肯定,如果你的意图是在MapView上动态绘制一个地图,给出一个支持模型对象,该对象指示两个坐标,您需要在这里查看我的项目:

https://github.com/anujb/MapWithRoutes 

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

感谢,

Anuj

+0

谢谢Anuj,我会看看它并发表评论 – 2011-09-08 21:04:52