geoxml3 добавление событий на метки

Я пытаюсь добавить события в метки, но получаю сообщение об ошибке «Документы не определены». Когда я пытаюсь предупредить имена меток, они работают нормально, так почему бы и не события?

var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var geoXml = new geoXML3.parser({
        map: this.map,
        singleInfoWindow:true,
                    afterParse: this.useTheData

    });  

            geoXml.parseKmlString(<my kml string>);
    google.maps.event.addListener(this.map, "bounds_changed", RefreshMap);
    google.maps.event.addListener(this.map, "center_changed", RefreshMap);
    google.maps.event.addListener(this.map, "zoom_changed", RefreshMap);

},
 useTheData: function(doc) {
  for (var i = 0; i < doc[0].placemarks.length; i++) {
  docs[0].placemarks[i].events.add("click", function () {alert("event!!");});
  //alert(docs[0].placemarks[i].name);
}
}

person user2837961    schedule 04.03.2014    source источник


Ответы (1)


"документы" не определены. Локальная версия - "doc".

.placemark — это JSON-представление Placemark, а не объект Google Maps, который будет обрабатывать события кликов.

Он содержит ссылку на объект Google Maps (.placemark.marker для маркера), к которому вы можете добавить прослушиватель событий щелчка.

var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var geoXml = new geoXML3.parser({
        map: this.map,
        singleInfoWindow:true,
                    afterParse: this.useTheData

    });  

    geoXml.parseKmlString(<my kml string>);
    google.maps.event.addListener(this.map, "bounds_changed", RefreshMap);
    google.maps.event.addListener(this.map, "center_changed", RefreshMap);
    google.maps.event.addListener(this.map, "zoom_changed", RefreshMap);

},
  useTheData: function(doc) {
   for (var i = 0; i < doc[0].placemarks.length; i++) {
     google.maps.event.addListener(
       doc[0].placemarks[i].marker,
       "click", 
       function () {alert("event!!");
     });
   //alert(docs[0].placemarks[i].name);
   }
}
person geocodezip    schedule 04.03.2014
comment
событие click не работает для меня. у меня есть doc[0].placemarks[i], но нет doc[0].placemarks[i].marker. как я могу заставить его работать как kmllayer, когда я нажимаю на полигон? - person shorif2000; 03.12.2014
comment
Многоугольник не имеет свойства .marker, у него есть свойство .polygon, которое содержит ссылку на google.maps.Polygon, связанный с этой меткой. - person geocodezip; 03.12.2014