.getPath() ссылка на события google maps на родительский полигон

так что я делаю, немного магии с полигонами в картах Google. дело в том, что я наблюдаю за событиями на каждом пути многоугольника (чтобы обнаруживать изменения в узлах многоугольника с помощью событий «set_at» и «insert_at»), я зацикливаюсь на массиве полигонов и создаю это событие (среди прочего)

кофескрипт

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

каждый полигон имеет идентификатор. но из этой области я не могу получить доступ к родительскому элементу, и мне нужно сохранить изменения из измененного многоугольника... есть ли способ получить идентификатор родительского многоугольника из этого прослушивателя событий?


person Mijail Cohen    schedule 05.10.2015    source источник
comment
Для Javascript вы можете создать indexID при создании нового объекта многоугольника, в прослушивателе событий вы можете просто получить indexID для каждого многоугольника, ответ Javascript: stackoverflow.com/a/15209277/4195406   -  person ztan    schedule 05.10.2015
comment
Я решил проблему, обернув все события узла в событие полигона. У меня уже есть свойство индекса для каждого полигона, но вы не можете получить доступ к свойствам полигона в событиях узла. способ состоит в том, чтобы обернуть события polygon.getPath() в событие onClick, привязанное к текущему многоугольнику в цикле. Как видите, событие привязано к методу .getPath(), потому что в области действия события нет полигона и его свойств.   -  person Mijail Cohen    schedule 05.10.2015


Ответы (1)


Я предполагаю, что polygonsArray - это ваш массив полигонов, поэтому ваш цикл должен быть таким...

    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
person Husam    schedule 02.06.2016