Android Geocoder getFromLocationName renvoie toujours null
J'ai essayé de géocoder une chaîne pour obtenir ses coordonnées, mais mon programme se bloque toujours, parce que lorsque j'ai jamais essayer d'utiliser getFromLocationName()
il retourne null
. J'ai essayé de résoudre ce pendant des heures mais rien ne fonctionne. Voici mon code
public class MainActivity extends Activity {
private GoogleMap mMap;
List<Address> addresses;
MarkerOptions miami;
String myLocation = "Miami,Florida";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (mMap == null) {
mMap = ((MapFragment) getFragmentManager().findFragmentById(
R.id.map)).getMap();
}
if (mMap != null) {
Geocoder geocoder = new Geocoder(this);
double latitude = 0;
double longitude = 0;
while(addresses==null){
try {
addresses = geocoder.getFromLocationName(myLocation, 1);
} catch (IOException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
Address address = addresses.get(0);
if (addresses.size() > 0) {
latitude = address.getLatitude();
longitude = address.getLongitude();
}
LatLng City = new LatLng(latitude, longitude);
miami = new MarkerOptions().position(City).title("Miami");
mMap.addMarker(miami);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(City, 15));
}
}
quelqu'un va répondre à cette question, s'il vous plaît?
OriginalL'auteur anishk25 | 2013-03-03
Vous devez vous connecter pour publier un commentaire.
Geocoder n'est pas toujours renvoyer une valeur. Vous pouvez essayer d'envoyer une demande 3 fois dans une boucle for. Je devrais être en mesure de retourner au moins une fois. Si non, alors, il pourrait y avoir un problème de connexion ou peut-être d'autres problèmes comme le serveur dis pas répondre à votre demande. Essayer et de voir ces threads:
Geocoder n'est pas toujours renvoyer une valeur et geocoder.getFromLocationName retourne uniquement la valeur null
Mise à jour:
J'avais une boucle while, mais je l'ai utilisé pour essayer au maximum de 10 fois. Parfois, il ne revint jamais rien, même s'il était connecté t internet. Ensuite, j'ai utilisé cette façon beaucoup plus fiable pour obtenir l'adresse à chaque fois:
Je l'ai appelé comme suit:
Espère que cette aide. J'ai été aussi fatigué de se fonder sur geocoder. Cela a fonctionné pour moi.
Si vous remplacez l'URL avec la lat et de la longitude et de voir le retour de l'objet JSON dans un navigateur web. Vous verrez ce qui s'est passé.
Voir ma réponse mis à jour. Espérons qu'il résout de ce que vous essayez d'atteindre.
Je suis face au même problem. Et j'ai trouvé que le
NetworkLocator
sur l'appareil a cessé de fonctionner ou tué pour une raison quelconque(pas dans nos mains). Vous pouvez effectivement vérifier, re-démarrage de votre appareil. Il doit travailler maintenant(depuisNetworkLocator re-boots too
).Il existe 3 cas. 1. vous n'obtiendrez pas l'emplacement 1ère fois, alors vous essayez de boucle et d'obtenir la 4ème/5ème temps, etc.., 2. Peu importe combien de fois vous boucle, vous ne obtenez tous les détails de la localisation, de sorte que vous assumez le service est peut-être temporaire et aller avec la solution ci-dessus, 3. Comme je l'ai expliqué dans le commentaire ci-dessus, Il ne sera jamais à moins que vous redémarrez votre appareil, ce qui signifie que je vais toujours aller de travers, étape 1 et l'étape 2, qui peut prendre de 2 à 5 secondes à chaque fois. Personne ne veut attendre autant de temps juste pour obtenir un seul des données, comme la
addressline
. Une meilleure solution pour les cas 3?Voir quelque chose comme stackoverflow.com/questions/15711499/...
OriginalL'auteur Shobhit Puri