11/08/2013 06:31:00 AM

Google Map V2




Pré-requis

  • Il faut tout d’abord installer et configurer “Google Play Services” disponible dans le SDK Manager.
  • Puis, vous devez récupérer une clé API à l’adresse suivante “Google APIs Console
  • Créez un projet à l’aide du bouton Create, puis dans la partie “Services” (menu de gauche), activez le service Google Map Android API V2.
  • Cliquez sur le bouton “API Access” situé sur la barre de navigation (à gauche de l’écran)
  • Récupérez la clé SHA-1 correspondante à la clé “keystore” utilisée
  • Pour trouver l’emplacement du keystore utilisé, regardez les préférences d’Eclipse :
  • Récupérez votre clé SHA-1 à l’aide de la commande suivante : keytool.exe -v -list -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android
  • Créez un projet Android et notez votre nom de package, ici : com.tutos.android.gmapv2
  • Cliquez sur bouton “Create New Android Key” et copiez collez votre empreinte SHA-1 ainsi que votre nom de package :
  • Puis cliquez sur le bouton “Create” et vous obtiendrez ainsi votre API Key (Gardez là de côté)

Mise à jour du projet

Dans l’AndroidManifest de votre projet, rajoutez les lignes suivantes (dans la balise application)
   <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="your_api_key" />
Ainsi que les lignes suivantes afin de déclarer une permission nécessaire à l’utilisation de GMap (remplacer com.tutos.android.gmapv2 par votre nom de package)
<permission
        android:name="com.tutos.android.gmapv2.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.tutos.android.gmapv2.permission.MAPS_RECEIVE" />
Ainsi que les permissions suivantes :
    <!-- Permission pour utiliser la connexion internet -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Permission permettant de vérifier l'état de la connexion -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Permission pour stocker des données en cache de la map -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Afin de pouvoir utiliser GMap V2 sur un appareil, celui ci nécessite la présence d’OpenGL ES Version 2. Les lignes suivantes permettent de rendre l’application indisponible aux appareils qui ne possède pas cette version d’OpenGL
<uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
Voici à quoi ressemblera votre fichier AndroidManifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tutos.android.gmapv2"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="17" />

    <permission
        android:name="com.tutos.android.gmapv2.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.tutos.android.gmapv2.permission.MAPS_RECEIVE" />

    <!-- Permission pour utiliser la connexion internet -->
    <uses-permission android:name="android.permission.INTERNET" />
    <!-- Permission permettant de vérifier l'état de la connexion -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!-- Permission pour stocker des données en cache de la map -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

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

    <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="AIzaSyBUmd2bMQmcuEpHaw2lKduIdVAPoIXe9ic" />

        <activity
            android:name="com.tutos.android.gmapv2.MapActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Intégration de la carte

Modifiez votre fichier main.xml afin d’intégrer une carte possédant les attributs suivants :
  • Un Fragment représentant la carte
  • Un identifiant pour pouvoir intéragir avec la carte
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.MapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
Ainsi que votre activité afin de spécifier la vue à charger
package com.tutos.android.gmapv2;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MapActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_map);
 }

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.map, menu);
  return true;
 }

}
N’oubliez pas de rajouter la bibliothèque google play service à votre projet (télécharger précédemment). Elle est disponible dans votre dossier sdk.
Il suffit d’importer le projet suivant dans eclipse : D:\Users\xxxxx\android-sdks\extras\google\google_play_services\libproject\google-play-services_lib puis le rajouter à votre projet GMap


Résultat

Maintenant vous pouvez exécuter le projet sur votre appareil. Ce qui donnera le résultat suivant :

Vous pouvez télécharger ici le code d’exemple de ce tuto.
N’hésitez pas à poser vos questions