Eu tenho um Google Maps (V3) na minha página com 100% de largura e um marcador no meio. Quando redimensiono a largura da janela do navegador, gostaria que o mapa permanecesse centralizado (responsivo). Agora, o mapa fica no lado esquerdo da página e fica menor.
ATUALIZAÇÃO Conseguiu funcionar exatamente como descrito, graças a duncan. Este é o código final:
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
fonte
fonte
center
não precisa ser global. Desde quecenter
(ecalculateCenter
) estejam no mesmo escopo quemap
, então tudo deve funcionar. Claro, semap
é global, então você vai precisar para corrigir isso também :)Respostas:
Você precisa ter um ouvinte de eventos para quando a janela for redimensionada. Isso funcionou para mim (coloque-o na sua função de inicialização):
fonte
var center; google.maps.event.addListener(map, 'center_changed', function() { center = map.getCenter(); }); google.maps.event.addDomListener(window, 'resize', function() { map.setCenter(center); });
não funciona. Qualquer ajuda seria apreciada.Detecte o evento de redimensionamento do navegador, redimensione o Google Map, preservando o ponto central:
Você pode usar o mesmo código em outros manipuladores de eventos ao redimensionar o mapa do Google por outros meios (por exemplo, com um controle 'redimensionável' da jQuery-UI).
Fonte: http://hsmoore.com/blog/keep-google-map-v3-centered-when-browser-is-resized/ credita a @smftre pelo link.
Nota: Este código foi vinculado no comentário de @ smftre na resposta aceita. Eu acho que vale a pena adicioná-lo como sua própria resposta, pois é realmente superior à resposta aceita. Isso elimina a necessidade de uma variável global para rastrear o ponto central e um manipulador de eventos para atualizar essa variável.
fonte
google.maps.event.trigger(map, "resize");
?Alguns bons exemplos em w3schools.com. Eu usei o seguinte e funciona muito bem.
http://www.w3schools.com/googleapi/google_maps_events.asp
fonte
html: Crie uma div com um ID de sua escolha
js: crie um mapa e anexe-o à div que você acabou de criar
Centralizar quando a janela é redimensionada
fonte
Atualizado da solução acima para es6.
fonte
addDomListener
for thewindow
, que é um elemento DOM, e omap
, que não é. O objeto de mapa deve usar ogoogle.maps.event.addListener
ou seu própriomap.addListener
manipulador de eventos.