2010-12-13 7 views
21

Sto tentando di restituire la posizione selezionata dall'utente nell'applicazione Android di Google Maps, ma non riesco a trovare informazioni su come ottenere questa attività.Ottieni la posizione selezionata dall'attività di Google Maps

Ho creato un'intenzione per aprire l'attività GMaps, ma l'utente non può selezionare un punto sulla mappa né l'attività restituisce un punto alla mia applicazione quando viene chiusa.

Sto utilizzando startActiviyForResult, poiché mi aspetto un risultato dall'attività.

risposta

15

utilizzare l'API di Google. Hai solo bisogno di creare il tuo MapActivity con MapView. Here is great tutorial on Google API Inclusa la posizione di ricezione su un dito. Spero che questo ti sia d'aiuto.

+0

Link scaduto Si prega di aggiornare! – Killer

4

Non esiste una tale possibilità: è possibile aprire solo Maps con la posizione specificata http://developer.android.com/guide/appendix/g-app-intents.html.

Invece dovresti creare la tua attività con MapView usando Maps External Library.

+1

Sigh! Vorrei che l'attività di Maps supportasse questo semplice caso d'uso. L'utilizzo della libreria di Maps esterna richiede l'autorizzazione Internet nell'applicazione, che è eccessivo per la mia app. – HRJ

6

Per le mappe API V2 è possibile utilizzare onMapClickListener.

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng point) { 
      Toast.makeText(getApplicationContext(), point.toString(), Toast.LENGTH_SHORT).show(); 
     } 
}); 

Per ulteriori dettagli: https://developers.google.com/maps/documentation/android/interactivity

+0

grazie, stavo cercando questo –

1

Credo che siete alla ricerca di marcatori trascinamento.

mMap.setMyLocationEnabled(true); 
mLocation = mMap.getMyLocation(); 
mMap.addMarker(new MarkerOptions().position(new LatLng(mLocation.getLatitude(), mLocation.getLongitude())).draggable(true)); 
      mMap.setOnMarkerDragListener(new OnMarkerDragListener() { 

       @Override 
       public void onMarkerDrag(Marker marker) { 

       } 
       @Override 
       public void onMarkerDragEnd(Marker marker) { 
        LatLng newLocation = marker.getPosition(); 
        mLocation.setLatitude(newLocation.latitude); 
        mLocation.setLongitude(newLocation.longitude); 
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(mLocation.getLatitude(), mLocation.getLongitude()), 15.0f)); 

       } 
       @Override 
       public void onMarkerDragStart(Marker marker) {} 

      }); 

quindi restituire il nuovo location.i.e mLocation.

36

È possibile utilizzare semplicemente PlacePicker anziché implementare il proprio MapActivity. Tuttavia, dovrai aggiungere il riferimento alla libreria dei servizi di Google Play nel tuo progetto.

Proprio startSubActivity con l'intento fornito da PlacePicker.IntentBuilder

int PLACE_PICKER_REQUEST = 1; 
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder(); 

Context context = getApplicationContext(); 
startActivityForResult(builder.build(context), PLACE_PICKER_REQUEST); 

E poi ricevere i risultati in onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == PLACE_PICKER_REQUEST) { 
    if (resultCode == RESULT_OK) { 
     Place place = PlacePicker.getPlace(data, this); 
     String toastMsg = String.format("Place: %s", place.getName()); 
     Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show(); 
    } 
    } 
} 

prega di fare riferimento https://developers.google.com/places/android/placepicker per ulteriori dettagli.

Un po 'troppo tardi per rispondere alla tua domanda, ma spero che questo aiuti qualcuno che ha lo stesso requisito.

+0

Impressionante stavo cercando questo :) lo proverò – hadi

+0

Sfortunatamente l'attività di PlacePicker non ha permesso all'utente di cercare – satur9nine

+0

Questo è estremamente pulito. A + – pandalion98

Problemi correlati