Saya memiliki Google Maps (V3) di halaman saya dengan lebar halaman 100% dengan satu penanda di tengah. Ketika saya mengubah ukuran lebar jendela browser saya, saya ingin peta tetap berada di tengah (responsif). Sekarang peta hanya berada di sisi kiri halaman dan semakin kecil.
UPDATE Dapat berfungsi persis seperti yang dijelaskan berkat duncan. Ini adalah kode terakhir:
var center;
function calculateCenter() {
center = map.getCenter();
}
google.maps.event.addDomListener(map, 'idle', function() {
calculateCenter();
});
google.maps.event.addDomListener(window, 'resize', function() {
map.setCenter(center);
});
javascript
google-maps
google-maps-api-3
Gregory Bolkenstijn
sumber
sumber
center
tidak perlu menjadi global. Menyediakancenter
(dancalculateCenter
) berada dalam cakupan yang sama denganmap
, maka semuanya harus berfungsi. Tentu saja, jikamap
bersifat global maka Anda harus memperbaikinya juga :)Jawaban:
Anda harus memiliki event listener untuk mengetahui kapan jendela diubah ukurannya. Ini berhasil untuk saya (taruh di fungsi inisialisasi Anda):
sumber
var center; google.maps.event.addListener(map, 'center_changed', function() { center = map.getCenter(); }); google.maps.event.addDomListener(window, 'resize', function() { map.setCenter(center); });
Tidak berhasil. Bantuan apa pun akan dihargai.Deteksi acara pengubahan ukuran browser, ubah ukuran Google Map sambil mempertahankan titik tengah:
Anda dapat menggunakan kode yang sama di event handler lain saat mengubah ukuran peta google melalui cara lain (misalnya dengan kontrol 'resizable' jQuery-UI).
Sumber: http://hsmoore.com/blog/keep-google-map-v3-centered-when-browser-is-resized/ kredit ke @smftre untuk tautannya.
Catatan: Kode ini ditautkan dalam komentar @ smftre pada jawaban yang diterima. Saya pikir ada baiknya menambahkannya sebagai jawaban sendiri karena ini benar-benar lebih unggul dari jawaban yang diterima. Ini menghilangkan kebutuhan variabel global untuk melacak titik pusat dan penangan kejadian untuk memperbarui variabel itu.
sumber
google.maps.event.trigger(map, "resize");
?Beberapa contoh bagus di w3schools.com. Saya menggunakan yang berikut ini dan itu berfungsi dengan baik.
http://www.w3schools.com/googleapi/google_maps_events.asp
sumber
html: Buat div dengan id pilihan Anda
js: Buat peta dan lampirkan ke div yang baru saja Anda buat
Pusatkan saat jendela berubah ukuran
sumber
Diperbarui dari solusi di atas ke es6.
sumber
addDomListener
untukwindow
, yang merupakan elemen DOM, danmap
, yang bukan. Objek peta harus menggunakangoogle.maps.event.addListener
ataumap.addListener
pengendali kejadiannya sendiri .