¿Hay alguna forma de establecer un nivel de zoom máximo para fitBounds()
? Mi problema es que cuando el mapa solo se alimenta en una ubicación, se acerca tanto como puede, lo que realmente saca el mapa de contexto y lo vuelve inútil. ¿Quizás estoy tomando el enfoque equivocado?
¡Gracias por adelantado!
google-maps
fitbounds
Codey W
fuente
fuente
Respuestas:
Me gusta la solución de mrt (especialmente cuando no sabe cuántos puntos mapeará o ajustará), excepto que arroja el marcador para que ya no esté en el centro del mapa. Simplemente lo extendí un punto adicional restando 0.01 de la latitud y la longitud también, por lo que mantiene el marcador en el centro. Funciona muy bien, gracias mrt!
fuente
fitBounds()
método es porque el zoom se produce de forma asincrónica: stackoverflow.com/questions/2989858/…Usted puede configurar su mapa con
maxZoom
laMapOptions
(API-referencia) así:Esto evitaría que el mapa se acerque más al usarlo
fitBounds()
e incluso eliminaría los niveles de zoom del control de zoom.fuente
maxZoom
antes de ajustar los límites y luego desarmarlo nuevamente usandomap.setOptions({ maxZoom: undefined })
elidle
evento activado cambiando los límites. Esto evita que el efecto de acercar y alejar en lugar de restablecer el zoom en elidle
evento.Otra solución es expandir los límites si detecta que son demasiado pequeños antes de ejecutar fitBounds ():
fuente
Usar la opción MaxZoom funciona mejor para no acercar el zoom a las marcas que tiene.
fuente
Una vez que haya agregado todos los límites reales, agregue estas líneas
obtiene el centro de los límites reales y luego agrega dos puntos adicionales, uno al noreste y otro al suroeste de tu centro
Esto establece efectivamente el zoom mínimo, cambie el valor de compensación para aumentar o disminuir el zoom
fuente
Si es para una sola ubicación, puede usar setCenter () y setZoom () en su lugar.
fuente
puedes usar
de esta manera, establece las propiedades del mapa después de que se haya inicializado el mapa ... puede configurarlas tantas veces como desee ... pero en su caso ... puede establecerlas antes de fitBounds ()
buena suerte, rarutu
fuente
La forma en que evito que el mapa se acerque demasiado es agregando esta línea de código:
Directamente después de esta línea:
Siéntase libre de cambiar el nivel de zoom a cualquier nivel que no desee que el mapa pase.
Si tiene algún problema o pregunta, simplemente déjeme un comentario en la publicación del blog que escribí sobre esto en http://icode4you.net/creating-your-own-store-locator-map-how-to-prevent-the- map-from-zooming-in-too-close-on-a-single-marker
fuente
Me gusta mucho la solución de mrt y funciona perfectamente si siempre has tenido un solo punto con el que trabajar. Sin embargo, descubrí que si el cuadro delimitador no se basaba en un punto, pero los puntos estaban muy juntos, esto aún podría hacer que el mapa se acercara demasiado.
Aquí hay una forma de verificar primero si los puntos están dentro de una distancia definida entre sí, luego, si son más pequeños que esa distancia mínima, extienda los límites por esa distancia mínima:
¡Espero que esto ayude a alguien!
fuente
Esto le da un control directo sobre el zoom máximo permitido en el ajuste de límites.
fuente
En cuanto a mí, lo resuelvo creando un evento inactivo después de fitBounds. Funcionando perfectamente. Supongo que es una de las soluciones más limpias aquí.
fuente
Resolví con este fragmento, ya que Google Maps V3 está impulsado por eventos:
puede decirle a la API que vuelva a ajustar el zoom a una cantidad adecuada cuando se active el evento zoom_changed :
Utilicé inicialmente para que el mapa no se acercara demasiado al cargar cuando los eventuales fitBounds se perdieron, sin él, cualquier evento de zoom superior a 11 sería imposible para el usuario.
fuente
Después de llamar al
fitBounds()
método, intente configurar el nivel de zoom nuevamente. Obligará al mapa a estar en ese nivel de zoom mientras se centra en el lugar correcto.fuente
Tengo una solución basada en limitar el zoom máximo al ajustar los límites. Funciona para mí (probado en Win 7 - IE 9, FF 13, Chrome 19):
fuente
Y aqui esta otro.
La misma idea que mrt y Ryan, pero
(*) Nota: Si la caja ya es lo suficientemente grande, agregar esos dos puntos adicionales no debería tener ningún efecto. Así que no necesitamos más comprobaciones.
EDITAR: No estoy exactamente seguro de si mi cálculo de proporción es correcto, considerando que tenemos una proyección de Mercator. Podría volver a editar esto ...
fuente
Ya ha respondido aquí Google Maps v3: Cumplimiento de min. nivel de zoom cuando se usa fitBounds , funciona como se esperaba :) así que ahora, si después de ajustar los límites, el zoom es menor, digamos 13, entonces puede establecer un nuevo zoom que prefiera
fuente
Aquí está mi solución, que también funciona cuando dos marcadores están muy cerca. El nivel de zoom máximo efectivo es el mismo en ambas situaciones. Así no terminamos alejándonos innecesariamente, cuando hay más de un marcador
El efecto, nuevamente, es asegurar un zoom máximo, sin usar la opción maxZoom, que tiene el efecto probablemente no deseado de hacer imposible que el usuario haga zoom más allá del nivel maxZoom con el control de zoom
He calculado maxLat, minLat, maxLng y minLng de antemano ...
fuente