Sie sind auf Seite 1von 9

Obteno da Google Map API Key

Mesmo na sua verso anterior, era necessrio criar uma Google Map API Key. Esta tarefa era feita atravs do keytool do Java, gerando uma chave MD5. Esta string, era ento colocada em uma caixa de texto no site de gerao da API Key. Como retorno tnhamos exatamente esta chave que era usada na MapView. O processo na nova verso da API est vinculado ao Google APIs Console (https://code.google.com/apis/console/). Neste ambiente poderemos criar um novo aplicativo, tendo acesso a um nmero grande de servios do Google. No lado esquerdo da pgina, temos um combo com os nossos projetos. Ao selecionar um deles podemos clicar emServices. Entre as dezenas de servios temos o Google Maps Android API v2, que deve ser mudado para o estado on. O prximo passo clicar no link API Access, tambm no lado esquerdo. Na extremidade inferior desta pgina temos um link Create nem android key. Na caixa de texto apresentada deve-se colocar o SHA1 de seu certificado, seguido do nome do pacote da sua aplicao Android que dever interagir com os servios Google. E como listamos o SHA1? Basta utilizar esta linha de comando no DOS. Lembrando que o keytool uma ferramenta do Java: keytool -list -v -keystore C:\Users\your_user_name\.android\debug.keystore -alias androiddebugkey storepass android -keypass android O debug.keystore est na sua pasta de usurio, no diretrio .android. O storepass e o storepass, so valores padres para a chave de debug padro que j vem com o SDK do Android. Caso seu aplicativo j est utilizando uma chave prpria para lanar aplicativos na Google Play, dever mudar o endereo da keystore, bem como os valores das senhas. Com o SHA1 em mos, volte ao Google APIs Console, e copie este valor l, seguido de um ponto e vrgula e, finalmente, o nome do pacote de seu aplicativo. No API Access veremos a seguinte informaes:

Key for Android apps (with certificates) API key: Android apps: Activated on: AIzaSyAFPR7lvUbBBFnjzeJj7Qlo7uFFwrxfaCo 3A:7E:62:E9:81:F6:31:7F:AB:42:D5:A9:B7:EF:3F:EC:14:37:02:59;com.example.usingmapapiv2

Dec 12, 2012 10:46 AM

Activated rogliariping@gmail.com you by:

O valor API key a nossa chave, que ser adicionada no arquivo AndroidManifest.xml de seu projeto:

<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value=" our_api_!e ""#

Mudanas no AndroidManifest
Alm disso, o manifesto deve receber as seguintes linhas:

<permission android:name="<$E%_PA&'(E#.permission.)AP$_*E&EI+E" android:protection,evel="signature" "#

<uses-permission android:name="<$E%_PA&'(E#.permission.)AP$_*E&EI+E" " # <uses-permission android:name="android.permission.I-(E*-E(" "# <uses-permission android:name="android.permission..*I(E_E/(E*-A,_$('*A 0E" "# <uses-permission android:name="com.google.android.providers.gs1.permis sion.*EA2_0$E*+I&E$" "# <uses-permission android:name="android.permission.A&&E$$_&'A*$E_,'&A(I '-" "# <uses-permission android:name="android.permission.A&&E$$_3I-E_,'&A(I'" "#

As duas primeiras permisses so necessrias para chamadas da Google Maps API ao nosso aplicativo. A permisso de INTERNET se faz necessria para baixar os pedaos da imagem que compe o mapa. OWRITE_EXTERNAL_STORAGE tambm utilizada pela API para fazer cache das imagens do mapa.READ_GSERVICES para ler servios do Google e, finalmente, ACCESS_COARSE_LOCATION eACCESS_FINE_LOCATION para pegar o posicionamento global via rede e GPS, respectivamente. Tambm necessria um uses-feature nno seu manifesto. Isso porque esta nova API faz uso do Open GL e, o device que executar seu aplicativo, deve fornecer suporte de forma obrigatrio a ele:

<uses-1eature android:glEs+ersion="4544424444" android:re6uired="true""#

Colocando o mapa na tela


Na verso anterior bastava adicionar um MapView no nosso arquivo XML de definio de interface. Porm, na nova verso isso muda, levando em conta o uso de Fragments, que tambm uma feature muito til e muito encorajada pelo prprio Google. Veja como fica nosso suposto main.xml:

<75ml version="8.4" encoding="ut1-9"7# <1ragment 5mlns:android=:ttp:""sc:emas.android.com"ap!"res"android android:id=";<id"map" android:la out_=idt:="matc:_parent" android:la out_:eig:t="matc:_parent" android:class="com.google.android.gms.maps.)ap3ragment" "#

O class sempre ser o mesmo valor. Veja como o api_key saiu da interface e foi direto para o AndroidManifest? Desta maneira, no precisamos colocar a chave em diversas partes do cdigo. E na Activiy no temos nenhuma mudana:

pu>lic class )ainActivit ;'verride

e5tends Activit

protected void on&reate@Aundle savedInstance$tateB ? super.on&reate@savedInstance$tateBC set&ontent+ie=@*.la out.mainBC D D

Modo de visualizao do mapa


Na verso anterior no tnhamos muitas alternativas para mostrar o mapa ao usurio. Mas agora tudo mudou. No total so 5 possibilidades: normal, hybrid, satellite, terrain e none. Para efetuar esta alterao, o primeiro passo instanciar um objeto GoogleMap, chamado de mMap no trecho de cdigo abaixo:

m)ap = @@)ap3ragmentB get3ragment)anager@B.1ind3ragmentA Id@*.id.mapBB .get)ap@BC

