Apakah ada cara untuk menyetel tingkat zoom maksimal fitBounds()
? Masalah saya adalah ketika peta hanya diumpankan ke satu lokasi, ia memperbesar sejauh mungkin, yang benar-benar mengeluarkan peta dari konteks dan membuatnya tidak berguna. Mungkin saya mengambil pendekatan yang salah?
Terima kasih sebelumnya!
google-maps
fitbounds
Codey W.
sumber
sumber
Jawaban:
Saya suka solusi mrt (terutama ketika Anda tidak tahu berapa banyak titik yang akan Anda petakan atau sesuaikan), kecuali itu membuang penanda sehingga tidak lagi berada di tengah peta. Saya hanya memperpanjangnya dengan titik tambahan dengan mengurangi 0,01 dari lat dan lng juga, sehingga penanda tetap berada di tengah. Bekerja dengan baik, terima kasih mrt!
sumber
fitBounds()
metode ini karena zoom terjadi secara tidak bersamaan: stackoverflow.com/questions/2989858/…Anda dapat mengatur peta Anda dengan
maxZoom
diMapOptions
(api-reference) seperti ini:Ini akan mencegah peta diperbesar lebih dalam saat menggunakan
fitBounds()
dan bahkan menghilangkan tingkat zoom dari kontrol zoom.sumber
maxZoom
sebelum memasang batas dan kemudian membatalkannya lagi menggunakanmap.setOptions({ maxZoom: undefined })
saatidle
diaktifkan dengan mengubah batas. Hal ini mencegah efek zoom in, zoom out alih-alih mengatur ulang zoom diidle
acara tersebut.Solusi lain adalah memperluas batas jika Anda mendeteksi itu terlalu kecil sebelum Anda menjalankan fitBounds ():
sumber
Menggunakan opsi MaxZoom bekerja paling baik untuk tidak memperbesar untuk mendekati tanda yang Anda miliki.
sumber
Setelah Anda menambahkan semua batas nyata, tambahkan garis-garis ini
itu mendapatkan pusat batas nyata kemudian menambahkan dua titik tambahan satu ke timur laut dan satu di barat daya pusat Anda
Ini secara efektif mengatur zoom minimum, mengubah nilai offset untuk menambah atau mengurangi zoom
sumber
Jika ini untuk satu lokasi, Anda dapat menggunakan setCenter () dan setZoom () sebagai gantinya.
sumber
kamu bisa menggunakan
dengan cara ini Anda mengatur properti peta setelah peta diinisialisasi .... Anda dapat mengaturnya sebanyak yang Anda inginkan ... tetapi dalam kasus Anda ... Anda dapat mengaturnya sebelum fitBounds ()
semoga berhasil, rarutu
sumber
Cara saya mencegah peta diperbesar jauh adalah dengan menambahkan baris kode ini:
Tepat setelah baris ini:
Jangan ragu untuk mengubah tingkat zoom ke tingkat apa pun yang Anda tidak ingin peta diperbesar.
Jika Anda memiliki masalah atau pertanyaan, tinggalkan komentar di posting blog yang saya tulis tentang ini di http://icode4you.net/creating-your-own-store-locator-map-how-to-prevent-the- map-from-zooming-in-too close-on-a-single-marker
sumber
Saya sangat menyukai solusi mrt dan bekerja dengan sempurna jika Anda selalu hanya memiliki satu poin untuk dikerjakan. Namun saya menemukan bahwa jika kotak pembatas tidak didasarkan pada satu titik, tetapi titik-titik tersebut sangat berdekatan, ini masih dapat menyebabkan peta diperbesar terlalu jauh.
Berikut adalah cara untuk terlebih dahulu memeriksa apakah titik-titik tersebut berada dalam jarak yang ditentukan satu sama lain, kemudian jika mereka lebih kecil dari jarak minimum tersebut, perpanjang batas dengan jarak minimum tersebut:
Semoga ini bisa membantu seseorang!
sumber
Ini memberi Anda kontrol langsung atas zoom maksimum yang diizinkan pada pemasangan batas.
sumber
Sedangkan untuk saya guys, saya menyelesaikannya dengan membuat acara idle setelah fitBounds. Bekerja dengan sempurna. Tebak itu salah satu solusi paling bersih di sini
sumber
Saya memecahkan masalah ini, karena Google Maps V3 didorong oleh peristiwa:
Anda dapat memberi tahu API untuk menyetel kembali zoom ke jumlah yang tepat saat peristiwa zoom_changed dipicu :
Saya menggunakan awal membuat peta tidak terlalu banyak memperbesar pemuatan ketika akhirnya fitBounds permorfed, tanpanya acara zoom lebih dari 11 tidak akan mungkin bagi pengguna.
sumber
Setelah
fitBounds()
metode panggilan , coba atur tingkat zoom lagi. Ini akan memaksa peta berada pada tingkat zoom sementara dipusatkan di tempat yang tepat.sumber
Saya memiliki Soulution berdasarkan membatasi zoom maksimal saat menyesuaikan batas. Berfungsi untuk saya (diuji pada Win 7 - IE 9, FF 13, Chrome 19):
sumber
Dan .. ini satu lagi.
Ide yang sama seperti mrt dan Ryan, tapi
(*) Catatan: Jika kotaknya sudah cukup besar, maka menambahkan dua titik ekstra tersebut seharusnya tidak berpengaruh. Jadi kami tidak perlu pemeriksaan lebih lanjut.
EDIT: Saya tidak yakin apakah perhitungan rasio saya benar, mengingat kami memiliki proyeksi Mercator. Saya mungkin mengedit ulang ini ..
sumber
Ini sudah terjawab di sini Google Maps v3: Menegakkan min. tingkat zoom saat menggunakan fitBounds berfungsi seperti yang diharapkan :) jadi sekarang jika setelah fit batas zoom kurang maka katakanlah 13 maka Anda dapat mengatur zoom baru yang Anda inginkan
sumber
Inilah solusi saya, yang juga berfungsi ketika dua penanda sangat dekat. Tingkat zoom maksimum yang efektif sama dalam kedua situasi. Jadi, kami tidak akan melakukan zoom out yang tidak perlu, saat ada lebih dari satu penanda
Efeknya, sekali lagi memastikan zoom maksimum, tanpa menggunakan opsi maxZoom, yang mungkin memiliki efek yang tidak diinginkan sehingga tidak mungkin bagi pengguna untuk melakukan zoom lebih jauh dari level maxZoom dengan kontrol zoom
Saya telah menghitung maxLat, minLat, maxLng dan minLng sebelumnya ...
sumber