Vous êtes prêt !

Pour passer à l'étape de développement, accédez à notre documentation pour les développeurs.

Activer Google Maps Android API

Pour commencer, nous allons vous guider à travers la console Google Developers et effectuer deux ou trois petites choses :

  1. Créer ou choisir un projet
  2. Activer Google Maps Android API
  3. Créer les clés appropriées
Continuer

Superpositions au sol

Les superpositions au sol sont des superpositions d'image liées aux coordonnées de latitude/longitude. Elles se déplacent donc lorsque vous faites glisser une carte ou effectuez un zoom.

Échantillons de code

Le référentiel ApiDemos sur GitHub inclut un échantillon qui illustre différentes superpositions au sol :

Introduction

Une superposition au sol est une image fixée sur une carte. Contrairement aux [marqueurs], les superpositions au sol sont orientées vers la surface de la Terre plutôt que vers l'écran. Par conséquent, si vous appliquez une rotation, une inclinaison ou un zoom sur la carte, l'orientation de l'image est modifiée. Les superpositions au sol sont utiles lorsque vous souhaitez fixer une image unique sur la carte. Si vous souhaitez ajouter beaucoup d'images qui recouvrent une grande partie de la carte, mieux vaut opter pour une superposition de tuiles.

Ajouter une superposition

Pour ajouter une superposition au sol (GroundOverlay), créez un objet GroundOverlayOptions qui définit à la fois une image et une position. Vous avez également la possibilité de définir des paramètres supplémentaires qui influent sur le positionnement de l'image sur la carte. Après avoir défini les options nécessaires, transmettez l'objet à la méthode GoogleMap.addGroundOverlay() afin d'ajouter l'image à la carte. La méthode addGroundOverlay() renvoie un objet GroundOverlay ; vous devez garder une référence à cet objet si vous souhaitez le modifier par la suite.

Remarque : Lorsque l'image est ajoutée à la carte, elle est convertie en image dont les côtés sont des puissances de deux. Vous pouvez éviter cette conversion en utilisant une image originale dont les dimensions sont déjà des puissances de deux — par exemple, 128x512 ou 1024x1024.

Procédure détaillée :

  1. Instanciez un nouvel objet GroundOverlayOptions
  2. Définissez l'image en tant que BitmapDescriptor.
  3. Définissez la position de l'image en utilisant l'une des méthodes disponibles :
    • position(LatLng location, float width, float height)
    • position(LatLng location, float width)
    • positionFromBounds(LatLngBounds bounds)
  4. Définissez des propriétés facultatives, telles que la transparence (transparency), le cas échéant.
  5. Appelez GoogleMap.addGroundOverlay() pour ajouter l'image à la carte.

L'exemple ci-dessous montre comment ajouter une superposition au sol à un objet GoogleMap existant.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);
map.addGroundOverlay(newarkMap);

Si vous souhaitez modifier ou supprimer une superposition au sol après l'avoir ajoutée à la carte, veillez à conserver l'objet GroundOverlay. Vous pouvez modifier la superposition ultérieurement en appliquant des changements à cet objet.

LatLng NEWARK = new LatLng(40.714086, -74.228697);

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .position(NEWARK, 8600f, 6500f);

// Add an overlay to the map, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

Supprimer une superposition

Vous pouvez supprimer une superposition au sol à l'aide de la méthode GroundOverlay.remove().

imageOverlay.remove();

Modifier une superposition

Vous pouvez modifier l'image de la superposition au sol après l'avoir ajoutée à la carte à l'aide de la méthode GroundOverlay.setImage(BitmapDescriptor).

// Add an overlay, retaining a handle to the GroundOverlay object.
GroundOverlay imageOverlay = map.addGroundOverlay(newarkMap);

// Update the GroundOverlay with a new image of the same dimensions.
imageOverlay = map.setImage(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1975));

La méthode setImage() remplace alors l'image existante par une autre image aux dimensions identiques.

Positionner une superposition au sol

Il y a deux façons d'indiquer la position d'une superposition au sol :

  • À l'aide d'un objet LatLng pour centrer la superposition et des dimensions exprimées en mètres pour définir la taille de l'image.
  • À l'aide d'un objet LatLngBounds pour spécifier les angles nord-est et sud-ouest de l'image.

Vous devez spécifier la position de la superposition au sol avant de l'ajouter à la carte.

Utiliser la localisation pour positionner une image

Lorsque vous ajoutez l'image, vous indiquez une valeur LatLng à laquelle l'ancre sera fixée, ainsi que la largeur de la superposition (en mètres). La valeur par défaut de anchor correspond au centre de l'image. Vous pouvez éventuellement fournir la hauteur de la superposition (en mètres). Si vous ne fournissez pas la hauteur de la superposition, elle sera automatiquement calculée pour conserver les proportions de l'image.

Le code ci-dessous place une image à la position 40.714086, -74.228697, mesurant 8,6 km de large par 6,5 km de haut. L'image est ancrée en bas à gauche.

GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .anchor(0, 1)
        .position(new LatLng(40.714086, -74.228697), 8600f, 6500f);

Utiliser LatLngBounds pour positionner une image

Vous fournissez un objet LatLngBounds qui contient l'image. L'objet LatLngBounds définit les angles nord-est et sud-ouest de l'image. Lorsque l'image est dessinée sur la carte, elle fait l'objet d'une rotation pour respecter les limites. Si les limites ne correspondent pas au rapport hauteur-largeur d'origine, l'image sera déformée.

Le code ci-dessous place une image sur la carte avec la limite de l'angle sud-ouest à 40.712216,-74.22655 et celle de l'angle nord-est à 40.773941, -74.12544.

LatLngBounds newarkBounds = new LatLngBounds(
        new LatLng(40.712216, -74.22655),       // South west corner
        new LatLng(40.773941, -74.12544));      // North east corner
GroundOverlayOptions newarkMap = new GroundOverlayOptions()
        .image(BitmapDescriptorFactory.fromResource(R.drawable.newark_nj_1922))
        .positionFromBounds(newarkBounds);

Gérer les événements de superposition au sol

Par défaut, les superpositions au sol ne sont pas cliquables. Vous pouvez activer et désactiver la cliquabilité en appelant GroundOverlay.setClickable(boolean).

Utilisez un écouteur OnGroundOverlayClickListener pour écouter les événements de clic sur une superposition au sol cliquable. Pour définir cet écouteur sur la carte, appelez GoogleMap.setOnGroundOverlayClickListener(OnGroundOverlayClickListener). Lorsqu'un utilisateur clique sur une superposition au sol, vous recevez un rappel onGroundOverlayClick(GroundOverlay).

Envoyer des commentaires concernant…

Google Maps Android API
Google Maps Android API
Besoin d'aide ? Consultez notre page d'assistance.