-
Notifications
You must be signed in to change notification settings - Fork 14
Mapas
Lembra que nós estamos obtendo a localização das pessoas que logam no eQuizmo? Falamos sobre isto no tópico sobre Geolocalização. Agora, vamos obter estas coordenadas e usá-las para fazer marcas em um mapa indicando onde os usuário estão (ou estavam).
Em primeiro lugar, você deve ter a biblioteca de Mapas instalada. A API de Mapas do Google não se encontra nativamente no Android. Para isto, use o Android SDK Manager e vá até a pasta Extras. Lá você encontrará a API de Mapas. Peça para instalar. Lembre-se que você também precisa instalar ela como uma dependência do Maven. Comentamos sobre isto neste tópico.
Bom, não é só isso. Você também precisa obter uma Chave para uso da API. Neste caso, acesse os links logo abaixo. Ele contém todas as informações para você obter sua chave. Eles também ensinam direitinho como usar a API de Mapas. Sugerimos que leia ela com atenção. Para ser mais sincero ainda, estes links foram usados como referência para fazer todo o nosso código! Você perceberão as semelhanças!
Você pode encontrar todo o código que usamos para usar a API de Mapas na classe MapaActivity.java. Observe como geramos objetos do tipo GeoPoint a partir da localização do usuário!
public class MapaActivity extends MapActivity {
private MapView mapView;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mapa);
mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
Drawable drawable = this.getResources().getDrawable(R.drawable.penguim);
final MapItemizedOverlay overlays = new MapItemizedOverlay(drawable, this);
new AsyncTask<Void, Void, List<User>>() {
@Override
protected List<User> doInBackground(Void... params) {
return User.getRanking(-1);
}
protected void onPostExecute(java.util.List<User> users) {
for (User user : users) {
GeoPoint geoPoint = new GeoPoint((int) (user.latitude * 1E6), (int) (user.longitude * 1E6));
overlays.addOverlay(new OverlayItem(geoPoint, user.name, user.score.toString()));
System.out.println((int) (user.latitude * 1E6) + " - " + (user.longitude * 1E6));
}
mapView.getOverlays().add(overlays);
}
}.execute();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
}