2017-09-22 4 views
-11

Bitte helfen Sie. Ich versuche die Ortsauswahl zu implementieren, um den Namen und das Land der Stadt zu erhalten. aber es hat immer noch kein Ergebnis.Wie bekommt man Stadt und Land von Android Place Picker?

In NewItemFragment

mAddLocation.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      //TODO QIBEE Insert 
      PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder(); 
      try { 
       Intent intent = intentBuilder.build(getActivity()); 
       getActivity().startActivityForResult(intent,REQ_CODE); 
      } catch (GooglePlayServicesRepairableException | GooglePlayServicesNotAvailableException e) { 
       e.printStackTrace(); 
      } 

in App.java

Geocoder geocoder; 
      List<Address> addresses; 
      geocoder = new Geocoder(getApplicationContext(), Locale.ENGLISH); 

      try { 

       addresses = geocoder.getFromLocation(latitude, longitude, 1); 

       if (addresses.size() > 0) { 

        App.getInstance().setLat(latitude); 
        App.getInstance().setLng(longitude); 

        sharedPref.edit().putString(getString(R.string.settings_account_lat), Double.toString(this.getLat())).apply(); 
        sharedPref.edit().putString(getString(R.string.settings_account_lng), Double.toString(this.getLng())).apply(); 

        App.getInstance().setArea(addresses.get(0).getAdminArea()); 
        App.getInstance().setCity(addresses.get(0).getLocality()); 
        App.getInstance().setCountry(addresses.get(0).getCountryName()); 
+1

Können Sie uns zeigen, was Sie bis jetzt versucht haben, damit wir ein wenig helfen können. –

+1

https://stackoverflow.com/help/how-to-ask – gaurang

+0

Sie müssen etwas in Ihren Code ändern. Aber du hast es nicht gezeigt, also können wir dir nicht helfen. –

Antwort

0

PlaceAutocompleteFragment zu einem activity, fügen Sie ein neues Fragment com.google.android.gms.location.places.ui.PlaceAutocompleteFragment in ein XML-Layout genannt.

<fragment 
    android:id="@+id/place_autocomplete_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment" 
    /> 

hinzufügen PlaceSelectionListener auf ein activity

Die PlaceSelectionListener Griffe einen Platz in Reaktion auf die Auswahl des Benutzers zurück. Der folgende Code zeigt eine Referenz auf die fragment Erstellen und Hinzufügen von einem listener zu Ihrem PlaceAutocompleteFragment:

PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment) 
getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); 

autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { 
    @Override 
    public void onPlaceSelected(Place place) { 
     // TODO: Get info about the selected place. 
     Log.i(TAG, "Place: " + place.getName()); 
    } 

    @Override 
    public void onError(Status status) { 
     // TODO: Handle the error. 
     Log.i(TAG, "An error occurred: " + status); 
    } 
    }); 
+0

danke @chandrakat sharma –

+0

wenn Sie meine Antwort hilfreich finden. Bitte markieren Sie es als akzeptierte Antwort –

2

Sie longditute und latitiude von onActivityResult erhalten wird und diese Funktion getAddress Aufruf mit Parametern latitiude und longditute

public void getAddress(double lat, double lng) { 
    Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
    try { 
     List<Address> addresses = geocoder.getFromLocation(lat, lng, 1); 
     Address obj = addresses.get(0); 
     String add = obj.getAddressLine(0); 
     add = add + "\n" + obj.getCountryName(); 
     add = add + "\n" + obj.getCountryCode(); 
     add = add + "\n" + obj.getAdminArea(); 
     add = add + "\n" + obj.getPostalCode(); 
     add = add + "\n" + obj.getSubAdminArea(); 
     add = add + "\n" + obj.getLocality(); 
     add = add + "\n" + obj.getSubThoroughfare(); 
     Log.v("IGA", "Address" + add); 
     // Toast.makeText(this, "Address=>" + add, 
     // Toast.LENGTH_SHORT).show(); 

     // TennisAppActivity.showDialog(add); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

}

+0

verwenden Sie keine String-Konkationierung oder "+", da dies eine neue Instanz von String evry time erzeugt. was nicht gut ist ** StringBuilder ** stattdessen verwenden. –

Verwandte Themen