J’ai décidé de créer ce billet pour aider certains d’entre vous à utiliser la nouvelle API Googlemaps V3.
Rappelons que l’ancienne version de l’Api nécessitait une clef pour fonctionner et cette clé était valable uniquement pour un nom de domaine, ce n’est plus le cas aujourd’hui.

Initialisation de la carte

Pour commencer, partons d’une structure de base html comme ci-dessous

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Google Maps Api v3</title>
  </head>
  <style type="text/css">
    #container{position:relative;width:990px;margin:auto;}
    #container #map{width:500px;height:500px;margin:auto;}
  </style>
  <body>
    <div id="container">
        <div id="map">
            <p>Veuillez patienter pendant le chargement de la carte...</p>
        </div>
    </div>

    <!-- Include Javascript -->
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript" src="/js/functions.js"></script>
  </body>
</html>

Quelques explications sur la structure :
La div portant l’identifiant map sera le conteneur de notre carte, le message présent dans cette div sera donc effacé lorsque la carte sera chargée.
Nous incluons l’Api Googlemap et un fichier appelé functions.js dans lequel nous allons initialiser notre carte.
Voici notre fichier function.js

var map;
var initialize;

initialize = function(){
  var latLng = new google.maps.LatLng(50.6371834, 3.063017400000035); // Correspond au coordonnées de Lille
  var myOptions = {
    zoom      : 14,
    center    : latLng,
    mapTypeId : google.maps.MapTypeId.TERRAIN, // Type de carte, différentes valeurs possible HYBRID, ROADMAP, SATELLITE, TERRAIN
    maxZoom   : 20
  };

  map      = new google.maps.Map(document.getElementById('map'), myOptions);
};

initialize();

Placer un point sur la carte

Nous venons donc d’initialiser notre carte sur Lille, simple n’est-ce pas ?
Maintenant peut-être souhaitez-vous placer un point sur cette carte ? Et bien voici comment faire

var marker = new google.maps.Marker({
    position : latLng,
    map      : map,
    title    : "Lille"
    //icon     : "marker_lille.gif"
});

Il faut impérativement créer le marqueur après l’initialisation de la carte pour préciser au marqueur la carte sur laquelle il doit s’afficher. Voir l’exemple ci-dessous

initialize = function(){
  var latLng = new google.maps.LatLng(50.6371834, 3.063017400000035); // Correspond au coordonnées de Lille
  var myOptions = {
    zoom      : 14, // Zoom par défaut
    center    : latLng, // Coordonnées de départ de la carte de type latLng
    mapTypeId : google.maps.MapTypeId.TERRAIN, // Type de carte, différentes valeurs possible HYBRID, ROADMAP, SATELLITE, TERRAIN
    maxZoom   : 20
  };

  map      = new google.maps.Map(document.getElementById('map'), myOptions);

  var marker = new google.maps.Marker({
    position : latLng,
    map      : map,
    title    : "Lille"
    //icon     : "marker_lille.gif" // Chemin de l'image du marqueur pour surcharger celui par défaut
  });
};

Créer une info-bulle

Vous voilà maintenant avec votre carte et votre premier point, vous remarquerez que rien ne se passe lorsque vous cliquez sur le point, voici comment afficher une info-bulle

var contentMarker = 'Suspendisse quis magna dapibus orci porta varius sed sit amet purus. Ut eu justo dictum elit malesuada facilisis. Proin ipsum ligula, feugiat sed faucibus a, <a href="http://www.google.fr">google</a> sit amet mauris.'

var infoWindow = new google.maps.InfoWindow({
    content  : contentMarker,
    position : latLng
});

Nous venons de définir l’info-bulle et son contenu, il ne reste plus qu’à définir un listener

google.maps.event.addListener(marker, 'click', function() {
    infoWindow.open(map,marker);
});

Et le tour est joué !

Créer une tabulation dans une info-bulle

Auparavant, avec l’Api v2 de Googlemaps, il était possible d’obtenir des tabulations dans les info-bulles, dorénavant celà n’est plus possible, l’une des solutions possibles consiste à créer la tabulation soit-même en javascript.
Je vous propose donc de passer par jQuery où toute autre librairie de votre choix pour la réalisation de la tabulation.
Pour ma part, je choisis Jquery.
Voici un exemple ci-dessous.

var contentString = [
          '<div id="containerTabs">',
          '<div id="tabs">',
          '<ul>',
            '<li><a href="#tab-1"><span>Lorem</span></a></li>',
            '<li><a href="#tab-2"><span>Ipsum</span></a></li>',
            '<li><a href="#tab-3"><span>Dolor</span></a></li>',
          '</ul>',
          '<div id="tab-1">',
            '<h3>Lille</h3><p>Suspendisse quis magna dapibus orci porta varius sed sit amet purus. Ut eu justo dictum elit malesuada facilisis. Proin ipsum ligula, feugiat sed faucibus a, <a href="http://www.google.fr">google</a> sit amet mauris. In sit amet nisi mauris. Aliquam vestibulum quam et ligula pretium suscipit ullamcorper metus accumsan.</p>',
          '</div>',
          '<div id="tab-2">',
           '<h3>Aliquam vestibulum</h3><p>Aliquam vestibulum quam et ligula pretium suscipit ullamcorper metus accumsan.</p>',
          '</div>',
          '<div id="tab-3">',
            '<h3>Pretium suscipit</h3><ul><li>Lorem</li><li>Ipsum</li><li>Dolor</li><li>Amectus</li></ul>',
          '</div>',
          '</div>',
          '</div>'
        ].join('');