i1 @m)ap E= nullB ?

""podemos manipular o mapa D

Depois disso s chamar o mtodo setMapType, de GoogleMap. Por exemplo:

m)ap.set)ap( pe@0oogle)ap.)AP_(YPE_FYA*I2BC

Adicionando Marcadores/POIs
Uma das utilidades mais importantes em um mapa a adio de pontos de interesse (Point of Interest). De nada adianta vermos uma imagem em trs dimenses de uma cidade sem nenhuma informao relevante associada ao contexto de uso. Na verso 1.0 da API de mapas, isso era feito com uma classe chamada Overlay. Mas de agora em diante esquea isso. Na nova API essa tarefa est nas mos do mtodo addMarker, da classe GoogleMap.

)ar!er min:a&idade = m)ap.add)ar!er@ne= )ar!er'ptions@B .position@ne= ,at,ng@-29.G9929HI-J8.9KJHKJBB .title@"2avid &ana>arro"B .snippet@"Population: K.944"BBC

Esse marcador tambm poderia ter cone associado, utilizando o icon de MarkerOptions. Alm disso, podemos customizar totalmente o comportamento da janela que mostrada no instante em que clicamos em um marcador. Para tanto, basta criar uma implementao da interface InfoWindowAdapter e chamar o mtodoGoogleMap.setInfoWindowsAdapter com sua implementao.

Polylines e Polygons
Talvez uma das mudanas mais bem vindas nos mapas foi a possibilidade de insero de polylines e polygons. O primeiro trata-se de uma definio de mltiplas linhas, definido propriedades como cor e largura. Polygons trata-se de um polgono. Isso abre diversas possibilidades. Poderamos criar um aplicativo com um mapa de regies histricas de uma cidade, criando polgonos em cada regio. Podemos criar uma rota inserindo diversas linhas sucessivas. E assim por diante. O primeiro passo para criar um polyline definir um PolylineOptions, onde definimos os pontos geogrficos de cada linha. Utilizando para isso instncias de objetos LatLng. Com a instncia das opes em mos, podemos definir algumas propriedades e, logo a seguir, utilizarmos na chamada do mtodo GoogleMap.addPolyline. O retorno deste ltimo mtodo uma instncia de Polyline. Veja o exemplo abaixo (retirado do site developer.android.com, assim como a imagem).

""instancia um novo Pol line e adiciona pontos para de1inir um retLngu lo Pol line'ptions rect'ptions = ne= Pol line'ptions@B .add@ne= ,at,ng@GM.GJI -822.4BB .add@ne= ,at,ng@GM.KJI -822.4BB .add@ne= ,at,ng@GM.KJI -822.2BB .add@ne= ,at,ng@GM.GJI -822.2BB .add@ne= ,at,ng@GM.GJI -822.4BBC

"" con1igure a cor do retLngulo para vermel:o rect'ptions.color@&olor.*E2BC

Pol line pol line = m )ap.addPol line@rect'ptionsBC

Este cdigo representado na Figura 1:

E o Polygon, sua forma de uso muito diferente? No. Na verdade os cdigos so extremamente semelhantes. Veja no trecho de cdigo abaixo, tambm retirado do developer.android.com:

