我使用removeAnnotations
從mapView
刪除我的註釋,但刪除了用戶位置ann。我該如何防止這種情況發生,或者如何讓用戶回來查看?如何從MKMapView中除去用戶位置註釋以外的所有註釋?
NSArray *annotationsOnMap = mapView.annotations;
[mapView removeAnnotations:annotationsOnMap];
我使用removeAnnotations
從mapView
刪除我的註釋,但刪除了用戶位置ann。我該如何防止這種情況發生,或者如何讓用戶回來查看?如何從MKMapView中除去用戶位置註釋以外的所有註釋?
NSArray *annotationsOnMap = mapView.annotations;
[mapView removeAnnotations:annotationsOnMap];
更新:
當我嘗試使用iOS 9 SDK時,不再刪除用戶註釋。你可以簡單地使用
mapView.removeAnnotations(mapView.annotations)
歷史答案(針對iOS的前9 iOS上運行的應用程序):
試試這個:
NSMutableArray * annotationsToRemove = [ mapView.annotations mutableCopy ] ;
[ annotationsToRemove removeObject:mapView.userLocation ] ;
[ mapView removeAnnotations:annotationsToRemove ] ;
編輯:雨燕版
let annotationsToRemove = mapView.annotations.filter { $0 !== mapView.userLocation }
mapView.removeAnnotations(annotationsToRemove)
如果您的用戶的位置是一種類MKUserLocation
的,使用isKindOfClass
避免刪除用戶的位置標註。
if (![annotation isKindOfClass:[MKUserLocation class]]) {
}
否則,你可以設置一個標誌來識別一種註解的– mapView:viewForAnnotation:
。
謝謝!我會記住這個 –
嗨,試試這個我得到了解決方案從離子這段代碼:
NSMutableArray*listRemoveAnnotations = [[NSMutableArray alloc] init];
[Mapview removeAnnotations:listRemoveAnnotations];
[listRemoveAnnotations release];
這並不回答這個問題。實際上,這個代碼沒有效果 - 當調用'-removeAnimations'時''listRemoveAnnotations'是空的。 – nielsbot
要清除所有地圖中的註釋:
[self.mapView removeAnnotations:[self.mapView annotations]];
從MapView的
for (id <MKAnnotation> annotation in self.mapView.annotations)
{
if (![annotation isKindOfClass:[MKUserLocation class]])
{
[self.mapView removeAnnotation:annotation];
}
}
希望這可以幫助您刪除指定的註解。
這個答案比公認的簡潔得多。 – shapeare
某些NSPredicate
過濾器如何?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"className != %@", NSStringFromClass(MKUserLocation.class)];
NSArray *nonUserAnnotations = [self.mapView.annotations filteredArrayUsingPredicate:predicate];
[self.mapView removeAnnotations:nonUserAnnotations];
生活與NSPredicate總是更好的過濾
謝謝!這正是我需要的! –
Thanx ..... Buddy – user968597
也謝謝我:) –