resuelto:
de Androd Google API: zoomLevel establece el zoomLevel del mapa. El valor se fijará entre 1 y 21 inclusive, aunque no todas las áreas tienen mosaicos con niveles de zoom más altos. Esto simplemente establece el nivel del zoom directamente; Parámetros: zoomLevel - En zoomLevel 1, el ecuador de la tierra tiene 256 píxeles de longitud. Cada nivel de zoom sucesivo se amplía por un factor de 2. Devuelve: el nuevo nivel de zoom, entre 1 y 21 inclusive.
Así dado el ecuador E = 40.075 kilometros o millas 21.638,8 dada la distancia para hacer un zoom D = 20 km o millas
el nivel de zoom: L = log 2 (E/D) 1
Este es el método simple que he usado recuerde configurar E = 21.638,8 si desea utilizar las millas ...
public static byte zoomLevel (double distance){
byte zoom=1;
double E = 40075;
Log.i("Astrology", "result: "+ (Math.log(E/distance)/Math.log(2)+1));
zoom = (byte) Math.round(Math.log(E/distance)/Math.log(2)+1);
// to avoid exeptions
if (zoom>21) zoom=21;
if (zoom<1) zoom =1;
return zoom;
}
¿Hay alguna documentación en Google Maps, que relacione los niveles de zoom y la distancia. – Mani
Veo en otro comentario tuyo, dices que quieres establecerlo dinámicamente en función de ciertas regiones. puedes ser un poco mas especifico? Si lo entiendo correctamente, podría obtener las coordenadas del mapa y usar un bloque de interruptores para establecer los niveles de zoom. En algún momento, tendrá que asignar niveles de zoom y regiones de todos modos. – pecka85
¿Cómo se dice que 4 millas de distancia corresponden al nivel de zoom de 17? – Mani