40

以前はremoveAnnotations注釈を削除していましmapViewたが、同じようにユーザーの場所を削除しました。これを防ぐにはどうすればよいですか、またはユーザー ann を表示に戻すにはどうすればよいですか?

NSArray *annotationsOnMap = mapView.annotations;
        [mapView removeAnnotations:annotationsOnMap];
4

8 に答える 8

97

アップデート:

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 )
于 2012-06-03T03:16:40.923 に答える
22

マップからすべての注釈をクリアするには:

[self.mapView removeAnnotations:[self.mapView annotations]];

指定した注釈を Mapview から削除するには

 for (id <MKAnnotation> annotation in self.mapView.annotations)
{
    if (![annotation isKindOfClass:[MKUserLocation class]])
    {
              [self.mapView removeAnnotation:annotation];   
    }

}

これがお役に立てば幸いです。

于 2013-02-19T04:04:04.400 に答える
7

Swift の場合、単純にワンライナーを使用できます。

mapView.removeAnnotations(mapView.annotations)

編集: nielsbot が述べたように、次のように設定していない限り、ユーザーの場所の注釈も削除されます。

mapView.showsUserLocation = true
于 2015-06-18T13:49:26.170 に答える
3

ユーザーの場所が のようなクラスである場合はMKUserLocation、 を使用isKindOfClassして、ユーザーの場所の注釈を削除しないようにします。

if (![annotation isKindOfClass:[MKUserLocation class]]) {

}

それ以外の場合は、フラグを設定して、 の注釈の種類を認識することができます– mapView:viewForAnnotation:

于 2012-06-03T03:13:08.813 に答える
0

NSPredicateフィルターはいかがですか?

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"className != %@", NSStringFromClass(MKUserLocation.class)];
NSArray *nonUserAnnotations = [self.mapView.annotations filteredArrayUsingPredicate:predicate];
[self.mapView removeAnnotations:nonUserAnnotations];

NSPredicate フィルターで生活は常に向上します

于 2016-07-14T20:24:37.997 に答える
-1

こんにちは、これを試してください。このコードから解決策を得ました:

 NSMutableArray*listRemoveAnnotations = [[NSMutableArray alloc] init];
[Mapview removeAnnotations:listRemoveAnnotations];

 [listRemoveAnnotations release];
于 2012-11-30T06:46:35.853 に答える