2012-07-20 76 views
1

我有一個MapView,我試圖在當前的座標上添加一個Annotation。CLLocationCoordinate2D到MKAnnotation

我在viewWillAppear中代碼:

CLLocationCoordinate2D location; 
location.latitude = [maps.barLat doubleValue]; 
location.longitude = [maps.barLong doubleValue]; 
[_mapView addAnnotation:location]; 

我上寫着

發送CLLocationCoordinate2D到不兼容的類型MKAnnotation的參數addAnnotation得到一個錯誤。

我看到的所有其他例子都沒有這個代碼的問題,我錯過了什麼?

回答

3

如果您看Apple's API docsaddAnnotation:方法需要id<MKAnnotation>,而不是CLLocationCoordinate2D。這是你錯誤的原因。

如果你只是想要一個簡單的標註,沒有任何花哨的鐘聲和口哨聲,只是這樣做:

CLLocationCoordinate2D location; 
location.latitude = [maps.barLat doubleValue]; 
location.longitude = [maps.barLong doubleValue]; 
MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
annotation.coordinate = location; 
[_mapView addAnnotation: annotation]; 

大多數人,但是,拉閘創建自己的類,它實現了MKAnnotation協議,爲客戶提供定製註釋。但是,如果你需要的只是一個引腳,上面就會起作用。

+0

非常感謝'MKPointAnnotation',因爲我只需要創建一個點並且不需要單獨的類。我已經添加了'annotation.title = maps.barName;'它可以工作,任何想法如何在地圖顯示後立即顯示? – user1454340 2012-07-21 13:36:13

+0

@ user1454340,註釋在地圖顯示後不會立即顯示?你在'viewDidLoad'或'viewWillAppear'中使用上面的代碼?或者你問是否可以自動出現標題的標註?要做到這一點,[請參閱此堆棧溢出答案](http://stackoverflow.com/a/2339556/119114) – Nate 2012-07-21 23:44:18