2010-12-13 13 views
21

Próbuję zwrócić lokalizację wybraną przez użytkownika w aplikacji Mapy Google na Androida, ale nie mogę znaleźć informacji o tym, jak wykonać to zadanie.Pobierz wybraną lokalizację z działania Map Google.

Utworzono Intent, aby otworzyć działanie GMaps, ale użytkownik nie może wybrać punktu na mapie ani działanie nie zwraca punktu do mojej aplikacji, gdy jest ona zamknięta.

Używam startActiviyForResult, ponieważ oczekuję wyniku z działalności.

Odpowiedz

15

używać Google API. Trzeba tylko stworzyć własną MapActivity z MapView. Here is great tutorial on Google API Łącznie z lokalizacją odbioru na dotknięciach palcami. Mam nadzieję, że to pomoże.

+0

Link wygasł Proszę zaktualizuj! – Killer

6

Dla map API V2 można użyć onMapClickListener.

map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 

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

Szczegółowe informacje: https://developers.google.com/maps/documentation/android/interactivity

+0

dziękuję, szukałem tego –

1

Chyba szukasz markerów przeciąganie.

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

      }); 

następnie zwróć swoją nową lokalizację.i.e mLokacja.

36

Można po prostu użyć PlacePicker zamiast zaimplementować własną MapActivity. Będziesz jednak musiał dodać odniesienie do biblioteki usług Google Play w swoim projekcie.

Wystarczy startActivityForResult z zamiarem dostarczonych przez PlacePicker.IntentBuilder

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

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

a następnie otrzymać wyniki w 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(); 
    } 
    } 
} 

Zapoznaj https://developers.google.com/places/android/placepicker dla dalszych szczegółów.

Trochę za późno, aby odpowiedzieć na twoje pytanie, ale mam nadzieję, że pomoże to komuś, kto ma takie same wymagania.

+0

Niesamowite, szukałem tego :) spróbuję tego – hadi

+0

Niestety, działanie w serwisie PlacePicker nie pozwala użytkownikowi na wyszukiwanie – satur9nine

+0

To jest bardzo miłe. A + – pandalion98