Exemplo de código: Recuperar coordenadas geográficas para um endereço usando geocodificação
O seguinte exemplo de código demonstra como obter as coordenadas geográficas para um endereço usando uma solicitação assíncrona de geocodificação. Mesmo que a solicitação especifique somente uma rua, o servidor de geocodificação pode retornar um conjunto relevante de coordenadas por causa do contexto geográfico que é incluído com a solicitação. Quando o aplicativo recebe os resultados da pesquisa, ele exibe a latitude e a longitude na tela.
import net.rim.device.api.lbs.maps.MapDimensions;
import net.rim.device.api.lbs.maps.model.*;
import net.rim.device.api.lbs.maps.server.*;
import net.rim.device.api.lbs.maps.server.exchange.*;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.MainScreen;
import java.util.Vector;
public class GeocodingDemo extends UiApplication
{
public static void main(String[] args)
{
GeocodingDemo app = new GeocodingDemo();
app.enterEventDispatcher();
}
public GeocodingDemo()
{
pushScreen(new GeocodingDemoScreen());
}
public class GeocodingDemoScreen extends MainScreen
{
private LabelField _resultsField;
public GeocodingDemoScreen()
{
setTitle("Geocoding Demo");
_resultsField = new LabelField();
add(_resultsField);
// Geographic context that is sent with the request.
MapDimensions location = new MapDimensions(
new MapPoint(43.4815, -80.5407), 480, 360, 5, 0);
// The address used in the request. Only the street name is
// required, since geographic context is provided that
// indicates the search is coming from Waterloo, Ontario.
MapLocation address = new MapLocation();
address.addData(MapLocation.LBS_LOCATION_STREET_ADDRESS_KEY,
"419 phillip st");
// Create an instance of the class that implements
// ServerExchangeCallback.
MyServerExchangeCallback callback = new MyServerExchangeCallback();
try
{
// Initiate the reverse geocoding request.
Geocoder.getInstance().geocode(callback, address, location, 0);
}
catch (GeocodeException e)
{
// Do something with the exception.
}
}
public class MyServerExchangeCallback implements ServerExchangeCallback
{
// StringBuffer used to display the location information from the
// request.
StringBuffer buffer = new StringBuffer();
public void requestSuccess(ServerExchange exchange)
{
if(exchange instanceof GeocodeExchange)
{
// Cast the Exchange object to a GeocodeExchange object
// and retrieve the Vector of results.
GeocodeExchange geocodeExchange = (GeocodeExchange)exchange;
Vector results = geocodeExchange.getResults();
// Iterate through each MapLocation object in the Vector
// (can be many results depending on the context you provide
// with the request).
for(int i = 0; i < results.size(); i++)
{
// Retrieve the lat and lon from the MapLocation object
// and appends it to the StringBuffer.
MapLocation location = (MapLocation) results.elementAt(i);
buffer.append("Latitude: ").append(location.getLat())
.append('\n');
buffer.append("Longitude: ").append(location.getLon())
.append('\n');
}
// Take control of the UI thread and displays the location
// information on the screen.
synchronized(UiApplication.getEventLock())
{
_resultsField.setText(buffer.toString());
}
}
}
public void requestFailure(ServerExchange exchange)
{
// Report the failure to the user.
}
public void requestHalted()
{
// Request was stopped.
}
}
}
}
Estas informações foram úteis? Gostaríamos de receber seus comentários.