Tengo el siguiente problema: Escribí una función para determinar la ubicación exacta de una calle pasada como un parámetro de cadena:
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);
}
Si uso la función de esta manera, cuando el mapa estáCargado todo funciona extremadamente lento. Si comento el código de geocodificación y uso el nuevo GeoPoint (73,32), está funcionando normalmente. ¿Alguien me puede explicar por qué la geocodificación ralentiza mi aplicación? ¡Gracias! :)
Respuestas
2 para la respuesta № 1La clase Geocoder requiere un servicio de back-end que no está incluido en el marco de Android principal. Los métodos de consulta de Geocoder devolverán una lista vacía si no hay servicio de back-end en la plataforma.
Usa el hilo como Handler
o AsyncTask
etc a llamará fondo luego cambiará la interfaz de usuario
0 para la respuesta № 2
No he usado las API de Android pero imaginoesa geocodificación llamará a un servicio web de Google de algún tipo que haga la geocodificación y devuelva el resultado. Dado que eso implica comunicaciones de red, y el método getFromLocationName () parece estar bloqueando, no es irrazonable experimentar retrasos, tal vez incluso más debido a una conexión de Internet móvil. Si llama a su método en una sucesión rápida, habría aún más espacio para el retraso.
Por supuesto, esto suponiendo que estoy en lo correcto y que la geocodificación se realiza en un servidor en algún lugar ...