2017-08-08 23 views
1

我有三個MKPointAnnotation對象被添加到一個MKMapView完全相同的座標,他們每個給予一個獨特的標題。MKMapView重疊MKAnnotations只允許顯示兩個標註

MKPointAnnotation *a1 = [[MKPointAnnotation alloc] init]; 
a1.coordinate = CLLocationCoordinate2DMake(45.875684, -122.656254); 
a1.title = @"Title 1"; 
[self.mapView addAnnotation:a1]; 

MKPointAnnotation *a2 = [[MKPointAnnotation alloc] init]; 
a2.coordinate = CLLocationCoordinate2DMake(45.875684, -122.656254); 
a2.title = @"Title 2"; 
[self.mapView addAnnotation:a2]; 

MKPointAnnotation *a3 = [[MKPointAnnotation alloc] init]; 
a3.coordinate = CLLocationCoordinate2DMake(45.875684, -122.656254); 
a3.title = @"Title 3"; 
[self.mapView addAnnotation:a3]; 

當它們添加到地圖中,通常你可以只需輕按註釋,然後通過重疊引腳週期一再挖掘。然而,當有兩個以上的時候,看起來你只能在兩個註釋中循環,即使有三個重疊。 Title 1從未顯示:

enter image description here

這似乎是一個錯誤MKMapView給我,但任何人都經歷過,發現這個辦法解決它?

+0

在Swift中處理MKMapView註釋引腳https://blog.stormid.com/2015/10/mkmapview-pins-swift/ –

+0

@KosukeOgawa這不會有幫助,因爲我們的應用程序必須將引腳放置在確切的座標。 –

+0

哦,我明白了。在iOS 11及更高版本中,您可以使用MKAnnotationView。 clusteringIdentifier' ...祝你好運! https://i.stack.imgur.com/2CLhj.gif –

回答

0

我可以按照你的描述確認這個工作,它看起來像一個錯誤(或者至少我找不到任何相關的文檔)。

一個解決方案(解決方法)是管理mapView可以自己處理的兩個註釋。然後,當用戶選擇(或取消選擇)註釋時,可以將剛剛被取消選擇的那個換成第三個。就像:

extension ViewController: MKMapViewDelegate { 
    func mapView(_ mapView: MKMapView, didDeselect view: MKAnnotationView) { 
     mapView.removeAnnotation(view.annotation!) 
     mapView.addAnnotation(a1) 
    } 
} 

我希望這是有道理的。祝你好運!

+0

我已經提交了一個bug:http://www.openradar.me/radar?id=6087948319588352 –