我有一个由CLLocationCoordinate2D数组(点)组成的MKPolyline。这很好。单击 - 在地图上绘制MKPolyline
我加入这行来作为地图叠加,就像这样:Map.AddOverlay(line);
我事件中设置这样的:Map.SetVisibleMapRect(line.BoundingMapRect, true);
但该行不现身虽然地图的边界是正确的。
我正在调查MKPolylineView,但无法让它工作。
任何人都知道设置颜色和线宽?
感谢
我有一个由CLLocationCoordinate2D数组(点)组成的MKPolyline。这很好。单击 - 在地图上绘制MKPolyline
我加入这行来作为地图叠加,就像这样:Map.AddOverlay(line);
我事件中设置这样的:Map.SetVisibleMapRect(line.BoundingMapRect, true);
但该行不现身虽然地图的边界是正确的。
我正在调查MKPolylineView,但无法让它工作。
任何人都知道设置颜色和线宽?
感谢
经过大量挠头,这里是如何在的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);
我敢肯定,如果你的意图是在MapView上动态绘制一个地图,给出一个支持模型对象,该对象指示两个坐标,您需要在这里查看我的项目:
https://github.com/anujb/MapWithRoutes
这将允许您覆盖路径,并且随着地图更改而更新。它是一个obj-C端口的修改版本,它使用后台线程,因此不会阻塞。
感谢,
Anuj
谢谢Anuj,我会看看它并发表评论 – 2011-09-08 21:04:52
我没有使用MonoTouch的,但你实现viewForOverlay委托方法?地图视图的委托属性是否设置?您是否可以将常规注释添加到地图? – Anna 2011-05-29 17:04:38
是的,我可以添加常规注释。我尝试实现viewForOverlay委托,但不起作用。你有Objective-C中viewForOverlay的例子吗? – 2011-05-29 17:21:11
请参阅http://stackoverflow.com/questions/5474299/iphone-mkmapview-mkpolygon-issues/5474737#5474737。还可以尝试苹果示例应用程序[Breadcrumb](http://developer.apple.com/library/ios/ipad/#samplecode/Breadcrumb/Introduction/Intro.html)和KMLViewer(尽管这一点有点过于复杂)。 – Anna 2011-05-29 17:36:18