Tutorial Google Maps Android API v2
Tutorial Google Maps Android API v2
Tutorial Google Maps Android API v2
Antes de comear a trabalhar com a API, voc vai precisar baixar a API e obter a chave.
Tanto a API quanto a chave esto disponveis gratuitamente.
Configurando o ambiente
A API do Google Maps disponibilizada pelo Google muito simples de ser utilizada no
ponto de vista de codificao. No entanto, o desenvolvedor pode ter um pouco de
trabalho para configurar um projeto com esta tecnologia.
Passo 1: Crie um novo projeto Android (no eclipse ou Android Developer Tool).
o No meu caso meu projeto se chama GooglePlaces e tem o seguinte pacote base:
br.com.googleplaces
http://developer.android.com/google/play-services/setup.html
https://code.google.com/apis/console/
Logo na entrada ir aparecer uma lista de projetos j configurados caso voc tenha
realizado este procedimento antes. Caso contrrio aparecer uma opo para criar um
novo projeto. Ao acionar esta opo, ser solicitado o nome e o pacote base da
aplicao, aps preencher essas informaes. Clique na opo Services que esta
presente na aba superior a esquerda da tela.
Aps clicar na Aba services, uma lista de APIs disponibilizada pelo Google ser listada
para voc. Devemos agora selecionar as APIs que iremos utilizar em nosso projeto, so
elas: Google Maps Android API V2 e Places API. Habilite estas duas opes, como nas
imagens abaixo:
Agora precisamos criar uma chave de acesso que vincule o nosso projeto com as APIs
que gostaramos de utilizar. No menu superior a esquerda selecione o item API
Access. Procure pelo boto Create New Android Key.
Ao clicar nesta opo aparecer a seguinte tela:
Para criar uma chave de acesso, precisamos informar o SHA1 (informao presente na
keystore) junto com o nome do pacote base da aplicao. Para recuperar o SHA1,
utilize o comando:
36:91:28:DE:8F:ED:96:7C:81:D0:DD:D8:C3:49:2
D:11:53:2E:FF:63;br.com.lvc.googleplaces
E obtive a minha chave de acesso:
AIzaSyBk7On0KxUVi9oa81XX_hUNOI3XE4MNP
kU
Nota: Cada chave esta vinculada a uma Keystore.Logo se utilizar a minha chave sem a
minha keystore seu aplicativo no funcionar corretamente.
A primeira coisa que nos propomos a entender neste artigo o Google Maps. O
Google nos disponibiliza este componente como um Fragment, mais especificamente
com.google.android.gms.maps.SupportMapFragment.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
</LinearLayout>
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.activity_main);
}
}
Ao executar o projeto teremos algo similar ao apresentado na imagem acima. Nota:
Caso voc no consiga o resultado acima, reveja os passos de configurao para ver se
no esta esquecendo nada. Perceba que voc pode dar zoom, e ter acesso a todas as
funcionalidades essenciais do Google maps com um mnimo de cdigo.
Mas ainda h mais coisas para ver. Agora vamos pegar uma referencia do
objeto GoogleMap, para podermos explorarmos mais as possibilidades que esta
tecnologia oferece. Logo abaixo segue uma explanao sobre algumas classes que
devemos saber, antes de prosseguir:
Veja que especificamos um grau de zoom para focar a cmera do mapa neste ponto,
no caso foi 15, este grau pode ser de 2 at 21 onde 2 o mais longe e o 21 o mais
prximo possvel.Outra funcionalidade legal que vale a pena ser destacada o
mtodo setMapType tambm presente noGoogleMap.
Este mtodo aguarda uma constante como parmetro, cada constante representa uma
perspectiva diferente de visualizao do mapa. As constantes possveis so:
MAP_TYPE_NONE
MAP_TYPE_NORMAL
MAP_TYPE_SATELLITE
MAP_TYPE_HYBRID
MAP_TYPE_TERRAIN
map.setMapType(GoogleMap.MAP_TYPE_SATELITTE);
Podemos ver o resultado na imagem abaixo.
Agora que sabemos um pouco mais sobre a API do Google Maps, vamos implementar
uma funcionalidade mais interessante. Como por exemplo, colocar um marcador nossa
prpria localizao atual.
Integrao com GPS
Nota: No vou falar dos detalhes de como utilizar GPS no Android, para isso voc pode
acompanhar este artigo: http://androiddevbr.wordpress.com/2012/10/21/gps-no-
android/.
Basicamente desejamos que toda vez que uma localizao nova for capturada, um
marcador ser colocado no mapa para indicar a mesma. Com o objetivo estabelecido,
devemos agora dar incio a captura das localizaes. Fazemos isso com mtodo abaixo:
private void startCaptureLocation() {
@Override
Um ttulo(String), ou seja, um texto que ser exibido quando o usurio tocar no ponto
demarcado.
E uma imagem que ir aparecer no mapa no local indicado (neste exemplo meu
boneco de policial).
@Override
Este mtodo apenas libera a nossa Activity de tratar novas capturas de localizaes.
Pronto! Agora temos um aplicativo Android que exibe as minhas localizaes mais
recentes no mapa atravs de uma imagem da minha escolha. Voc tambm aprendeu
a configurar este mapa, e a focar a cmera no local que quiser. No final do artigo segue
o cdigo completo da nossa Activity.
At breve.
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
super.onCreate(arg0);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
map = mapFragment.getMap();
map.moveCamera(CameraUpdateFactory.newLatLngZoom(PRACA_TIRADENTES, 15));
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
startCaptureLocation();
@Override
protected void onDestroy() {
super.onDestroy();
LocationManager locationManager = (LocationManager)
getSystemService(LOCATION_SERVICE);
locationManager.removeUpdates(this);
}
@Override
public void onLocationChanged(Location location) {
MarkerOptions markerOptions = new MarkerOptions();
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
markerOptions.position(latLng);
markerOptions.title("Eu");
markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.boneco));
map.addMarker(markerOptions);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15));
}
@Override
public void onProviderDisabled(String provider) {
@Override
public void onProviderEnabled(String provider) {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
Referencia:
http://www.100loop.com/destaque/android-gps-e-google-maps-v2/
http://www.frameworksystem.com/blog/tutorial-google-maps-android-api-v2/
http://www.thiengo.com.br/google-maps-v2-no-android-inicio-configuracao