Skip to content
marloncarvalho edited this page Aug 8, 2012 · 3 revisions

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).

Biblioteca de Mapas

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.

Registro

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!

Onde está o código?

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;
	}

}