Mapbox GL JS: cambiar el zoom en función del rango de búsqueda.
Quizás es una pregunta estúpida, pero de todos modos,
En la página de búsqueda de mi aplicación, tengo un campo de entrada de rango que determina el rango de búsqueda (mínimo 5 km, máximo 50 km). Dependiendo del valor establecido, me gustaría cambiar el zoom actual en el mapa de MapBox GL para que muestre solo el área que se ha establecido en este campo de entrada (si el rango de búsqueda es de aproximadamente 10 km, solo debería ver un sector del mapa con un radio de 10 km). Soy un poco débil en matemáticas, lo cual me impide encontrar esta correlación.
Gracias de antemano.
davy.ai
Solución para correlacionar la entrada de rango con el nivel de zoom de MapBox GL
Para correlacionar la entrada de rango con el nivel de zoom de MapBox GL, necesitas utilizar la siguiente fórmula:
rango
es el rango de búsqueda establecido en la entrada, en metros.latitud
es la latitud del centro del mapa.156543.03392
es un valor constante utilizado para la circunferencia de la Tierra en píxeles en el nivel de zoom 0 (256 píxeles).log2()
es el logaritmo en base 2, utilizado para convertir el cálculo de la circunferencia de la Tierra en nivel de zoom.Para aplicar esta fórmula en JavaScript con MapBox GL, puedes utilizar el siguiente código:
Asegúrate de convertir grados a radianes para la latitud utilizada en la fórmula. Además, ten en cuenta que los niveles de zoom en MapBox GL son números enteros, por lo que es posible que necesites utilizar
Math.round()
o ajustar la fórmula para obtener el nivel de zoom más cercano al valor calculado.Con este código en su lugar, el mapa de MapBox GL se acercará al área especificada por la entrada de rango en tu página de búsqueda.