2010-12-13 5 views
21

Ich versuche, den vom Benutzer ausgewählten Standort in der Google Maps Android-Anwendung zurückzugeben. Ich kann jedoch keine Informationen darüber finden, wie diese Aufgabe zu erreichen ist.Ausgewählte Position aus der Google Maps-Aktivität abrufen

Ich habe eine Absicht erstellt, um die GMaps-Aktivität zu öffnen, aber der Benutzer kann keinen Punkt auf der Karte auswählen, noch gibt die Aktivität einen Punkt an meine Anwendung zurück, wenn sie geschlossen wird.

Ich verwende startActiviyForResult, da ich ein Ergebnis von der Aktivität erwartet.

Antwort

15

Verwenden Sie Google API. Sie müssen nur Ihre eigene MapActivity mit MapView erstellen. Here is great tutorial on Google API Einschließlich Empfangsstelle auf Fingerhähnen. Hoffe, das wird helfen.

+0

Link abgelaufen Bitte updaten! – Killer

4

Es gibt keine solche Möglichkeit - Sie können Maps nur mit der angegebenen Position http://developer.android.com/guide/appendix/g-app-intents.html öffnen.

Stattdessen sollten Sie Ihre eigene Aktivität mit MapView mit Maps External Library erstellen.

+1

Seufz! Ich möchte, dass die Google Maps-Aktivität diesen einfachen Anwendungsfall unterstützt. Die Verwendung der externen Google Maps-Bibliothek erfordert eine Internet-Berechtigung in der Anwendung, was für meine App zu viel Aufwand bedeutet. – HRJ

6

Für Maps API V2 können Sie onMapClickListener verwenden.

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

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

Einzelheiten: https://developers.google.com/maps/documentation/android/interactivity

+0

danke, ich war auf der Suche nach diesem –

1

Ich denke, Sie für Marker suchen ziehen.

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) {} 

      }); 

dann geben Sie Ihren neuen location.i.e.

36

Sie könnten einfach PlacePicker anstelle der Implementierung Ihrer eigenen MapActivity verwenden. Sie müssen jedoch die Google Play Services-Bibliotheksreferenz in Ihrem Projekt hinzufügen.

Gerade startActivityForResult mit der Absicht von PlacePicker.IntentBuilder bereitgestellt

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

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

und dann die Ergebnisse in onActivityResult erhalten

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(); 
    } 
    } 
} 

Bitte beachten https://developers.google.com/places/android/placepicker für weitere Details.

Ein bisschen zu spät, um Ihre Frage zu beantworten, aber hoffe, dies hilft jemandem, der die gleiche Anforderung hat.

+0

Awesome ich war auf der Suche nach diesem :) Ich werde es versuchen – hadi

+0

Leider PlacePicker Aktivität nicht erlauben, den Benutzer zu suchen – satur9nine

+0

Dies ist sehr ordentlich. A + – pandalion98

Verwandte Themen