2011-05-29 77 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