banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 09 November 2015 14:45

Xavier Julian
Participant assidu
Lieu: Orange
Date d'inscription: 19 Jan 2015
Messages: 218

[API Google Maps] Ajouter InfoWindows sur couche de Polygon

Bonjour à tous,

J'ai commencé un début de code pour créer une carte avec des polygones via l'API de Google Maps.
Jusqu'ici tout va bien, je me débrouille avec la documentation fournie par Google :
https://developers.google.com/maps/docu … ipt/shapes

Je voudrais qu'une infobulle apparaisse quand on clique sur le polygone.
Après plusieurs tentatives de rendre tout mon polygone cliquable, je me resous à faire apparaitre une infoWindow au centroïde de mes polygones, mais ça ne marche toujours pas.
Voilà un extrait du code avec un seul polygone : des idées ?

Code:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" /> 
        <style type="text/css">
        html, body { height: 100%; margin: 0; padding: 0; }
        #map { height: 100%; }
        </style> 
    </head>

    <body>
        <div id="map"></div>
            
            <script async defer
            src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkrMsjLURCPzjNxAdELrACsxRayqLjaxc&callback=initMap">
            </script> //clé personnelle fournie par Google
            
            <script type="text/javascript">
                function initMap() 
                {
                    var mapOptions = {
                        center: {lat: 44.6, lng: 4.8},
                        zoom: 8,
                        mapTypeId: google.maps.MapTypeId.TERRAIN //attention pas de virgule à la dernière propriété
                    }; //option de la carte : centroide, niveau de zoom, type de fond)
                        
                    var map = new google.maps.Map(document.getElementById('map'), mapOptions
                    ); //initialisation du fond de carte google et renvoi aux options ci-dessus. Ma carte s'appelle désormais 'map'
                                
                    var TDCDPCoords = [
                        {lat:44.1357727338, lng:4.80827009788},
                        {lat:44.1194285955, lng:4.8362333205},
                        .../...
                        {lat:44.1323322384, lng:4.80547377562},
                        {lat:44.1357727338, lng:4.80827009788} 
                    ]; //sommets du polygone
                    
                    var TDCDP = new google.maps.Polygon({
                        paths: TDCDPCoords, //renvoi vers les coordonnées du polygone (sommets)
                        strokeColor: 'B378D3', //couleur des bords du polygone
                        strokeOpacity: 0.8, //opacité des bords du polygone
                        strokeWeight: 1, //épaisseur des bords du polygone
                        fillColor: 'B378D3', //couleur de remplissage du polygone
                        fillOpacity: 0.35, //opacité de remplissage du polygone
                        name:'TERRASSE DE CHATEAUNEUF-DU-PAPE' //nom du polygone
                    });
                                        
                    TDCDP.setMap(map); //ceci permet au polygone TDCDP d'être affiché sur la carte (nommée 'map')
                                            
                    google.maps.event.addListener(TDCDP, 'click', function() {
                        infoWindow.open(map);
                        infoWindows.setPosition (44.248654, 4.9825);
                        infoWindow.setContent('TERRASSE DE CHATEAUNEUF-DU-PAPE');
                    }); //indique que le polygone réagit au clic en ouvrant une infobulle, fixe sa position et son contenu
                                        
                }
            </script>
    </body>
</html>

Merci par avance.

Hors ligne

 

#2 Thu 12 November 2015 16:17

Xavier Julian
Participant assidu
Lieu: Orange
Date d'inscription: 19 Jan 2015
Messages: 218

Re: [API Google Maps] Ajouter InfoWindows sur couche de Polygon

Pour ceux que ça intéresse, j'ai trouvé la solution à l'aide d'un ami.
Il faut appeler une variable infoWindows en amont des polygones comme ceci :

Code:

var infoWindow = new google.maps.InfoWindow(); //initialisation de la fonction infobulle
var map = new google.maps.Map(document.getElementById('map'), mapOptions); //initialisation du fond de carte google et renvoi aux options

puis configurer chacune des infobulles des différents polygones comme cela :

Code:

google.maps.event.addListener(mon_polygone, 'click', function(e) { //ajout d'un évènement qui réagit au clic de la souris sur le polygone mon_polygone
   infoWindow.open(map);
   infoWindow.setPosition (e.latLng); //l'infobulle se met à jour là où on clique
   infoWindow.setContent('blablabla');//contenu de l'infobulle
};

Dernière modification par Xavier Julian (Thu 12 November 2015 16:23)

Hors ligne

 

Pied de page des forums

Powered by FluxBB