2016-07-12 19 views
0

Ich gebe Daten zwischen zwei Aktivitäten. Ich möchte dies tun: Wenn der Benutzer lange auf die Karte klickt, öffnet sich das neue InfoActivity-Fenster, das den Breitengrad, den Längengrad und die Stadt anzeigt, in der der Long-Klick gemacht wurde.Anzeige einer Stadt bei langem Klick in Android

Ich bin bereits lat und lange gegangen, aber blieb mit der Stadt Teil.

@Override 
     public void onMapLongClick(LatLng arg0) { 

       Intent intent = new Intent(getActivity(), InfoActivity.class); 
       intent.putExtra("latitude", arg0.latitude); 
       intent.putExtra("longitude", arg0.longitude); 
       startActivity(intent); 

     } 

Wie würde ich die Stadt, wo die Karte lange geklickt wird, und fügen Sie übergeben es an meine InfoActivity.

Jede Hilfe ist willkommen :)

+1

Sie möchten vielleicht nach "reverse geocoding" googlen. –

+0

@Gerald Schenider Will. Vielen Dank. – Kemo

Antwort

1

Wie würde ich die Stadt, wo die Karte lange

Verwenden Geocoder Klasse mit arg0 für das Erhalten Stadt angeklickt wird, wo die Karte lange clicked.like ist :

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> allAddresses = geocoder.getFromLocation(
           arg0.latitude, arg0.longitude, 1); 

Jetzt alle Details von allAddresses erhalten, die für lange geklickt Punkt erforderlich ist.

und fügen Pass es meinem InfoActivity

Für String zwischen zwei Aktivitäten vorbei siehe folgenden Beitrag:

Passing strings between activities in android

+0

Ich habe versucht, diesen Code-Block in meinem onMapLongClick setzen, aber ich bekomme den folgenden Fehler für Geocoder Geocoder = new Geocoder (dies, Locale.getDefault()); Geocoder (android.content.context, Locale) im Geocoder kann nicht sein angewendet auf (anonymous com.google.android.gms.maps.android maps.onmaplongclicklistener) – Kemo

+1

@Kemo: Benutze deinen aktuellen Aktivitätskontext anstelle von 'this', als ob du Aktivität verwendest, dann benutze' YourActivityName. this 'oder wenn Sie Fragment verwenden, dann verwenden Sie 'getActivity()' anstelle von 'this' –

+0

getActivity() gearbeitet. Ich habe auch einen anderen Fehler - in 'geocoder.getFromLocation (arg0.latitude, arg0.longitude, 1);' erhält diesen Fehler - unbehandelte Ausnahme java.ioexception, auch wenn ich es versuchte: 'try { ArrayList

allAddresses = Geocoder. getFromLocation (arg0.latitude, arg0.longitude, 1); } catch (IOException e) { e.printStackTrace(); } ' – Kemo

1

Sie können jederzeit die Geocoder verwenden:

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = geocoder.getFromLocation(arg0.latitude, arg0.longitude, 1); 
String cityName = addresses.get(0).getAddressLine(0); 
Verwandte Themen