Bagaimana cara mengubah ukuran Google Map dengan JavaScript setelah dimuat?
105
Saya memiliki div 'mapwrap' disetel ke 400px x 400px dan di dalamnya saya memiliki 'peta' Google disetel ke 100% x 100%. Jadi peta dimuat pada 400 x 400px, kemudian dengan JavaScript saya mengubah ukuran 'mapwrap' menjadi 100% x 100% layar - peta google mengubah ukuran ke seluruh layar seperti yang saya harapkan tetapi ubin mulai menghilang sebelum tepi kanan halaman.
Apakah ada fungsi sederhana yang dapat saya panggil agar peta Google menyesuaikan kembali ke div 'mapwrap' berukuran lebih besar?
Jawaban ini sudah ada sejak lama, jadi sedikit demo mungkin bermanfaat & meskipun menggunakan jQuery, tidak perlu melakukannya.
$(function(){var mapOptions ={
zoom:8,
center:new google.maps.LatLng(-34.397,150.644)};var map =new google.maps.Map($("#map-canvas")[0], mapOptions);// listen for the window resize event & trigger Google Maps to update too
$(window).resize(function(){// (the 'map' here is the result of the created 'var map = ...' above)
google.maps.event.trigger(map,"resize");});});
html,
body {height:100%;}#map-canvas {min-width:200px;width:50%;min-height:200px;height:80%;border:1px solid blue;}
<scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script><scriptsrc="https://maps.googleapis.com/maps/api/js?v=3.exp&dummy=.js"></script>
Google Maps resize demo<divid="map-canvas"></div>
Peta tidak akan berubah ukurannya setelah memanggil ini, sampai saya membungkusnya dengan setTimeout. Saya menemukan solusi itu di sini (lihat komentar # 46).
Tyler Collier
Jawaban ini harus dipilih mengingat v2 sekarang sudah tidak digunakan lagi. @Tyler Collier, pemicu peristiwa ini adalah untuk memberi tahu peta bahwa ia harus mengecat ulang dirinya sendiri. Mungkin saja Anda mengubah ukuran penampung tersembunyi, dalam hal ini, ya, zoom out dan in akan berfungsi dalam waktu tunggu.
Schien
8
Jawaban populer google.maps.event.trigger(map, "resize");tidak bekerja untuk saya sendiri.
Ini adalah trik yang memastikan bahwa halaman telah dimuat dan peta juga telah dimuat. Dengan menyetel listener dan mendengarkan status diam peta, Anda kemudian dapat memanggil pemicu peristiwa untuk mengubah ukuran.
Sepertinya ini untuk peta v2. Poster asli menanyakan tentang peta v3. Kedua API tersebut tampaknya tidak kompatibel.
JoshuaD
Tautan itu memicu ancaman terdeteksi.
ke dalam
1
Ini yang terbaik adalah melakukan Pekerjaan selesai. Ini akan mengubah ukuran Peta Anda. Tidak perlu memeriksa elemen lagi untuk mengubah ukuran Peta Anda. Apa yang dilakukannya secara otomatis akan memicu peristiwa ukuran ulang.
Pertama-tama, terima kasih telah membimbing saya dan menutup masalah ini. Saya menemukan cara untuk memperbaiki masalah ini dari diskusi Anda. Ya, mari kita langsung ke intinya. Masalahnya saya Menggunakan helper GoogleMapHelper v3 di CakePHP3. Ketika saya mencoba membuka popup modal bootstrap, saya terpukul dengan masalah kotak abu-abu di atas peta. Sudah diperpanjang selama 2 hari. Akhirnya saya bisa memperbaikinya.
Kami perlu Memperbarui GoogleMapHelper untuk memperbaiki masalah
Perlu menambahkan skrip di bawah ini dalam fungsi setCenterMap
google.maps.event.trigger({$id}, \"resize\");
Dan perlu menyertakan kode di bawah ini dalam JavaScript
Jawaban populer
google.maps.event.trigger(map, "resize");
tidak bekerja untuk saya sendiri.Ini adalah trik yang memastikan bahwa halaman telah dimuat dan peta juga telah dimuat. Dengan menyetel listener dan mendengarkan status diam peta, Anda kemudian dapat memanggil pemicu peristiwa untuk mengubah ukuran.
Ini adalah jawaban saya yang berhasil untuk saya.
sumber
Penawaran peta dalam kotak Wolfgang Pichler untuk
sumber
Ini yang terbaik adalah melakukan Pekerjaan selesai. Ini akan mengubah ukuran Peta Anda. Tidak perlu memeriksa elemen lagi untuk mengubah ukuran Peta Anda. Apa yang dilakukannya secara otomatis akan memicu peristiwa ukuran ulang.
sumber
Pertama-tama, terima kasih telah membimbing saya dan menutup masalah ini. Saya menemukan cara untuk memperbaiki masalah ini dari diskusi Anda. Ya, mari kita langsung ke intinya. Masalahnya saya Menggunakan helper GoogleMapHelper v3 di CakePHP3. Ketika saya mencoba membuka popup modal bootstrap, saya terpukul dengan masalah kotak abu-abu di atas peta. Sudah diperpanjang selama 2 hari. Akhirnya saya bisa memperbaikinya.
Kami perlu Memperbarui GoogleMapHelper untuk memperbaiki masalah
Perlu menambahkan skrip di bawah ini dalam fungsi setCenterMap
Dan perlu menyertakan kode di bawah ini dalam JavaScript
sumber