以前はremoveAnnotations
注釈を削除していましmapView
たが、同じようにユーザーの場所を削除しました。これを防ぐにはどうすればよいですか、またはユーザー ann を表示に戻すにはどうすればよいですか?
NSArray *annotationsOnMap = mapView.annotations;
[mapView removeAnnotations:annotationsOnMap];
以前はremoveAnnotations
注釈を削除していましmapView
たが、同じようにユーザーの場所を削除しました。これを防ぐにはどうすればよいですか、またはユーザー ann を表示に戻すにはどうすればよいですか?
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 ] ;
編集:Swiftバージョン
let annotationsToRemove = mapView.annotations.filter { $0 !== mapView.userLocation }
mapView.removeAnnotations( annotationsToRemove )
マップからすべての注釈をクリアするには:
[self.mapView removeAnnotations:[self.mapView annotations]];
指定した注釈を Mapview から削除するには
for (id <MKAnnotation> annotation in self.mapView.annotations)
{
if (![annotation isKindOfClass:[MKUserLocation class]])
{
[self.mapView removeAnnotation:annotation];
}
}
これがお役に立てば幸いです。
Swift の場合、単純にワンライナーを使用できます。
mapView.removeAnnotations(mapView.annotations)
編集: nielsbot が述べたように、次のように設定していない限り、ユーザーの場所の注釈も削除されます。
mapView.showsUserLocation = true
ユーザーの場所が のようなクラスである場合はMKUserLocation
、 を使用isKindOfClass
して、ユーザーの場所の注釈を削除しないようにします。
if (![annotation isKindOfClass:[MKUserLocation class]]) {
}
それ以外の場合は、フラグを設定して、 の注釈の種類を認識することができます– mapView:viewForAnnotation:
。
NSPredicate
フィルターはいかがですか?
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"className != %@", NSStringFromClass(MKUserLocation.class)];
NSArray *nonUserAnnotations = [self.mapView.annotations filteredArrayUsingPredicate:predicate];
[self.mapView removeAnnotations:nonUserAnnotations];
NSPredicate フィルターで生活は常に向上します
こんにちは、これを試してください。このコードから解決策を得ました:
NSMutableArray*listRemoveAnnotations = [[NSMutableArray alloc] init];
[Mapview removeAnnotations:listRemoveAnnotations];
[listRemoveAnnotations release];