Recuperar las coordenadas geográficas de una dirección utilizando la codificación geográfica
Su aplicación puede utilizar la clase Geocoder para recuperar las coordenadas geográficas de una dirección. Por ejemplo, su aplicación puede solicitar al usuario una dirección y, a continuación, mostrarla en un mapa. La dirección puede estar en forma de cadena no estructurada o de objeto MapLocation. Las solicitudes de codificación geográfica pueden ser síncronas o asíncronas.
Especificar una dirección
// Structured address
MapLocation address1 = new MapLocation();
address1.addData(MapLocation.LBS_LOCATION_CITY_KEY, "waterloo");
address1.addData(MapLocation.LBS_LOCATION_COUNTRY_KEY, "canada");
address1.addData(MapLocation.LBS_LOCATION_STREET_ADDRESS_KEY, "419 phillip st");
address1.addData(MapLocation.LBS_LOCATION_POSTAL_CODE_KEY, "N2L3X2");
// Unstructured address
String address2 = new String("419 phillip st, waterloo, canada, N2L3X2");
Proporcionar el contexto geográfico con la dirección
Para ayudar a que el servidor de codificación geográfica pueda devolver los resultados más relevantes, proporcione el contexto geográfico en la solicitud de codificación geográfica. Para proporcionar el contexto, cree un objeto MapDimensions que contenga las coordenadas geográficas (la ubicación actual del usuario del dispositivo BlackBerry). Al proporcionar el contexto, la aplicación puede recibir las coordenadas geográficas relevantes incluso si el usuario proporciona únicamente una dirección. Si no proporciona un objeto MapDimensions, es posible que su aplicación utilice la última ubicación guardada en BlackBerry Maps como contexto, lo cual puede que no proporcione los resultados que desea.
MapPoint origin = new MapPoint(43.4815, -80.5407); MapDimensions context = new MapDimensions(origin, 480, 360, 5, 0);
Enviar una solicitud de codificación geográfica asíncrona
MyServerExchangeCallback callback = new MyServerExchangeCallback();
try
{
Geocoder.getInstance().geocode(callback, address1, context, 0);
}
catch (GeocodeException e)
{
// Do something with the exception
}
Para crear una clase que implemente la interfaz ServerExchangeCallback, hay tres métodos que debe incluir en su aplicación: requestSuccess(), requestFailure() y requestHalted(). Cuando se completa una solicitud de codificación geográfica, su aplicación invoca uno de estos métodos en función del resultado de la solicitud.
public class MyServerExchangeCallback implements ServerExchangeCallback
{
public void requestSuccess(ServerExchange exchange)
{
if(exchange instanceof GeocodeExchange)
{
GeocodeExchange geocodeExchange = (GeocodeExchange)exchange;
Vector results = geocodeExchange.getResults();
// Do something with the results
}
}
public void requestFailure(ServerExchange exchange)
{
// Inform the user of the failure
}
public void requestHalted()
{
// Invoked when the request is stopped
}
}
Enviar una solicitud de codificación geográfica inversa síncrona
GeocodeExchange exchange = Geocoder.getInstance().geocode
(null, address2, context, 0);
// Check if the request was successful
if(exchange.getExceptionList().size() == 0)
{
// Do something with the result of the request
}
else
{
// Inform the user of the failure
}
¿Le ha resultado útil esta información? Envíenos sus comentarios.