Ya, begini caranya
[mapView removeAnnotations:mapView.annotations]
Namun baris kode sebelumnya akan menghapus semua anotasi peta "PINS" dari peta, termasuk pin lokasi pengguna "Pin Biru". Untuk menghapus semua anotasi peta dan mempertahankan pin lokasi pengguna di peta, ada dua cara yang mungkin untuk melakukannya
Contoh 1, pertahankan anotasi lokasi pengguna, hapus semua pin, tambahkan kembali pin lokasi pengguna, tetapi ada kekurangan dengan pendekatan ini, ini akan menyebabkan pin lokasi pengguna berkedip pada peta, karena menghapus pin kemudian menambahkannya kembali
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if ( userLocation != nil ) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Contoh 2, saya pribadi lebih suka menghindari menghapus pin pengguna lokasi sejak awal,
- (void)removeAllPinsButUserLocation2
{
id userLocation = [mapView userLocation];
NSMutableArray *pins = [[NSMutableArray alloc] initWithArray:[mapView annotations]];
if ( userLocation != nil ) {
[pins removeObject:userLocation]; // avoid removing user location off the map
}
[mapView removeAnnotations:pins];
[pins release];
pins = nil;
}
Inilah cara termudah untuk melakukannya:
sumber
Berikut cara menghapus semua anotasi kecuali lokasi pengguna, yang ditulis secara eksplisit karena saya membayangkan saya akan mencari jawaban ini lagi:
sumber
Ini sangat mirip dengan jawaban Sandip, kecuali bahwa itu tidak menambahkan kembali lokasi pengguna sehingga titik biru tidak berkedip dan mati lagi.
sumber
Anda tidak perlu menyimpan referensi apa pun ke lokasi pengguna. Yang dibutuhkan hanyalah:
Dan selama Anda
mapView.showsUserLocation
menyetelnyaYES
, Anda akan tetap memiliki lokasi pengguna di peta. Pengaturan properti ini padaYES
dasarnya meminta tampilan peta untuk mulai memperbarui dan mengambil lokasi pengguna, untuk menampilkannya di peta. DariMKMapView.h
komentar:sumber
Versi Swift:
sumber
Cepat 3
sumber
Swift 2.0 Sederhana dan terbaik:
sumber
Untuk menghapus salah satu jenis subclass bisa Anda lakukan
dimana
PlacesAnnotation
subclass dariMKAnnotation
sumber