0

donc im faire, un peu de magie avec des polygones dans google maps. la chose est que im regarder des événements sur tous les chemins de polygone (pour détecter les changements sur les nœuds du polygone avec le « set_at » et « insert_at » événements) , je boucle sur un réseau de polygones et de créer cet événement (entre autres).getPath() google maps référence des événements au polygone parent

coffeescript

google.maps.event.addListener(polygon.getPath(), 'insert_at', (index) -> 

chaque polygone a un identifiant. mais à partir de cette portée, je ne peux pas accéder à l'élément parent, et j'ai besoin d'enregistrer les modifications du polygone modifié ... est-il possible d'obtenir l'ID du polygone parent à partir de cet écouteur d'événements?

+0

Pour Javascript, vous pouvez créer un 'indexID' lorsque vous créez un nouvel objet polygone , dans votre écouteur d'événement, vous pouvez simplement obtenir le 'indexID' pour chaque polygone, réponse Javascript: http://stackoverflow.com/a/15209277/4195406 – ztan

+0

J'ai résolu le problème en enveloppant tous les événements de noeud sur un événement de polygone. J'ai déjà une propriété d'index sur chaque polygone mais vous ne pouvez pas accéder aux propriétés de polygone sur les événements de noeud. le chemin est d'encapsuler les polygone.getPath() sur un événement onClick lié au polygone courant dans la boucle. Comme vous pouvez le voir, l'événement lié à la méthode .getPath() cause que la portée de l'événement doent avoir le polygone et ses propriétés. –

Répondre

0

Je suppose que polygonsArray est votre tableau de polygones, de sorte que votre boucle doit être comme ça ...

for (var u=0; u < polygonsArray.length; u++) { 
     var polygonOptions = { 
      fillColor: 'blue', 
      strokeWeight: 1, 
      name: "Any Name" 
     }; 

     // 1\ Creat polygon 
     var polygon = new google.maps.Polygon(polygonOptions); 
     // 2\ Set polygon path 
     var pathArr = polygonsArray['path']; 
     polygon.setPaths(pathArr); 

     //xxxxxxxxxxxxxxxxxxxxx MAGIC HERE xxxxxxxxxxxxxxxxxxxxxxxxxx 
     // 2.5\ Give polygon index as a path object new attribute 
     var path = polygon.getPath(); 
     path["parentIndex"] = u; 
     //xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

     // 3\ Add polygon to map 
     polygon.setMap(map); 

     // 4\ Add events to polygon 
     //Listen to any modification occures to the path 
     google.maps.event.addListener(polygon.getPath(), 'set_at', function() { 
       console.log(this["parentIndex"]); 
     }); 

     //Listen to new point inserted to the path 
     google.maps.event.addListener(polygon.getPath(), 'insert_at', function() { 
      console.log(this["parentIndex"]); 
     });    



    }//End of loop