2013-01-21 15 views
11

Sto creando un'app in cui l'utente deve vedere la sua posizione geografica con getMyLocation(), ma restituisce null. C'è qualche soluzione per questo, perché ho letto che il metodo getMyLocation() restituisce sempre null. Sono nuovo di Google Maps, quindi qualsiasi aiuto sarà apprezzato!Come ottenere la posizione corrente nell'API di Google Maps V2

Codice:

GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 
map.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
map.setMyLocationEnabled(true); 
Location myLocation = map.getMyLocation(); 

if(myLocation != null){ 
    helper.showToast("Latitude: " + myLocation.getLatitude() + "\nLongitude: " + myLocation.getLongitude()); 
} 
+0

Aggiungere un codice. Come dovremmo indovinare cosa fai di sbagliato? – rekire

+0

http://androidroadies.blogspot.in/2013/09/showing-current-location-in-google-maps.html – Roadies

risposta

0

si prega di controllare il codice di esempio del Google Maps Android API v2, Utilizzando questo si risolverà il vostro problema.

Sample Code

+0

Non vedo alcuna soluzione al collegamento fornito. Per favore, spiegami cosa vuoi mostrarmi? – Xarialon

+1

installa 'google-play-services' nel tuo sdk manager.if già installato poi apri la tua cartella sdk e segui questi passaggi' /extras/google/google_play_services/samples/maps' hai il codice di esempio . –

+0

Ah, grazie. Ho visto alcuni esempi e accetterò la tua risposta, perché questo mi ha sicuramente aiutato! – Xarialon

4

Non mi piace nuove API di Google Maps a causa della loro limitata e difetti. Nel tuo caso, penso che il modo migliore sia utilizzare le classi LocationManager e LocationListener. Otterrai la posizione, quando il tuo telefono troverà i satelliti e potrai aggiungere il marker sulla mappa. Inoltre è possibile utilizzare il metodo getLastKnownLocation() se è necessario ottenere la posizione rapidamente. Penso che il metodo google maps getMyLocation() restituisca null perché il telefono non ha molto tempo per sapere dove si trova, quando l'app si avvia. E in Google Maps API v2 non esiste alcun tipo di metodo onLocationChanged(). Non mi piace questa API.

15
private void setUpMapIfNeeded() { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (mMap == null) { 
      // Try to obtain the map from the SupportMapFragment. 
      mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
        .getMap(); 
      mMap.setMyLocationEnabled(true); 
      // Check if we were successful in obtaining the map. 
      if (mMap != null) { 


      mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() { 

      @Override 
      public void onMyLocationChange(Location arg0) { 
      // TODO Auto-generated method stub 

      mMap.addMarker(new MarkerOptions().position(new LatLng(arg0.getLatitude(), arg0.getLongitude())).title("It's Me!")); 
      } 
      }); 

      } 
     } 
    } 

chiamata di questa funzione in su Crea funzione

+0

non funziona ... un'altra soluzione? –

+0

dove mi hai bloccato dicendomi? – Nitin

+0

Beh, non funzionava per trovare la mia posizione attuale. ma ho raggiunto questo obiettivo utilizzando la classe Location Manager. –

1

map.getMyLocation() return null siccome non esiste una posizione sulla onCreate();

la prima volta la mappa ottiene la posizione è dopo la prima onCameraChange() evento .

in modo da utilizzare

map.setOnCameraChangeListener(new ...) 

sulla mappa e fare l'implementazione dopo la prima volta si è verificato

1

ho fatto in questo modo:

private GoogleMap mGoogleMap; 
private SupportMapFragment mMapFragment; 

su onCreate():

mMapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map); 
mGoogleMap = mMapFragment.getMap(); 

mGoogleMap.setOnMyLocationChangeListener(myLocationChangeListener); 

Ora aggiungere MyLocationChangeListener:

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() { 
    @Override 
    public void onMyLocationChange(Location location) { 
     Log.i(TAG, "Latitude: "+String.valueOf(location.getLatitude())+" - Longitude: "+String.valueOf(location.getLongitude())); 
    } 
}; 

Spero che questo vi aiuterà.

Problemi correlati