2010-04-19 14 views

risposta

9

È possibile eseguire questa operazione utilizzando lo MapController di MapView. Ottieni il MapController usando MapView.getController(), quindi puoi provare a impostare lo zoom corretto usando MapController.zoomToSpan(). Tendo anche a usare ItemLoSlayE getLatSpanE6() e getLonSpanE6() per renderlo più semplice. Un esempio:

MapView map = (MapView) findViewById(R.id.Map); 
MapController mc = map.getController(); 
mc.zoomToSpan(overlay.getLatSpanE6(), overlay.getLonSpanE6()); 

È importante notare loro avvertimento:

Poiché lo zoom può raggiungere solo livelli discreti, e poiché il rapporto aspetto della mappa non può corrispondere il rapporto dato , la qualità dell'allacciamento può variare. L'unica cosa che è la garanzia è che, dopo lo zoom, a almeno una delle nuove latitudini o la nuova longitudine si troverà entro un fattore di 2 dal parametro corrispondente.

Modifica: Per ottenere anche la mappa per lo zoom sulla posizione corretta, è necessario utilizzare MapController.setCenter().

+2

in questo caso la mappa si ingrandisce in una posizione casuale, non è vero? – poeschlorn

+1

Entrambi i punti saranno sempre visibili utilizzando questo metodo. Tuttavia, più i punti sono l'uno dall'altro, meno accurato diventa questo metodo. –

+0

@poeschlorn: corretto, devi anche usare setCenter(), mi dispiace. –

0

questo è come dovrebbe essere fatto:

private void loadMarkerPositions() { 


    for (Stores store : storeList) { 
     latlong1 = new LatLng(store.getLatitude(), store.getLongtitude()); 
     array.add(latlong1); 
    } 

    List<LatLng> points = array; 

    final LatLngBounds.Builder bc = new LatLngBounds.Builder(); 

     for (LatLng item : points) { 
      bc.include(item); 
     } 

    googleMap.setOnCameraChangeListener(new OnCameraChangeListener() { 

     @Override 
     public void onCameraChange(CameraPosition arg0) { 
      // Move camera. 
      googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(), 30)); 
      // Remove listener to prevent position reset on camera move. 
      googleMap.setOnCameraChangeListener(null); 
     } 
    }); 

} 

Riferimento: moveCamera with CameraUpdateFactory.newLatLngBounds crashes

C'è un altro modo semplice, è possibile utilizzare questo progetto per realizzare tutti mappa attività connesse:

https://github.com/girishnair12345/Google-Maps-V2-library

Problemi correlati