IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Mise en place MarkerCluster [Google Maps]


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut Mise en place MarkerCluster
    Bonjour à tous et à toutes,
    Je ne maîtrise pas encore très bien Javascript,
    J'ai à ce jour un souci avec le groupement de marqueurs via google.. J'ai beau regarder la documentation je ne comprends pas très bien ce qui coince dans mon code.. (ayant de grosses lacunes en anglais ça n'aide pas, autant dans la doc que sur les forums étrangers..)

    Je veux appliquer le markerclustering sur ma map et je n'y parviens pas.

    Voilà mon fichier markers.js (fonctionne très bien jusqu'à la ligne 16 donc) :
    Nom : Capture d’écran 2019-03-29 à 12.54.27.png
Affichages : 326
Taille : 85,4 Ko

    Voilà mon fichier map.js :
    Nom : ttt.png
Affichages : 340
Taille : 112,3 Ko

    Et mon fichier main :
    Nom : Capture d’écran 2019-03-29 à 12.55.24.png
Affichages : 298
Taille : 11,4 Ko


    Si quelqu'un peut jeter un oeil ce serait top !
    Merci beaucoup !!

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour et bienvenue sur DVP.

    Il est préférable de mettre directement le code dans la discussion en l'encadrant par des balises bbcode [CODE][/CODE].

    A voir Aide sur l'utilisation des boutons.

    Concernant ton soucis je commencerais par mettre une virgule en fin de ligne 12.

  3. #3
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Merci, je vais lire un peu le fonctionnement du forum, j'étais trop pressée de trouver une solution à mon souci aha ^^

    J'ai ajouté la virgule, merci pour ce point j'avais pas fait attention.
    Mais mon souci est toujours présent..

    Je remets mon code avec les balises!

    Map.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    var createMap = {
        url: "https://api.jcdecaux.com/vls/v1/stations?contract=Lyon&apiKey=monapi",
        map: null,
        initMap: function () { // Creation Map
            "use strict";
            this.map = new google.maps.Map(document.getElementById('map'), {
                center: {lat: 45.750000, lng: 4.850000},
                zoom: 15
            });
        },
     
        setMarker: function () { // Creation marqeurs
            "use strict";
            var manager = Object.create(MarkerManager);  // Creation objet avec MarkerManager prototype
     
            ajaxGet(this.url, function (reply) {
                var locations = JSON.parse(reply);       // Creation array avec la réponse de l'API
     
                locations.forEach(function (location) {   // For each "location" de l'array "locations"
                    MarkerManager.init(location);              // Creation d'un nouveau marqueur
                    //manager.showDetails(location);       // Montrer les détails du marqueur au clic
                });
                manager.pushMarker();                    // Creation du MarkerClusterer
            });
        }
    };
    Markers.js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    var MarkerManager = {
        markers: [],
        init: function (location) {                             // Créé un nouveau marqueur
            "use strict";
            marker = new google.maps.Marker({
                map: createMap.map,
                position: location.position,
                title: location.name,
                icon: "images/biker_green.png"
            });
            MarkerManager.markers.push(MarkerManager.marker);    // Ajoute le marqueur à l'array "markers"
        },
     
     
     
    pushMarker: function () { // Créé le MarkerClusterer
        "use strict";
            var markerCluster = new MarkerClusterer(createMap.map, MarkerManager.markers,
                    {imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
        }
    };

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Il nous manque des infos pour pouvoir tester, on ne sait pas ce que fait vraiment ta fonction ajaxGet mais on va supposer qu'elle retourne bien ce que tu exploites.

    • Pour moi la méthode setMarker devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    setMarker: function() {                             // Creation marqeurs
        "use strict";
        var manager = Object.create(MarkerManager);     // Creation objet avec MarkerManager prototype
     
        ajaxGet(this.url, function(reply) {
            var locations = JSON.parse(reply);          // Creation array avec la réponse de l'API
            locations.forEach(function(location) {      // For each "location" de l'array "locations"
                //MarkerManager.init(location);         // Creation d'un nouveau marqueur
                manager.init(location);                 // Creation d'un nouveau marqueur
                //manager.showDetails(location);        // Montrer les détails du marqueur au clic
            });
            manager.pushMarker();                       // Creation du MarkerClusterer
        });
    }
    tu devrais trouver la différence.

    • Concernant la méthode init de l'objet MarkerManager, tu initialises un markers mais tu ne l'ajoutes pas, ce n'est pas le bon.

    Cela devrait ressembler à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    var MarkerManager = {
        markers: [],
        // Créé un nouveau marqueur
        init: function(location) {
            "use strict";
            var marker = new google.maps.Marker({
                // marker = new google.maps.Marker({
                map: createMap.map,
                position: location.position,
                title: location.name,
                icon: "images/biker_green.png"
            });
            // Ajoute le marqueur à l'array "markers"
            this /*MarkerManager*/ .markers.push(marker);
            // MarkerManager.markers.push(MarkerManager.marker);
        },
     
        pushMarker: function() { // Créé le MarkerClusterer
            "use strict";
            var markerCluster = new MarkerClusterer(createMap.map, this /*MarkerManager*/ .markers, {
            //var markerCluster = new MarkerClusterer(createMap.map, MarkerManager.markers, {
                imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
            });
        }
    };
    On pourrait faire autrement en déclarant une propriété marker à ton objet mais bon.

    Au passage les noms sont à mon sens mal choisis, init devrait être add, pushMarker devrait être attach par exemple, mais c'est du détail.

    Une dernière chose, j'ajouterais dans la méthode initCarte l'appel à la méthode setMarker mais tu dois quoiqu'il arrive l'appeler ailleurs.

    Encore un dernier point, tu sais que tu peux faire la même chose avec Leaflet par exemple

  5. #5
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Hello,
    Merci pour ta réponse,
    Je regarde tout ça ce soir !

  6. #6
    Membre confirmé Avatar de Elztx
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 72
    Par défaut
    Hello,

    Je viens donner des news et surtout te remercier.
    Merci beaucoup x1000.

    Je passe le sujet en !

    Je comprends pas toujours ce que j'applique en JS, j'ai beaucoup de mal, j'espère que ça ira pour la suite, sinon à très vite aha

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AD]Mise en place de Active Directory
    Par guiguisi dans le forum Windows Serveur
    Réponses: 9
    Dernier message: 29/07/2004, 08h50
  2. [C#] Mise en place d'un site multilingue
    Par regbegpower dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/03/2004, 19h15
  3. mise en place serveur web intranet
    Par gui4593 dans le forum Installation
    Réponses: 7
    Dernier message: 01/01/2004, 18h18
  4. Mise en place d'index....??
    Par liv dans le forum Requêtes
    Réponses: 6
    Dernier message: 18/12/2003, 11h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo