/ / Geocoding verlangsamt alles? - Android, Google-Maps, Geokodierung

Geocoding verlangsamt alles? - Android, Google-Karten, Geocodierung

Ich habe folgendes Problem: Ich habe eine Funktion geschrieben, um die genaue Position einer Straße zu bestimmen, die als Zeichenfolgenparameter übergeben wird:

private GeoPoint LocationToGeoPointParser(String address) throws IOException
{
Geocoder geoCoder = new Geocoder(this.context,Locale.ENGLISH);
List<Address> addr = null;
addr =  geoCoder.getFromLocationName(address, 1);
double la = addr.get(0).getLatitude();
double lo = addr.get(0).getLongitude();

Double longitude = addr.get(0).getLongitude()*1E6;
Double latitude = addr.get(0).getLatitude()*1E6;
return new GeoPoint(latitude.intValue(),longitude.intValue());
//return new GeoPoint(73,32);
}

Wenn ich die Funktion auf diese Weise benutze, wenn die Karte istgeladen alles funktioniert extrem langsam. Wenn ich den Geocodierungscode kommentiere und return new GeoPoint (73,32) verwende, funktioniert es normal. Kann mir jemand erklären, warum die Geokodierung meine Anwendung verlangsamt? Vielen Dank! :)

Antworten:

2 für die Antwort № 1

Für die Geocoder-Klasse ist ein Backend-Service erforderlich, der nicht im Core-Android-Framework enthalten ist. Die Geocoder-Abfragemethoden geben eine leere Liste zurück, wenn auf der Plattform kein Backend-Service vorhanden ist.

Verwenden Sie den Thread gerne Handler oder AsyncTask etc to ruft den Hintergrund auf und ändert dann die Benutzeroberfläche


0 für die Antwort № 2

Ich habe die Android-APIs nicht verwendet, aber ich stelle mir vorDiese Geokodierung ruft einen Google-Webdienst auf, der die Geokodierung durchführt und das Ergebnis zurückgibt. Da dies die Netzwerkkommunikation beinhaltet und die getFromLocationName () -Methode zu blockieren scheint, ist es nicht unangemessen, Verzögerungen zu erleben, vielleicht sogar noch mehr von einer mobilen Internetverbindung. Wenn Sie Ihre Methode in schneller Folge aufrufen, wäre noch mehr Raum für Verzögerungen.

Dies setzt natürlich voraus, dass ich korrekt bin und dass Geokodierung irgendwo auf einem Server erfolgt.