Table des matières

Cartes avec mapviews et Google Maps

Obtenir une clé pour Mapviews

L'utilisation de Google Maps dans Mapview est soumise à l'utilisation d'une clé d'API. Il existe un process pour la phase de développement et un process pour la phase de mise en production. Dans ce deuxième cas, l'utilisation d'un certificat de développeur personnel, associé à une clé privée, est nécessaire pour poster sur Google Play

Clé de développement

Pendant la phase de développement, le SDK utilise une clé par défaut, créée sans aucune intervention du développeur. Cette clé et le certificat associé sont des objets de debug qui ne peuvent pas être utilisés sur Google Play; ils sont en revanche parfaitement suffisants tant que la phase de développement n'est pas terminée.

Sous Mac Os

cd ~/.android/
MyMac:.android meOnMyMac$ ls *.keystore
debug.keystore
MyMac:.android meOnMyMac$

Sous Eclipse, vous pouvez retrouver l'emplacement du keystore par défaut : Eclipse → Préférences → Android → Build → Default debug keystore

keytool -list -alias androiddebugkey -keystore debug.keystore -storepass android -keypass android

Cette commande doit vous renvoyer une informations de ce type:

androiddebugkey, 12 sept. 2012, PrivateKeyEntry, 
Empreinte du certificat (MD5) : 22:90:F0:4E:81:3C:F4:9B:E6:3A:CE:5D:3A:11:3E:4B

Il ne reste plus qu'à utiliser cette empreinte sur l'API Google Maps pour obtenir la clé correspondante. Vous aurez besoin d'utiliser ou de créer un compte Google.

Clé de production

Préparer le projet

Mapviews fait partie des Google API. Quelques étapes permettent de préparer le projet à l'utilisation de ces API.

<uses-permission android:name="android.permission.INTERNET" />
<uses-library android:name="com.google.android.maps"/>

Problèmes courants

Unable to start activity

Ajouter vos éléments graphiques après avoir défini le contenant. Par exemplen dans onCreate()

super.onCreate(savedInstanceState);		
setContentView(R.layout.activity_main);
MapView myMapView = (MapView) findViewById(R.id.myMap);
myMapView.setBuiltInZoomControls(true);

plutôt que

super.onCreate(savedInstanceState);		
MapView myMapView = (MapView) findViewById(R.id.myMap);
myMapView.setBuiltInZoomControls(true);
setContentView(R.layout.activity_main);

Pas de localisation dans l'émulateur

Et non. L'émulateur ne permet pas de vous localiser seul. Mais DDMS peut vous aider.