Vous êtes sur la page 1sur 46

Aula 09 Usando o Google API

Google Maps

Prof. Dr. Jucimar Souza


jucibs@gmail.com
Servios da Google
O Google disponibiliza diversos servios
relacionados aos seus produtos que podem
ser utilizados gratuitamente por nos,
desenvolvedores.
Esses servios tambm so conhecidos
como Google APIs.
Places API
Tasks API
Google Maps API
Drive API para integracao com o Google Drive.
Servios da Google
Geralmente so acessados via HTTP
Aplicativo cliente deve realizar a autenticao
Executar as requisies
Processar a resposta do servio
Google APIs Clients Libraries
So bibliotecas disponibilizadas em diversas
linguagens
Nesta aula vamos usar a Google Maps Android
API v2
Preparando o Ambiente para usar a API
Google Maps
Acesse o SDK Manager
Acesse Extras
Instale Google Play Services
Preparando o Ambiente para usar a API
Google Maps
Acesse o SDK Manager
Acesse Extras
Instale Google Play Services
Preparando o Ambiente - Importar
Google Play Services como biblioteca
No Eclipse
File / Import / Android / Existing Android
Code Into Workspace
Selecionar o diretrio da biblioteca do Google
Play Services do SDK
.\adt-bundle-windows-x86_64-
20140702\sdk\extras\google\google_play_services
No esquea de marcar a opo Copy Project into
Workspace
Preparando o Ambiente - Importar
Google Play Services como biblioteca
Preparando o Ambiente - Importar
Google Play Services como biblioteca
Vamos criar o nosso projeto
ExemploGoogleMaps
Aps criar o projeto voc deve:
Importar o projeto googleplay-service-lib como
biblioteca para o projeto recm criado
Isso deve ser feito atravs da opo de
propriedade do projeto
Preparando o Ambiente - Importar
Google Play Services como biblioteca
Gerando a API Key de Mapas
uma forma curta de certificado digital que
utilizado para assinar o aplicativo Android.
Conhecido como sha-1 fingerprint e informado
no Google API Console, juntamente com o
package name da aplicao
O Android SDK j traz um keystore em sua
aplicao
Chave utilizada como debug e acionada sempre
que plugamos um smartphone no PC e testamos
nele
Sem percebermos o projeto compactado em um apk
e assinado digitalmente antes de carregar no device
Gerando a API Key de Mapas
Obtendo o SHA1 fingerprint do sdk
Acesse Window > Preference > Android > Build
Copie o campo SHA1 fingerprint
Outra formar usando o Keytool
Linux e MacOS
keytool -list -v -keystore ~/.android/debug.keystore-alias
androiddebugkey -storepass android keypass android
Windows
keytool -list -v -keystore "%USERPROFILE
%\.android\debug.keystore" -alias androiddebugkey -
storepass android -keypass android
Mais detalhes em:
https://developers.google.com/maps/documentation/
Gerando a API Key de Mapas
Requisitando o servio da Google
Console API
Acesse
https://code.google.com/apis/console/
Faa o login e acesse o boto para abilitar
API
Requisitando o servio da Google
Console API
Procure a API de nome:
Google Maps Android API v2
Altere o status para ON dando um clique duplo
no boto
Confirme que voc aceita os termos de uso
Agora vamos nos credenciar para acessar a
API
Clique em Creditials e depois no boto Create
new key
Requisitando o servio da Google
Console API
Requisitando o servio da Google
Console API

Selecione Android Key


Requisitando o servio da Google
Console API
Copie o SHA 1 para esta janela, digite um ; e na
sequencia o pacote principal do projeto
Requisitando o servio da Google
Console API
A chave foi gerada. Copie para colarmos no
AndroidManifest.xml
Projetos que usam o GoogleMaps devem
configurar o AndroidManifest.XML
Dentro da Tag Aplication
Usado por todos os MapFragments da
aplicao
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" />

Aqui voc informa a


chave obtida no site
Projetos que usam o GoogleMaps devem
configurar o AndroidManifest.XML
Inclua tambm a verso do GoogleMaps no
manifesto dentro da tag Aplicaction