"" Instancia um o>Neto Pol gon e adiciona pontos em sentido anti-:orOr io para de1iner um retLngulo Pol gon'ptions rect'ptions = ne= Pol gon'ptions@B .add@ne= ,at,ng@GM.GJI -822.4BI ne= ,at,ng@GM.KJI -822.4BI ne= ,at,ng@GM.KJI -822.2BI ne= ,at,ng@GM.GJI -822.2BI ne= ,at,ng@GM.GJI -822.4BBC

"" con1igure a cor do traPo do retLngulo para vermel:o rect'ptions.stro!e&olor@&olor.*E2BC

"" con1igure o preenc:imento do retLngulo para aQul rect'ptions.1ill&olor@&olor.A,%EBC

Pol gon pol gon = m )ap.addPol gon@rect'ptionsBC

O PolygonOptions serve para definer os pontos geogrfico que definir o polgono. Simplesmente usamos seu mtodoadd para passar diversas instncias de LatLng. Perceba que o primeiro e o ltimo ponto so coincidentemente iguais. Isso no chega a ser uma regra, visto que, caso no seja fornecido o ponto de incio e final iguais, a API traa uma reta para fechar o polgono. Como configuraes, estamos definindo a cor do trao para vermelho e a cor de preenchimento do polgono para azul. E, finalmente, chamando o mtodo GoogleMap.addPolygon().

Mudando a cmera do mapa


No fique preocupado, realmente usei a palavra cmera no texto. Isso porque, a visualizao do mapa funciona exatamente como se tivssemos vendo o mundo com uma cmera, em um plano linear. E podemos efetuar algumas alteraes no modo de ver este mundo. Por exemplo, com gestos podemos mudar a direo do mapa, fazer com o norte do mapa mude, podemos alterar o nvel de zoom e rotacionar o mapa. Nesta nova verso da API, algumas cidades apresentam inclusive construes em 3D. A imagem abaixo mostra um ponto de Vancouver, no Canad (imagem retirada do developer.android.com):

As alteraes na cmera so feitas com o mtodo GoogleMap.animateCamera, passando como parmetro um mtodo esttico da classe CameraUpdateFactory. Por exemplo, as duas linhas abaixo mostram como dar um zoom in e zoom out na viso, respectivamente.

m)ap.animate&amera@&amera%pdate3actor .QoomIn@BBC m)ap.animate&amera@&amera%pdate3actor .Qoom'ut@BBC

Tudo bem, mas digamos que queria configurar diretamente para um nvel de zoom, eu posso? Com certeza, veja a linha abaixo. O valor passado por parmetro deve ser um valor entre 2.0 e 21.0. Valores fora desde intervalo so convertidos automaticamente. Por exemplo, passei como parmetro 37, ele converte para 21.

m)ap.animate&amera@&amera%pdate3actor .Qoom(o@82BBC

Outra mudana que eu posso efetuar simplesmente mover a cmera, j aplicando o nvel de zoom desejado. Veja nas linhas abaixo. Neste caso vamos mudra um mtodo explcito, chamado de moveCamera. Seu parmetro novamente um mtodo de CameraUpdateFactory, que, por sua vez, recebe uma instncia de LatLng e o nvel de zoom, como parmetros.

1inal ,at,ng )E,A'%*-E = ne= ,at,ng@-GM.98G8RI 8KK.RH2R9BC m)ap.move&amera@&amera%pdate3actor .ne=,at,ngSoom@)E,A'%*-EI 8JBB

Mas at a no tem nada de novo em relao a antiga API. Porm, agora podemos mudar o ngulo de visualizao do mapa, chamado de Tilt na API. Basicamente, podemos mudar um mapa que est sendo visto exatamente de cima, como mostra a imagem abaixo:

Para uma viso onde temos um ngulo de viso de 45 graus, como na imagem abaixo (as duas imagens foram retirados de developer.android.com).

E como fazer isso? Simples, veja o cdigo abaixo:

&ameraPosition cp = ne= &ameraPosition.Auilder@B .target@ne= ,at,ng@TBB"" centro do mapa para uma lat e long .Qoom@8MB .>earing@R4B .tilt@KJB .>uild@BC "" con1igure o nUvel de Qoom "" muda a orientaPVo da camera para leste "" Lngulo de visVo da cLmera para KJ graus "" cria um &ameraPosition a partir do >uilder

m)ap.animate&amera@&amera%pdate3actor .ne=&ameraPosition@cpBBC

Das könnte Ihnen auch gefallen