Abrufen von geografischen Koordinaten für eine Adresse mithilfe der Geokodierung
Ihre Anwendung kann die Geocoder-Klasse verwenden, um die geografischen Koordinaten für eine Adresse abzurufen. Zum Beispiel kann Ihre Anwendung den Benutzer zur Eingabe einer Adresse auffordern und diese anschließend auf einer Karte anzeigen. Die Adresse kann in Form einer unstrukturierten Zeichenfolge oder eines MapLocation-Objekts vorliegen. Geokodierungs-Anforderungen können synchron oder asynchron sein.
Angeben einer 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");
Bereitstellen von geografischem Kontext mit der Adresse
Um dem Geokodierungs-Server zu helfen, die relevantesten Ergebnisse zurückzugeben, stellen Sie mit Ihrer Geokodierungs-Anforderung geografischen Kontext bereit. Um Kontext bereitzustellen, können Sie ein MapDimensions-Objekt erstellen, das geografische Koordinaten enthält (z. B. den aktuellen Standort des BlackBerry-Gerätebenutzers). Durch die Bereitstellung von Kontext kann Ihre Anwendung relevante geografische Koordinaten empfangen, selbst wenn ein Benutzer nur eine Adresse angibt. Wenn Sie kein MapDimensions-Objekt bereitstellen, kann Ihre Anwendung den letzten in BlackBerry Maps gespeicherten Standort als Kontext verwenden, der möglicherweise nicht zu den gewünschten Ergebnissen führt.
MapPoint origin = new MapPoint(43.4815, -80.5407); MapDimensions context = new MapDimensions(origin, 480, 360, 5, 0);
Senden einer asynchronen Geokodierungs-Anforderung
MyServerExchangeCallback callback = new MyServerExchangeCallback();
try
{
Geocoder.getInstance().geocode(callback, address1, context, 0);
}
catch (GeocodeException e)
{
// Do something with the exception
}
Um eine Klasse zu erstellen, die die ServerExchangeCallback-Schnittstelle implementiert, müssen drei Methoden in Ihrer Anwendung enthalten sein: requestSuccess(), requestFailure() und requestHalted(). Wenn eine Geokodierungs-Anforderung abgeschlossen ist, ruft Ihre Anwendung eine dieser Methoden in Abhängigkeit vom Ergebnis der Anforderung auf.
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
}
}
Senden einer synchronen umgekehrten Geokodierungs-Anforderung
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
}
Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.