2015-09-11 2 views
4

J'utilise la classe Geocoder pour obtenir la latitude et la longitude à partir de mon adresse de chaîne que l'utilisateur tape à EditText.Geocoder retourné l'adresse

Et ce qui est intéressant, il renvoie des résultats pour une requête comme "q", "qq", "n", "N". Est-il possible de faire mieux? (Valider ou quelque chose, ou utiliser un autre service?)

if (!s.toString().isEmpty()) { 
      try { 
       List<Address> addresses = geocoder.getFromLocationName(s.toString(), 4); 
          if (addresses.size() > 0) { 
           Address userAddress = addresses.get(0); 
           double latitude = userAddress.getLatitude(); 
           double longitude = userAddress.getLongitude(); 
           mRestaurantLatLng = new LatLng(latitude, longitude); 
           if (userAddress != null) { 
            mPin.setVisibility(View.VISIBLE); 
           } else { 
            mPin.setVisibility(View.GONE); 
            mRestaurantLatLng = null; 
           } 
          } else { 
           mPin.setVisibility(View.GONE); 
           mRestaurantLatLng = null; 
          } 
         } catch (Exception e) { 
          e.printStackTrace(); 
         } 

Répondre

0

Vous pouvez toujours utiliser un autre service directement, ou vous pouvez élaguer vos résultats pour le niveau de détail souhaité.

Donc, comme:

List<Address> results = GeoCoder.getFromLocationName(query, 100); 
filter(results); 
if (results.size() > 0) { 
    // Do Stuff 
} 


.... 

void filter(List<Address> results) { 
    for (int i = 0; i < results.size(); i++) { 
     Address address = results.get(i); 
     if (!address.hasLatitude() || !address.hasLongitude()) { 
      results.remove(i); 
     } 
     // remove any that dont match your desired detail level 
     ... 
} 
+0

En fait, l'adresse "q" a la latitude et la longitude. –

+0

Oui, mais a-t-il d'autres qualités? Lat et Long sont faciles. Vous pouvez juste choisir une paire et cela couvrira assez de surface pour que cela n'a pas d'importance. Mais si vous pouvez obtenir suffisamment d'informations détaillées sur l'adresse, alors il pourrait être un peu plus ce que vous cherchez. Mon point était plus d'ajouter votre propre filtrage en fonction de vos besoins. –

+0

Ouais, si vous avez du temps libre, essayez les questions de ma question. Vous auriez rue, ville, même numéro de rue! –