Existe uma maneira de definir um nível máximo de zoom para fitBounds()
? Meu problema é que, quando o mapa é alimentado apenas por um local, ele aumenta o zoom o máximo que pode, o que realmente tira o mapa do contexto e o torna inútil. Talvez eu esteja usando a abordagem errada?
Desde já, obrigado!
google-maps
fitbounds
Codey W
fonte
fonte
Respostas:
Eu gosto da solução do mrt (especialmente quando você não sabe quantos pontos irá mapear ou ajustar), exceto que ela joga o marcador para fora de forma que ele não fique mais no centro do mapa. Eu simplesmente o estendi por um ponto adicional subtraindo 0,01 do lat e do lng também, de modo que ele mantém o marcador no centro. Funciona muito bem, obrigado mrt!
fonte
fitBounds()
método é porque o zoom está ocorrendo de forma assíncrona: stackoverflow.com/questions/2989858/…Você pode configurar seu mapa
maxZoom
noMapOptions
(referência de API) assim:Isso evitaria que o mapa aumentasse o zoom ao usar
fitBounds()
e até removeria os níveis de zoom do controle de zoom.fonte
maxZoom
antes de ajustar os limites e, em seguida, removê-lo novamente usandomap.setOptions({ maxZoom: undefined })
noidle
evento disparado alterando os limites. Isso evita o efeito de zoom in, zoom out em vez de redefinir o zoom noidle
evento.Outra solução é expandir os limites se você detectar que eles são muito pequenos antes de executar fitBounds ():
fonte
Usar a opção MaxZoom funciona melhor para não aplicar zoom para fechar as marcas que você possui.
fonte
Depois de adicionar todos os limites reais, adicione essas linhas
obtém o centro dos limites reais, em seguida, adiciona dois pontos adicionais, um a nordeste e outro a sudoeste de seu centro
Isso define efetivamente o zoom mínimo, altere o valor do deslocamento para aumentar ou diminuir o zoom
fonte
Se for para um único local, você pode usar setCenter () e setZoom ().
fonte
você pode usar
desta forma, você define as propriedades do mapa após o mapa ter sido inicializado ... você pode defini-las quantas vezes quiser ... mas no seu caso ... você pode defini-las antes de fitBounds ()
boa sorte rarutu
fonte
A maneira de evitar que o mapa amplie muito é adicionando esta linha de código:
Imediatamente após esta linha:
Sinta-se à vontade para alterar o nível de zoom para qualquer nível que você não deseja que o mapa passe de zoom.
Se você tiver qualquer problema ou dúvida, deixe-me um comentário na postagem do blog que escrevi sobre isso em http://icode4you.net/creating-your-own-store-locator-map-how-to-prevent-the- mapa-de-zoom-muito-perto-em-um-único-marcador
fonte
Gosto muito da solução do mrt e funciona perfeitamente se você sempre tiver apenas um ponto para trabalhar. No entanto, descobri que, se a caixa delimitadora não fosse baseada em um ponto, mas os pontos estivessem muito próximos, isso ainda poderia fazer com que o mapa fosse ampliado demais.
Esta é uma maneira de primeiro verificar se os pontos estão dentro de uma distância definida um do outro, então, se eles forem menores do que essa distância mínima, estenda os limites por essa distância mínima:
Espero que isso ajude alguém!
fonte
Isso lhe dá um controle direto sobre o zoom máximo permitido no ajuste de limites.
fonte
Quanto a mim, eu resolvo isso criando um evento ocioso após fitBounds. Funcionando perfeitamente. Acho que essa é uma das soluções mais limpas aqui
fonte
Resolvi com esse pedaço, já que o Google Maps V3 é orientado a eventos:
você pode dizer à API para restaurar o zoom para uma quantidade adequada quando o evento zoom_changed for acionado:
Usei o inicial para fazer o mapa não aumentar muito o carregamento quando o eventual fitBounds permorfed, sem ele qualquer evento de zoom acima de 11 seria impossível para o usuário.
fonte
Depois de chamar o
fitBounds()
método, tente configurar o nível de zoom novamente. Isso forçará o mapa a ficar naquele nível de zoom enquanto estiver centralizado no lugar certo.fonte
Eu tenho uma explicação baseada na limitação do zoom máximo ao ajustar os limites. Funciona para mim (testado no Win 7 - IE 9, FF 13, Chrome 19):
fonte
E .. aqui está outro.
Mesma ideia que o sr. E Ryan, mas
(*) Nota: Se a caixa já for grande o suficiente, adicionar esses dois pontos extras não terá efeito. Portanto, não precisamos de mais verificações.
EDITAR: Não tenho certeza se meu cálculo de razão está correto, considerando que temos uma projeção de Mercator. Posso reeditar isso ..
fonte
Já está respondido aqui Google Maps v3: Aplicando min. nível de zoom ao usar fitBounds ele funciona como esperado :) então agora se após os limites de ajuste o zoom for menor, digamos 13, então você pode definir um novo zoom que você preferir
fonte
Aqui está minha chance de uma solução, que também funciona quando dois marcadores estão muito próximos. O nível de zoom máximo efetivo é o mesmo em ambas as situações. Portanto, não acabamos diminuindo o zoom desnecessariamente, quando há mais de um marcador
O efeito, novamente, é garantir um zoom máximo, sem usar a opção maxZoom, que tem o efeito provavelmente indesejado de tornar impossível para o usuário aumentar o zoom além do nível de maxZoom com o controle de zoom
Calculei maxLat, minLat, maxLng e minLng de antemão ...
fonte