google.maps.event.addListener(infoWindow, 'domready', function(){ // infoWindow est biensûr notre info-bulle
    jQuery("#tabs").tabs();
});

Il faudra biensûr ne pas oublier de télécharger et d’inclure jQuery Ui disponible ici http://jqueryui.com/download

Pour la démonstration c’est ici,
et ça se passe là pour les sources.

Ce billet vous a plus ? N’hésitez pas à laisser un commentaire, c’est toujours encourageant.

Mots-clefs :,

13 commentaires


  1. Jérémie on 15 juil 2011

    Super intéressant ce tuto !

    Je cherche un moyen d’avoir plusieurs points accompagnés de leurs bulles sur la carte… mais du coup je galère à les déclarer dans le code…

    Aurais-tu un exemple avec 2 points sur la carte ?

    Merci

    • admin on 16 juil 2011

      Salut Jérémie, oui voici un exemple avec deux points

      var marker1;
      var marker2;

      var latLngMarker1 = new google.maps.LatLng(’50.62925′,’3.057256000000052′);
      var latLngMarker2 = new google.maps.LatLng(’50.6283955′,’3.0520400000000336′);

      var contentStringMarker1 = ‘Lille’;
      var contentStringMarker2 = ‘rue Léon Gambetta Lille’;

      var infoWindowMarker1 = new google.maps.InfoWindow({
      content : contentStringMarker1,
      position : latLngMarker1
      });
      var infoWindowMarker2 = new google.maps.InfoWindow({
      content : contentStringMarker2,
      position : latLngMarker2
      });

      google.maps.event.addListener(marker1, \’click\’, function() {
      infoWindowMarker1.open(map,marker1);
      });
      google.maps.event.addListener(marker2, \’click\’, function() {
      infoWindowMarker2.open(map,marker2);
      });

      Et voilà le tour est joué, idéalement tu peux imaginer une boucle PHP qui génère le code ci-dessus en remplaçant le numéro dans le nom du marqueur, latLng…etc par l’identifiant du point.

  2. Jérémie on 18 juil 2011

    Super !

    Merci beaucoup pour ta réponse ! je teste çà et je posterai le résultat final !

  3. YanOu on 10 août 2011

    Whouhaaa génial ce tuto!!!
    Je pense m’en servir très prochainement… Merci shatimes :D

  4. itinerairesbis on 14 août 2011

    bonjour, et merci pour ce tuto…
    Ce que je recherche, c’est d’apprendre via un tuto pour placer des adresses stockées dans ma base de données et les placer sur ma carte Google V3
    cordialement
    gilles

    • admin on 26 août 2011

      Bonjour,

      Il suffit de regarder l’exemple ci-dessus avec deux points, il faut simplement imbriqué le code dans la boucle de vos points et nommer de manière dynamique les variables.

  5. [...] article est la suite logique de ce précédent billet sur la découverte de l’API Google Maps V3. Nous repartirons donc de l’archive [...]

  6. Maroua on 13 juin 2012

    Bonjour,
    Merci beaucoup pour ce tuto ça m’a beaucoup aidé !
    Avez vous une idée comment je pourrais localiser des tablettes à partir leurs adresses IP et afficher leurs localisation sur une carte ?

    • admin on 13 juil 2012

      Salut,

      Tant mieux si le tuto t’aide c’est le but :-D

      Je trouve ta question très intéressante, je vais y consacrer

      un tutoriel ces prochains jours.

      A bientôt

  7. zecat on 28 juil 2012

    Bravo pour ce tuto … une vraie aide et un vrai gain de temps lorsqu’on debut sur google map …

    Par contre, plutot que lat et long, ca serait cool d’avoir le tuto pour localiser quelque chose de plus naturel : une adresse : 25, avue de la Paix, Paris, France

    Si vous avez 3 minutes de libre ;-)

  8. Denis on 03 août 2012

    Bonjour,

    auriez vous un exemple de google maps Api V3 en PHP avec utilisation des marqueurs. En effet je galère à insérer des marqueurs en PHP, cela ne fonctionne pas. J’utilise du PHP car je travaille avec une base de données MySQL.
    Par avance Merci
    Denis

  9. thierry on 01 fév 2013

    un seul mot : BRAVO

  10. Amadou on 27 fév 2013

    Super le tuto. J’ai regretté d’avoir perdu mon temps a lire des tutos sur Google Map en anglais.
    Et merci aussi pour les liens


Laissez un commentaire


deux + 4 =