Récupération des coordonnées géographiques d'une adresse à l'aide du géocodage
Votre application peut utiliser la classe Geocoder pour récupérer les coordonnées géographiques d'une adresse. Par exemple, votre application peut demander à l'utilisateur une adresse, puis afficher cette adresse sur une carte. L'adresse peut être sous forme d'une chaîne non structurée ou d'un objet MapLocation. Les requêtes de géocodage peuvent être synchrones ou asynchrones.
Indication d'une adresse
// 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");
Indication du contexte géographique de l'adresse
Pour aider le serveur de géocodage à fournir des résultats optimaux, indiquez le contexte géographique de votre requête de géocodage. Pour fournir le contexte, vous pouvez créer un objet MapDimensions contenant des coordonnées géographiques, par exemple, la position actuelle de l'utilisateur de terminal BlackBerry. En fournissant le contexte, votre application peut recevoir des coordonnées géographiques pertinentes même si l'utilisateur n'indique qu'un nom de voie. Si vous ne fournissez pas d'objet MapDimensions, votre application peut utiliser la dernière position enregistrée dans BlackBerry Maps comme contexte, pouvant ainsi fausser les résultats attendus.
MapPoint origin = new MapPoint(43.4815, -80.5407); MapDimensions context = new MapDimensions(origin, 480, 360, 5, 0);
Envoi d'une requête de géocodage asynchrone
MyServerExchangeCallback callback = new MyServerExchangeCallback();
try
{
Geocoder.getInstance().geocode(callback, address1, context, 0);
}
catch (GeocodeException e)
{
// Do something with the exception
}
Lors de la création d'une classe déployant l'interface ServerExchangeCallback, vous devez inclure trois méthodes dans votre application : requestSuccess(), requestFailure() et requestHalted(). Lors du traitement d'une requête de géocodage, votre application appelle l'une de ces méthodes selon le résultat de la requête.
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
}
}
Envoi d'une requête de géocodage inversé synchrone
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
}
Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.