2013-01-07 3 views
13

Ho lat & valori lunghi da database.how per visualizzare gli indicatori basati su lat & valori lunghi utilizzando Android google map api v2.In android originale google maps, visualizziamo indicatori basati sul concetto itemoverlay. Nella v2, non so come visualizzare i marcatori.codice per aggiungere marcatori alla mappa utilizzando android google maps v2

dbAdapter.open(); 
     Cursor points = dbAdapter.clustercall(Btmlft_latitude, toprgt_latitude, 
       Btmlft_longitude, toprgt_longitude, gridsize1); 
     int c = points.getCount(); 
     Log.d("count of points", "" + c); 

     if (points != null) { 
      if (points.moveToFirst()) { 
       do { 

        int latitude = (int) (points.getFloat(points 
          .getColumnIndex("LATITUDE")) * 1E6); 
        int longitude = (int) (points.getFloat(points 
          .getColumnIndex("LONGITUDE")) * 1E6); 

        mapView.addMarker(new MarkerOptions().position(
          new LatLng(latitude, longitude)).icon(
          BitmapDescriptorFactory.defaultMarker())); 

       } while (points.moveToNext()); 

      } 
     } 
     points.close(); 
     dbAdapter.close(); 

Cioè mycode.I sto ottenendo lat & valori lunghi dal database, ma il modo di aggiungere i marcatori sulla base di lat & valori lunghi per mappare.

ho letto l'androide mappe google api v2.In che sono solo dare dati aggiunti staticamente di marcatori

risposta

26

Utilizzare il Marker Classe

Un'icona collocato in un punto particolare sulla superficie della carta . L'icona di un indicatore viene disegnata orientata sullo schermo del dispositivo anziché sulla superficie della mappa; Ad esempio, non cambierà necessariamente l'orientamento a causa delle rotazioni della mappa, dell'inclinazione o dello zoom.

Un marcatore ha le seguenti proprietà:

Anchor

Il punto dell'immagine che verrà collocato nella posizione LatLng del marcatore. Questo valore predefinito è del 50% a sinistra dell'immagine e nella parte inferiore dell'immagine.

Posizione

Il valore LatLng per la posizione del marcatore sulla mappa. È possibile modificare questo valore in qualsiasi momento se si desidera spostare il marker.

Titolo

Una stringa di testo che viene visualizzato in una finestra di informazioni quando l'utente tocca il marcatore. È possibile modificare questo valore in qualsiasi momento.

Snippet

Testo aggiuntivo che viene visualizzato sotto il titolo. È possibile modificare questo valore in qualsiasi momento.

Icona

Una bitmap che viene visualizzato per il marcatore. Se l'icona viene lasciata non impostata, viene visualizzata un'icona predefinita. È possibile specificare una colorazione alternativa dell'icona predefinita utilizzando defaultMarker (float). Non puoi cambiare l'icona dopo aver creato l'indicatore.

Trascinare Stato

Se si desidera consentire all'utente di trascinare il marcatore, impostare questa proprietà su true. È possibile modificare questo valore in qualsiasi momento. Il valore predefinito è true.

Visibilità

Per impostazione predefinita, l'indicatore è visibile.Per rendere invisibile l'indicatore, imposta questa proprietà su falso. È possibile modificare questo valore in qualsiasi momento.

GoogleMap map = ... // get a map. 
    // Add a marker at San Francisco. 
    Marker marker = map.addMarker(new MarkerOptions() 
     .position(new LatLng(37.7750, 122.4183)) 
     .title("San Francisco") 
     .snippet("Population: 776733")); 
4

sto cercando di indovinare il problema è che si stanno moltiplicando i valori/longitudine di latitudine da 1E6 invece di dividendo per 1E6. Se i tuoi valori memorizzati provengono da GeoPoints, questo potrebbe essere il tuo problema. In caso contrario, il modo in cui si aggiungono i marcatori va bene e dovrebbe funzionare.

cioè i valori di GNL/lat si passa alla nuova LatLng() dovrebbe essere simile 45,4, -95,5 NON 45400000, -95.500.000

Partenza il seguente codice:

//mMap is a GoogleMap and point is a GeoPoint 
this.mMap.addMarker(getMarker(point, drawableId)) 

...

public MarkerOptions getMarker(GeoPoint point, int drawableId) 
{ 
    return new MarkerOptions() 
    .position(new LatLng(point.getLatitudeE6()/1000000.0, point.getLongitudeE6()/1000000.0)) 
    .icon(BitmapDescriptorFactory.fromResource(drawableId)); 
}