Estou definindo vários marcadores no meu mapa e posso definir estaticamente os níveis de zoom e o centro, mas o que eu quero é cobrir todos os marcadores e aplicar o zoom o máximo possível, com todos os mercados visíveis
Os métodos disponíveis estão seguindo
e
Não setCenter
suporta entrada múltipla de localização ou matriz de localização nem setZoom
possui esse tipo de funcionalidade
javascript
google-maps-api-3
Trikaldarshi
fonte
fonte
latlng
a umbounds
objeto cada vez que você adicionar um marcador e definir o seu mapa para encaixar os limites finais. Veja a resposta aqui: stackoverflow.com/questions/1556921/…Respostas:
Você precisa usar o
fitBounds()
métodoDocumentação de developers.google.com/maps/documentation/javascript :
fonte
getPosition
método?LatLngLiteral
uma instância em vez de ter uma Marker. por exemplobounds.extend({lat: 123, lng: 456})
,.fitBounds(bounds, int)
que permitirá que você tenha um pouco de espaço entre os marcadores e as bordas do mapa (ou menos espaço, se necessário). Veja a documentaçãoPara estender a resposta fornecida com alguns truques úteis:
ATUALIZAÇÃO:
pesquisas adicionais no tópico mostram que fitBounds () é assíncrono e é melhor fazer a manipulação do zoom com um ouvinte definido antes de chamar Fit Bounds.
Obrigado @Tim, @ xr280xr, mais exemplos sobre o tópico: SO: setzoom-after-fitbounds
fonte
addListenerOnce
onzoom_changed
para definir o zoom depois que seu valor foi inicializado.yourMap
,map
ethis
. Talvez seja uma boa ideia torná-lo mais consistente.O tamanho da matriz deve ser maior que zero. Caso contrário, você terá resultados inesperados.
fonte
Existe este
MarkerClusterer
utilitário do lado do cliente disponível para o Google Map, conforme especificado aqui nos artigos para desenvolvedores do Google Map . Aqui está um resumo do que é seu uso:Existem muitas abordagens para fazer o que você pediu:
Você pode ler sobre eles no link fornecido acima.
Marker Clusterer
usa cluster baseado em grade para agrupar todo o marcador que deseja a grade. O agrupamento baseado em grade funciona dividindo o mapa em quadrados de um determinado tamanho (o tamanho muda a cada zoom) e, em seguida, agrupando os marcadores em cada quadrado da grade.Antes de agrupar
Após o Clustering
Espero que seja isso o que você estava procurando e isso resolva o seu problema :)
fonte