Essa é a parte um de como usar a API do Google MAps.
A parte mais simples disso tudo é adicionar o elemento xml na sua view.
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <com.google.android.maps.MapView android:id="@+id/mapview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="true" android:apiKey="Sua Chave Aqui!!!" /> </LinearLayout>
Aqui você tem uma view .xml normal. Com um LinearLayout e o elemento MapView da biblioteca do Google.
Porém, só isso não irá fazer o mapView funcionar, pois ele precisa daquela proprieda. android:apiKey=””. E como faz pra conseguir ela?
Vamos lá…
Toda aplicação, App, Tem uma keystore (debug.keystore) e uma apk (nomeprojeto.apk). Esses arquivos são como certificados, e ao publicar sua app eles ajudam a valida-la.
O que esses arquivos tem com o MapView?
Você precisa validar sua apk e keystore e usar uma chave autenticada pelo sr. Google.
Como fazer?
No JDK e no SDK do Android você tem ferramentas que te auxiliam.
Keytool , jarsigner e zipalign.
Se você não tem os 3 como variáveis de ambiente, terá que ir nas pastas dos respectivos e executar:
Primeiro passo, abra o terminal e vá na pasta do keytool, que está lá no bin do JDK.
Execute o comando pra gerar sua keystore..
keytool -genkey -v -keystore caminho/arquivo.keystore -alias apelidoDakey -keyalg RSA -keysize 2048 -validity 10000
Esse comando gerará uma chave pra você. Ou seja, uma nova keystore. Toda aplicação ao ser criada, já tem uma keystore. Esta é chamada debug.keystore e que está, normalmente, na pasta documents/.android/
.
Você pode alterar a debug.keystore, que já pertence ao seu projeto, ao invés de criar uma nova.
Segundo passo, é ter o arquivo .apk. Esse é até mais simples. No eclipse mesmo, você pode clicar com o botão direito do mouse no seu projeto e vai na opção “Android Tools”->Export Unsigned Application Package. Logo será exportada o seu arquivo .apk, que você irá “sinconizar” com sua keystore.
Como fazer?
ainda na pasta do jdk, usar o programa jarsigner.
jarsigner -verbose -keystore caminho/nomeDaKeyStore.keystore caminho/nomeDaAPKCriadaEclipse.apk apelidoDakeyStore
Depois desse passo, você vai na pasta /tools, do seu SDK Android para gerar uma .apk Signed.
zipalign -v 4 caminho/suaApkUnsigned.apk caminho/nomeProjetoApkSigned.apk
Com isso, sua keystore é, digamos que, autenticada. Agora para ser validada,você deve pegar o certificado fingerprint e submeter pro Google.
keytool -list -keystore suaChave.keystore
irá aparecer algo semelhante a isso no terminal.
Certificate fingerprint (MD5): 92:1A:46:99:27:43:AB:F6:B6:78:D7:20:F4:8A:B2:93
Portanto copie e cole esse certificado nesse site do google.
http://code.google.com/intl/pt-BR/android/maps-api-signup.html
Pronto, depois disso ele já te mostrará sua apiKey e você a colocará na propriedade android:apiKey do seu MapView.
Um detalhe importante. Não esqueça de adicionar suas classes no AndroidManifest.xml e também o elemento da API, dentro da tag <application></application>
<uses-library android:name="com.google.android.maps"/>
Próximo post, falarei de como adicionar imagens ou pins marcando sua localização..!!
Se post foi util pra voce, da um Google+1 !!!
😀
Renato, muito bom o post, muito bem explicado. Só acrescentando… pra quem está usando o SDK7 do Java, é necessário colocar um -v após o -list. A linha que mostra o MD5 ficaria assim:
keytool -list -v -keystore suaChave.keystore
Opa. Obrigado por acrescentar. Ainda nem toquei no Java 7, já que agora tenho trabalhado com JavaCard jdk 6…
Espero que ajude várias pessoas esses posts.
Se gostou, da um Google+1 ae! hahahah.
abs
O post o mais claro que encontrei!
E a dica do Helder foi crucial para que eu conseguir gerar minha chave,
Acredito que vale apenas ate editar o post e colocar esta informacao.
Obrigado
Olá, ao gerar minha chave, não estou conseguindo autenticá-la no google, sendo retornada a mensagem de chave inválida.
O que estou estranhando é que a chave gerada em meu sistema está apresentando um total de 20 grupos (Ex.: 96:F5:73:B1:E8:7F:B9:EF:88:25:7E:49:68:15:3E:9A:F9:AG:A4:18 … chave inválida), enquanto a sua e várias outras que vi na net são de somente 16 (B6:A9:D2:A0:B2:E4:17:D0:2C:34:98:05:8B:FA:76:DB).
Existe algum outro procedimento a estar realizando?
Obrigado.
Cara, da uma olhada nesse link aqui.
quem sabe te ajuda!
http://developer.android.com/guide/publishing/app-signing.html#cert
abs
Problema resolvido, na versão do JDk 7 tem que adicionar a opção -v depois list, ficando assim:
keytool -list -v -keystore suaChave.keystore.
Valew pela ajuda… abraços
vlw cara me ajudou muito tava a horas tentando pegar esse danado kk abraço!
VLW CARA ME AJUDOU PRA CARAI…..
Fiz tudo isso mas não consegui criar o MapView. Quando coloco o código do MapView no xml ele me retorna a seguinte mensagem:
Missing styles. Is the correct theme chosen for this layout?
Use the Theme combo box above the layout to choose a different layout, or fix the theme style references.
Failed to find style ‘mapViewStyle’ in current theme
CAra, ve na build do seu projeto vc esta usando a google api.