<application
.
.
.
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
Configurando as permitions e features no
AndroidManifest.XML
Avisa ao usurio e ao sistema operacional que este aplicativo
vai receber mapas dos servidores da Google
<permission
android:name= "br.edu.ufam.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission
android:name="br.edu.ufam.permission.MAPS_RECEIVE" />

Permisso para usar a Internet


<uses-permission
android:name="android.permission.INTERNET" />
Configurando as permitions e features no
AndroidManifest.XML
Permite que a aplicao acesse o estado da conectividade de
rede do aparelho

<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"
/>

Permisso a aplicao escrever em memoria externa


<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE
" />
Configurando as permitions e features no
AndroidManifest.XML
Avisa ao usurio e ao sistema operacional que este aplicativo
vai receber mapas dos servidores da Google

<uses-permission
<uses-permission
android:name=
android:name=
"com.google.android.providers.gsf.permission.READ_GSERVICES" />
"com.google.android.providers.gsf.permission.READ_GSERVICES"/>
Configurando as permitions e features no
AndroidManifest.XML
Informa aos futuros usurios que somente os devices com
suporte OpenGL conseguem instalar a aplicao

<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />

Mais informaes sobre permisses acesse:

http://developer.android.com/reference/android/Manifest.per
mission.html
Mostrando o mapa na aplicao
Selecione um LinerLayout para sua
aplicao e dentro dele coloque um
fragmente conforme cdigo abaixo:
<LinearLayout xmlns:and...

<fragment
android:id="@+id/fragment1"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp" />

</LinearLayout>
Agora execute a aplicao.
Aplicao rodando
Aqui foi usado on
emulador
Genymotion que
roda no VirtualBox
http://www.genymo
tion.com/
Veja como instalar
google app na
Internet para poder
instalar o
GoogleMaps
Adicionando pontos de Interesse (POI)
Vamos adicionar alguns pontos de
interesse no mapa para deixa-lo com uma
cara mais profissional.
Vamos colocar alguns pontos turstico e de
interesse pblico de Manaus.
Adicionando pontos de Interesse (POI)
Para adicionar um ponto de interesse
precisamos de uma instncia de
GoogleMaps:
Dentro da onCreate:

MapFragment mapFrag=
MapFragment)getFragmentManager().
findFragmentById(R.id.fragment1);
GoogleMap mMap=mapFrag.getMap();
Adicionando pontos de Interesse (POI)
Para marcar um lugar no mapa precisamos
de uma instancia da classe MarkerOption
passando a latitude, longitude e titulo.
A latitude e longitude fornecida atravs
de uma instancia da classe
Para testar este recurso vamos adicionar no
nosso mapa os pontos IFAM, UFAM e Teatro
Amazonas
Adicionando o ponto UFAM
// latitude e longitude do IFAM
double latitude = -3.133995;
double longitude = - 60.012812;

