2011-04-08 16 views

Respuesta

3

Puede utilizar el setZoom() - Función para hacerlo. El código a continuación se puede encontrar en this example.

mc = mapView.getController(); 
String coordinates[] = {"1.352566007", "103.78921587"}; 
double lat = Double.parseDouble(coordinates[0]); 
double lng = Double.parseDouble(coordinates[1]); 

p = new GeoPoint(
    (int) (lat * 1E6), 
    (int) (lng * 1E6)); 

mc.animateTo(p); 
mc.setZoom(17); 
+0

¿Hay alguna documentación en Google Maps, que relacione los niveles de zoom y la distancia. – Mani

+0

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

+1

¿Cómo se dice que 4 millas de distancia corresponden al nivel de zoom de 17? – Mani

-1

Juega con el parámetro .setZoom(int); de su mapa. creo que es alrededor de 15:

por lo myMap.setZoom(15);

+0

quiero configurar dinámicamente el nivel de zoom basado en cierta región. ¿Es eso posible? No quiero el código "15" – Mani

+0

Haga una base de datos con región/nivel de zoom y lea de eso :-) Puede usar una base de datos SQlite para almacenar los datos. –

+0

MapView no tiene el método setZoom. MapController sí. – MSquare

14

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; 
} 
+1

Esta respuesta no tiene en cuenta el tamaño de la vista del mapa. En una pantalla más grande puedes ver más terreno en el mismo nivel de zoom. Por ejemplo, para el ancho de 512 píxeles, necesita un nivel de zoom 2 para mostrar toda la Tierra, para 1024 (en una tableta) - nivel de zoom 3, etc. – JBM

Cuestiones relacionadas