Google map: Add click listener to each polygon

前端 未结 2 1771
小鲜肉
小鲜肉 2020-12-14 08:51

I am working on a webapplication. I have a google map, where I add polygons from an array. I loop through that array and add the polygons to the map. I also need to add an e

相关标签:
2条回答
  • 2020-12-14 09:09

    It's the normal behavior. There is two solutions that I can think of :

    1) I am sure you can find back the polygon from the context (I didn't test it):

    google.maps.event.addListener(polygon, 'click', function (event) {
      alert(this.indexID);
    });  
    

    2) You could also use some closures:

    var addListenersOnPolygon = function(polygon) {
      google.maps.event.addListener(polygon, 'click', function (event) {
        alert(polygon.indexID);
      });  
    }
    
    map = new google.maps.Map(document.getElementById('map_canvas'),
        mapOptions);
    //Loop on the polygonArray
    for (var i = 0; i < polygonArray.length; i++) {
        //Add the polygon
        var p = new google.maps.Polygon({
            paths: polygonArray[i],
            strokeWeight: 0,
            fillColor: '#FF0000',
            fillOpacity: 0.6,
            indexID: i
        });
        p.setMap(map);
        addListenersOnPolygon(p);
    }
    
    0 讨论(0)
  • 2020-12-14 09:32

    Move the code block inside the for-loop.

    //Add the click listener
        google.maps.event.addListener(p, 'click', function (event) {
            //alert the index of the polygon
            alert(p.indexID);
        });
    

    OR

    You add this to for-loop,

    p.addListener('click', clickSelection);
    

    and do this

    function clickSelection(){
    alert("Clicked");
    }
    
    0 讨论(0)
提交回复
热议问题