// criar marcador
MarkerOptions marker = new
MarkerOptions().position(
new LatLng(latitude,longitude)).
title(IFAM");

// adiciona o marcador no mapa


mMap.addMarker(marker);
Adicionando o ponto UFAM
// latitude e longitude da UFAM
double latitude = -3.090351;
double longitude = -59.963566;

// criar marcador
MarkerOptions marker = new
MarkerOptions().position(
new LatLng(latitude,longitude)).
title("UFAM");

// adiciona o marcador no mapa


mMap.addMarker(marker);
Adicionando o ponto Teatro Amazonas
adicionando cores nos marcador
// latitude e longitude do Teatro Amazonas
latitude = -3.130058;
longitude = -60.023403;

// criar marcador
marker = new MarkerOptions().position(
new LatLng(latitude, longitude));

// Adicionando Titulo
marker.title("Teatro Amazonas");
marker.icon(BitmapDescriptorFactory.
defaultMarker(BitmapDescriptorFactory.HUE_ROSE));

// adicionar marcador
mMap.addMarker(marker);
Cores dos Marcadores
Voc tambm pode usar um um cone
como marcador
// latitude e longitude do Teatro Amazonas
latitude = -3.130058;
longitude = -60.023403;

// criar marcador
marker = new MarkerOptions().position(
new LatLng(latitude, longitude));

// Adicionando Titulo
marker.title("Teatro Amazonas");
marker.icon(
BitmapDescriptorFactory.fromResource(
R.drawable.emo_im_laughing));
// adicionar marcador
mMap.addMarker(marker);
Centralizando o mapa
Existe um recurso no mapa que ele
movimenta o mapa para posio desejada
dando a seo de uma cmera.
O mtodo moveCamera de GoogleMap
recebe como parmetro uma instancia de
CameraUpdate
A classe CameraUpdateFactory recebe uma
srie de mtodos estticos que retornam
CameraUpdate
Centralizando o mapa
O mtodo recebe o parmetro da classe LatLng e
o outro o zoom, que varia entre 2.0 e 21.0.
Sendo:
2.0 o nvel mximo de zoom out
21.0 o nvel mximo de zoom in

mMap.moveCamera(
CameraUpdateFactory.newLatLngZoom(
new LatLng(latitude,longitude),10));
Centralizando o mapa com animao da
cmera
Vamos substituir o cdigo do slide anterior por
este:
CameraPosition cameraPos=new
CameraPosition.Builder()
.target(new LatLng(latitude, longitude))
.zoom(17)
.bearing(90)
.tilt(60)
.build();
mMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPos));
Centralizando o mapa com animao da
cmera
Vamos substituir o cdigo do slide anterior por
este:
CameraPosition cameraPos=new
CameraPosition.Builder()
Alvo e .target(new LatLng(latitude, longitude))
zoom .zoom(17)
.bearing(90)
.tilt(60)
.build();
mMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPos));
Centralizando o mapa com animao da
cmera
Vamos substituir o cdigo do slide anterior por
este:
CameraPosition cameraPos=new
CameraPosition.Builder()
Alvo e .target(new LatLng(latitude, longitude))
zoom .zoom(17)
.bearing(90) Define a posio da bssola
.tilt(60)
.build();
mMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPos));
Centralizando o mapa com animao da
cmera
Vamos substituir o cdigo do slide anterior por
este:
CameraPosition cameraPos=new
CameraPosition.Builder()
Alvo e .target(new LatLng(latitude, longitude))
zoom .zoom(17)
.bearing(90) Define o ngulo da exibio do
.tilt(60) mapa
.build();
mMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPos));
Centralizando o mapa com animao da
cmera
Vamos substituir o cdigo do slide anterior por
este:
CameraPosition cameraPos=new
CameraPosition.Builder()
Alvo e .target(new LatLng(latitude, longitude))
zoom .zoom(17)
.bearing(90) Constri uma instancia de
.tilt(60) CameraPosition
.build();
mMap.animateCamera(CameraUpdateFactory
.newCameraPosition(cameraPos));
Alterando o tipo de Mapa
Tire o comentrio do cdigo um de cada vez e rode a
aplicao para ver a diferena

mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);

mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);

mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
As vezes voc precisa marca uma rea
no mapa
Polyline
Conjunto de LatLng
Cria uma srie de segmentos de reta
GoogleMap.addPolyline(opcoes)
Exemplo:
PolylineOptions rectOptions = new PolylineOptions()
.add(new LatLng(-3.129892, -60.024078))
.add(new LatLng(-3.129914, -60.022812))
.add(new LatLng(-3.130846, -60.022833))
.add(new LatLng(-3.130782, -60.024131))
.add(new LatLng(-3.129892, -60.024078));
Polyline polyline = mMap.addPolyline(rectOptions);
Acessando seu local atual
O cdigo abaixo habilita o boto local atual
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().
setMyLocationButtonEnabled(true);

Para fazer uso deste recurso voc deve


permitir sua aplicao acessar localizao
fina
<uses-permission android:name
="android.permission.ACCESS_FINE_LOCATION" />
Acessando os Botes de Zoom e funo
de Bussola
Voc pode desabilitar o boto de zoom
utilizando este mtodo:
mMap.getUiSettings().setZoomControlsEnabled(false);

Funcionalidade de Bussola pode ser obtida


usando:
mMap.getUiSettings().setCompassEnabled(true);
Dvidas ??