У меня есть Google Maps (V3) на моей странице с шириной страницы 100% с одним маркером посередине. Когда я изменяю ширину окна браузера, я хочу, чтобы карта оставалась центрированной (отзывчивой). Теперь карта остается в левой части страницы и становится меньше.
ОБНОВЛЕНИЕ Все заработало точно так, как описано, благодаря Дункану. Это последний код:
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
Грегори Болкенштейн
источник
источник
center
не обязательно быть глобальным. Предоставлениеcenter
(иcalculateCenter
) находится в той же области, что иmap
, тогда все должно работать. Конечно, еслиmap
глобальный, то вам тоже нужно это исправить :)Ответы:
Вам нужен прослушиватель событий при изменении размера окна. Это сработало для меня (поместите его в свою функцию инициализации):
источник
var center; google.maps.event.addListener(map, 'center_changed', function() { center = map.getCenter(); }); google.maps.event.addDomListener(window, 'resize', function() { map.setCenter(center); });
не работает. Любая помощь будет оценена.Обнаружение события изменения размера браузера, изменение размера карты Google при сохранении центральной точки:
Вы можете использовать тот же код в других обработчиках событий при изменении размера карты Google другими способами (например, с помощью элемента управления jQuery-UI с изменяемым размером).
Источник: http://hsmoore.com/blog/keep-google-map-v3-centered-when-browser-is-resized/ кредит @smftre за ссылку.
Примечание. Этот код был указан в комментарии @ smftre к принятому ответу. Я думаю, что стоит добавить его как отдельный ответ, поскольку он действительно превосходит принятый ответ. Это устраняет необходимость в глобальной переменной для отслеживания центральной точки и в обработчике событий для обновления этой переменной.
источник
google.maps.event.trigger(map, "resize");
?Несколько хороших примеров на w3schools.com. Я использовал следующее, и он отлично работает.
http://www.w3schools.com/googleapi/google_maps_events.asp
источник
html: создайте div с идентификатором по вашему выбору
js: создайте карту и прикрепите ее к только что созданному div.
Центрировать при изменении размера окна
источник
Обновлено вышеуказанное решение до es6.
источник
addDomListener
дляwindow
элемента, который является элементом DOM, так и для элементаmap
, который не является. Объект карты должен использоватьgoogle.maps.event.addListener
свой собственныйmap.addListener
обработчик событий.