Di Google Maps API v2, jika saya ingin menghapus semua penanda peta, saya bisa melakukannya:
map.clearOverlays();
Bagaimana saya melakukan ini di Google Maps API v3 ?
Melihat API Referensi , tidak jelas bagi saya.
Di Google Maps API v2, jika saya ingin menghapus semua penanda peta, saya bisa melakukannya:
map.clearOverlays();
Bagaimana saya melakukan ini di Google Maps API v3 ?
Melihat API Referensi , tidak jelas bagi saya.
Jawaban:
Cukup lakukan hal berikut:
I. Menyatakan variabel global:
II Tentukan fungsi:
ATAU
AKU AKU AKU. Tekan penanda di 'markerArray' sebelum memanggil yang berikut:
IV. Panggil fungsi
clearOverlays();
atau dimap.clearOverlays();
mana pun diperlukan.Itu dia!!
sumber
markersArray
ke array kosong daripada mengatur panjangnya, yang saya temukan agak aneh:markersArray = [];
while
pendekatan untuk memproses array:while(markersArray.length) { markersArray.pop().setMap(null); }
. Tidak perlu menghapus array setelah itu.Permasalahan yang sama. Kode ini tidak berfungsi lagi.
Saya telah memperbaikinya, ubah metode clearMarkers dengan cara ini:
set_map (null) ---> setMap (null)
Dokumentasi telah diperbarui untuk memasukkan rincian tentang topik: https://developers.google.com/maps/documentation/javascript/markers#remove
sumber
new Array();
?Tampaknya belum ada fungsi seperti itu di V3.
Orang-orang menyarankan untuk menyimpan referensi ke semua penanda yang Anda miliki di peta dalam sebuah array. Dan kemudian ketika Anda ingin menghapus em semua, cukup loop melalui array dan panggil metode .setMap (null) pada masing-masing referensi.
Lihat pertanyaan ini untuk info lebih lanjut / kode.
Versi saya:
Kode ini adalah versi yang diedit dari kode ini http://www.lootogo.com/googlemapsapi3/markerPlugin.html Saya menghapus kebutuhan untuk memanggil addMarker secara manual.
Pro
Cons
sumber
Ini adalah yang paling sederhana dari semua solusi yang semula diposting oleh YingYang 11 Mar '14 pada 15: 049 di bawah tanggapan asli terhadap pertanyaan asli pengguna
Saya menggunakan solusi yang sama 2,5 tahun kemudian dengan google maps v3.18 dan itu berfungsi seperti pesona
sumber
Saya tidak berpikir ada satu di V3 jadi saya menggunakan implementasi kustom di atas.
Penafian: Saya tidak menulis kode ini tetapi saya lupa menyimpan referensi ketika saya menggabungkannya ke dalam basis kode saya jadi saya tidak tahu dari mana asalnya.
sumber
Pada versi baru v3, Mereka merekomendasikan untuk tetap menggunakan array. sebagai berikut.
Lihat sampel di overlay-ikhtisar .
sumber
Galeri Demo Google memiliki demo tentang cara mereka melakukannya:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Anda dapat melihat kode sumber untuk melihat bagaimana mereka menambahkan penanda.
Singkat cerita, mereka menyimpan penanda dalam array global. Saat membersihkan / menghapusnya, mereka mengulang array dan memanggil ".setMap (null)" pada objek marker yang diberikan.
Namun, contoh ini menunjukkan satu 'trik'. "Clear" untuk contoh ini berarti menghapusnya dari peta tetapi menyimpannya dalam array, yang memungkinkan aplikasi untuk dengan cepat menambahkannya kembali ke peta. Dalam arti tertentu, ini bertindak seperti "menyembunyikan" mereka.
"Hapus" juga menghapus array.
sumber
hanya bekerja pada IE.
bekerja pada chrome, firefox, yaitu ...
sumber
Solusinya cukup mudah. Anda dapat menggunakan metode:
marker.setMap(map);
. Di sini, Anda menentukan peta pin yang akan muncul.Jadi, jika Anda mengatur
null
dalam metode ini (marker.setMap(null);
), pin akan hilang.Sekarang, Anda dapat menulis penyihir fungsi sambil menghilangkan semua penanda di peta Anda.
Anda cukup menambahkan untuk meletakkan pin Anda dalam array dan mendeklarasikannya dengan
markers.push (your_new pin)
atau kode ini misalnya:Ini adalah penyihir fungsi yang dapat mengatur atau menghilangkan semua penanda array Anda di peta:
Untuk menghilangkan semua spidol Anda, Anda harus memanggil fungsi dengan
null
:Dan, untuk menghapus dan menghilangkan, semua spidol Anda, Anda harus mengatur ulang susunan spidol Anda seperti ini:
Ini kode lengkap saya. Itu yang paling sederhana yang bisa saya kurangi. Hati-hati penuh Anda dapat mengganti
YOUR_API_KEY
kode dengan kunci Google API Anda:Anda dapat berkonsultasi dengan google developer atau dokumentasi lengkap di, juga, situs web google developer .
sumber
Aplikasi jawaban rolinger yang bersih dan mudah.
sumber
Fungsi "
set_map
" yang diposting di kedua jawaban tampaknya tidak berfungsi lagi di Google Maps v3 API.Saya bertanya-tanya apa yang terjadi
Memperbarui:
Tampaknya Google mengubah API mereka sedemikian rupa sehingga "
set_map
" bukan "setMap
".http://code.google.com/apis/maps/documentation/v3/reference.html
sumber
Di sini Anda dapat menemukan contoh cara menghapus spidol:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
sumber
Berikut ini dari Anon bekerja dengan sempurna, meskipun dengan berkedip ketika berulang kali membersihkan overlay.
Cukup lakukan hal berikut:
I. Menyatakan variabel global:
II Tentukan fungsi:
AKU AKU AKU. Tekan penanda di 'markerArray' sebelum memanggil yang berikut:
IV. Panggil
clearOverlays()
fungsi itu di mana pun dibutuhkan.Itu dia!!
Semoga itu bisa membantu Anda.
sumber
for(in in markersArray){}
mungkin tidak melakukan apa yang Anda harapkan. JikaArray
diperluas di tempat lain dalam kode itu akan beralih di atas properti itu juga, dan bukan hanya indeks. Versi javascriptmarkersArray.forEach()
yang tidak didukung di mana-mana. Anda akan lebih baik denganfor(var i=0; i<markersArray.length; ++i){ markersArray.setMap(null); }
Saya menemukan menggunakan markermanager library di proyek google-maps-utility-library-v3 sebagai cara termudah.
1. Atur MarkerManager
2. Tambahkan marker ke MarkerManager
3. Untuk penanda jelas Anda hanya perlu untuk memanggil MarkerManger ini
clearMarkers()
fungsisumber
clearMarkers
harus dilakukan hanyalah beralih pada marker yang memanggilmarker.setMap(null)
(saya memeriksa sumbernya). Akan lebih sedikit pekerjaan menempatkan mereka dalam array dan melakukannya sendiri.Anda dapat melakukannya dengan cara ini juga:
sumber
Saya baru saja mencoba ini dengan kmlLayer.setMap (null) dan berhasil. Tidak yakin apakah itu akan berfungsi dengan spidol biasa tetapi tampaknya berfungsi dengan benar.
sumber
Untuk menghapus semua overlay termasuk polys, spidol, dll ...
cukup gunakan:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);}
Berikut adalah fungsi yang saya tulis untuk melakukannya dari aplikasi peta:
sumber
Untuk menghapus semua penanda dari peta, buat fungsi-fungsi seperti ini:
1.addMarker (lokasi): fungsi ini digunakan untuk menambahkan penanda di peta
2.clearMarkers (): fungsi ini menghapus semua penanda dari peta, bukan dari array
3.setMapOnAll (map): fungsi ini digunakan untuk menambahkan info marker dalam array
4.deleteMarkers (): fungsi ini Menghapus semua penanda dalam array dengan menghapus referensi kepada mereka.
sumber
Cara terbersih melakukan ini adalah beralih ke semua fitur peta. Marker (bersama dengan poligon, polyline, dll.) Disimpan dalam lapisan data peta.
Jika marker ditambahkan melalui manajer gambar , yang terbaik adalah membuat array global marker atau mendorong marker ke dalam lapisan data pada kreasi seperti:
Saya merekomendasikan pendekatan kedua karena memungkinkan Anda untuk menggunakan metode kelas google.maps.data lainnya nanti.
sumber
Ini adalah metode yang digunakan Google sendiri dalam setidaknya satu sampel:
Periksa contoh Google untuk contoh kode lengkap:
https://developers.google.com/maps/documentation/javascript/examples/places-searchbox
sumber
Saya tidak tahu mengapa, tetapi, menetapkan
setMap(null)
ke spidol saya tidak berfungsi untuk saya ketika saya menggunakanDirectionsRenderer
.Dalam kasus saya, saya harus menelepon
setMap(null)
ke sayaDirectionsRenderer
juga.Sesuatu seperti itu:
sumber
Cukup berjalan di atas spidol dan menghapusnya dari peta, kosongkan spidol peta setelah itu:
sumber
cukup bersihkan Googlemap
sumber
Saya sudah mencoba semua solusi yang diusulkan, tetapi tidak ada yang berhasil ketika semua spidol saya berada di bawah satu cluster. Akhirnya saya hanya mengatakan ini:
Dengan kata lain, jika Anda membungkus marker dalam sebuah cluster dan ingin menghapus semua marker, Anda memanggil:
sumber
Maksud Anda menghapus seperti menyembunyikannya atau menghapusnya?
jika bersembunyi:
jika Anda ingin menghapusnya:
perhatikan bahwa saya menggunakan penanda array untuk melacak mereka dan mengatur ulang secara manual.
sumber
Anda perlu mengatur peta nol ke penanda itu.
sumber
Saya menemukan solusi sederhana (saya pikir):
sumber
Saya menggunakan tulisan cepat yang melakukan pekerjaan dengan baik. Kerjakan saja
sumber
jika Anda menggunakan plugin gmap V3:
$("#map").gmap("removeAllMarkers");
lihat: http://www.smashinglabs.pl/gmap/documentation#after-load
sumber
Saya tahu bahwa ini mungkin solusi yang sama, tetapi inilah yang saya lakukan
Bekerja setiap saat untuk saya.
sumber