2017-09-22 1 views
-11

S'il vous plaît aider. J'essaie d'implémenter le sélecteur de lieu pour obtenir le nom de la ville et le pays. mais ça n'a toujours pas de résultat.Comment obtenir City and Country à partir du sélecteur Android Place?

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

dans 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

Pouvez-vous nous montrer ce que vous avez essayé jusqu'à présent afin que nous puissions vous aider un peu. –

+1

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

+0

vous devez changer quelque chose dans votre code. Mais vous ne l'avez pas montré, alors c'est tout ce que nous pouvons vous aider. –

Répondre

0

PlaceAutocompleteFragment à un activity, ajouter un nouveau fragment nommé com.google.android.gms.location.places.ui.PlaceAutocompleteFragment à une mise en page XML.

<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" 
    /> 

Ajouter un PlaceSelectionListener à un activity

Les PlaceSelectionListener poignées de retour d'un lieu en réponse à la sélection de l'utilisateur. Le code suivant montre la création d'une référence au fragment et en ajoutant un listener à votre 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

merci @chandrakat sharma –

+0

si vous trouvez ma réponse utile. Veuillez le marquer comme une réponse acceptée –

2

vous obtiendrez longditute et latitiude de onActivityResult et appeler cette fonction getAddress avec des paramètres latitiude et 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

ne pas utiliser la concaténation de chaîne ou "+" car cela créera une nouvelle instance de String evry time. ce qui n'est pas bon ** StringBuilder ** à la place. –