Lebih
Google Maps API v3: Cara menghapus semua spidol?
Di Google Maps API v2, jika saya ingin menghapus semua peta spidol, aku hanya bisa melakukan:
map.clearOverlays();
Bagaimana saya melakukan ini di Google Maps API v3?
Melihat Referensi API, it's tidak jelas bagi saya.
421
31
Cukup lakukan hal berikut:
I. Mendeklarasikan variabel global:
II. Mendefinisikan fungsi:
ATAU
III. Mendorong spidol di 'markerArray' sebelum memanggil berikut:
IV. Sebut
clearOverlays();
ataupeta.clearOverlays();
fungsi di mana pun diperlukan.Yang's ini!!
Masalah yang sama. Kode ini doesn't bekerja lagi.
I've dikoreksi itu, perubahan clearMarkers metode cara ini:
set_map(null) ---> setMap(null)
Dokumentasi telah diperbarui untuk menyertakan rincian pada topik: https://developers.google.com/maps/documentation/javascript/markers#remove
Tampaknya bahwa tidak ada fungsi tersebut di V3 belum.
Orang-orang menyarankan untuk menjaga referensi untuk semua penanda anda pada peta dalam array. Dan kemudian ketika anda ingin menghapus mereka semua, hanya loop melalui array dan panggilan .setMap(null) metode pada masing-masing dari referensi.
Lihat pertanyaan ini untuk info lebih lanjut/kode.
Versi saya:
Ini adalah yang paling sederhana dari semua solusi originally posted by YingYang Mar 11 '14 pada 15:049 di bawah asli tanggapan untuk pengguna asli pertanyaan
Saya menggunakan solusi yang sama 2.5 tahun kemudian dengan google maps v3.18 dan bekerja seperti pesona
Pada versi baru v3, Mereka dianjurkan untuk menjaga dalam array. sebagai berikut.
Lihat contoh di overlay-gambaran.
Solusinya cukup mudah. Anda dapat menggunakan metode:
penanda.setMap(map);
. Di sini, anda menentukan di mana peta pin akan muncul.Jadi, jika anda menetapkan
null
dalam metode ini (penanda.setMap(null);
), pin akan hilang.Sekarang, anda dapat menulis fungsi penyihir sementara membuat hilang semua penanda di peta.
Anda hanya menambah masukan pin anda dalam array dan menyatakan mereka dengan
spidol.push (your_new pin)
atau kode ini misalnya:Ini adalah fungsi penyihir dapat mengatur atau hilang semua penanda array dalam peta:
Untuk menghilang semua penanda anda, anda harus memanggil fungsi dengan
null
:Dan, untuk menghapus dan hilang, semua penanda anda, anda harus me-reset anda para penanda seperti ini:
Ini adalah kode lengkap. Itu yang paling sederhana yang saya bisa mengurangi. Hati-hati penuh anda dapat mengganti
YOUR_API_KEY
di kode kunci google API:Anda dapat berkonsultasi pengembang google atau dokumentasi lengkap pada, juga, google pengembang situs web.
Google's Demo Galeri demo tentang bagaimana mereka melakukannya:
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
Anda dapat melihat kode sumber untuk melihat bagaimana mereka menambah penanda.
Singkat cerita, mereka tetap spidol di global array. Ketika membersihkan/menghapus mereka, mereka loop melalui array dan menyebutnya ".setMap(null)" yang diberikan penanda objek.
Namun, contoh ini menunjukkan salah satu 'trik'. "Jelas" untuk contoh ini berarti menghapus mereka dari peta, tetapi menjaga mereka di dalam array, yang memungkinkan aplikasi untuk cepat kembali-tambahkan ke peta. Dalam arti, ini bertindak seperti "menyembunyikan" mereka.
"Hapus" membersihkan array juga.
ini hanya bekerja pada IE.
Bersih dan mudah aplikasi rolinger's jawaban.
Di sini anda dapat menemukan contoh bagaimana untuk menghapus penanda:
https://developers.google.com/maps/documentation/javascript/examples/marker-remove?hl=es
"
set_map
" fungsi diposting di kedua jawaban yang muncul untuk tidak lagi bekerja di Google Maps API v3.Aku bertanya-tanya apa yang terjadi
Update:
Tampaknya Google mengubah API mereka seperti itu "
set_map
" tidak "setMap
".http://code.google.com/apis/maps/documentation/v3/reference.html
Berikut dari Anon bekerja dengan sempurna, meskipun dengan berkedip ketika berulang kali membersihkan lapisan.
Cukup lakukan hal berikut:
I. Mendeklarasikan variabel global:
II. Mendefinisikan fungsi:
III. Mendorong spidol di 'markerArray' sebelum memanggil berikut:
IV. Sebut
clearOverlays()
fungsi di mana pun diperlukan.Yang's ini!!
Harapan yang akan membantu anda.
Aku ditemukan dengan menggunakan markermanager perpustakaan di google-maps-utilitas-perpustakaan-v3 proyek sebagai cara termudah.
1. Mengatur MarkerManager
2. Menambahkan penanda untuk MarkerManager
3. Untuk menghapus penanda, anda hanya perlu memanggil MarkerManger's
clearMarkers()
fungsiAnda dapat melakukannya dengan cara ini juga:
Terbersih cara untuk melakukan ini adalah untuk iterate melalui semua fitur dari peta. Spidol (bersama dengan polygon, polyline, dll.) disimpan dalam lapisan data dari peta.
Dalam kasus bahwa penanda yang ditambahkan melalui menggambar manager, it's terbaik untuk membuat global array dari spidol atau mendorong spidol ke lapisan data pada penciptaan seperti:
Saya merekomendasikan kedua pendekatan itu memungkinkan anda untuk menggunakan google lainnya.maps.data kelas metode nanti.
Untuk menghapus semua lapisan termasuk polys, spidol, dll...
cukup gunakan:
map = new google.maps.Peta(dokumen.getElementById("map_canvas"), myOptions);}
Berikut adalah fungsi yang saya tulis untuk melakukannya bentuk saya di aplikasi peta:
Saya hanya mencoba ini dengan kmlLayer.setMap(null) dan itu berhasil. Tidak yakin apakah itu akan bekerja dengan teratur spidol tapi muncul untuk bekerja dengan benar.
Untuk menghapus semua penanda dari peta membuat fungsi sesuatu seperti ini:
1.addMarker(lokasi): fungsi ini digunakan untuk menambahkan marker pada peta
2.clearMarkers(): fungsi ini menghapus semua penanda dari peta, bukan dari array
3.setMapOnAll(peta): fungsi ini digunakan untuk menambahkan penanda info di array
4.deleteMarkers(): fungsi ini akan Menghapus semua penanda dalam array dengan menghapus referensi untuk mereka.
Ini adalah metode Google sendiri menggunakan setidaknya satu sampel:
Check Google sampel untuk menyelesaikan contoh kode:
https://developers.google.com/maps/documentation/javascript/examples/places-searchbox