Google将event.addListener对象映射为undefined

时间:2016-06-09 09:26:55

标签: javascript jquery google-maps geocoding

我在google地图多边形中注册了一个带有doubleclick事件的eventListener,但是如果我将一个调试器放在将在dblclick上执行的de函数中,我就无法捕获点击的多边形,对象' newPolygon'未定义。

问题是我有一组多边形,我需要知道点击了什么

  var newPolygon = drawPolygon(map, p.cordenadas, true, false, false, "#FF0000", 0.35, "#FF0000", 0.8, 2);

  var listener = google.maps.event.addListener(newPolygon, 'dblclick', function (e) {
            //newPolygon = undefined
            debugger;
        });

drawPolygon函数:

function drawPolygon(map, paths, clickable, draggable, editable, fillColor, fillOpacity, strokeColor, strokeOpacity, strokeWeight) 
{
polygon = new google.maps.Polygon({
    paths: paths,
    strokeColor: strokeColor,
    strokeOpacity: strokeOpacity,
    strokeWeight: strokeWeight,
    fillColor: fillColor,
    fillOpacity: fillOpacity,
    editable: editable,
    clickable: clickable,
    draggable: draggable,
    map: map,
});
var firstCoord = paths[0];
map.setCenter(firstCoord);
return polygon;
}

1 个答案:

答案 0 :(得分:0)

点击侦听器功能中对多边形的引用为/proc/kallsyms

init_task

代码段

this
var listener = google.maps.event.addListener(newPolygon, 'dblclick', function (e) {
        for (var i=0; i<this.getPaths().getAt(0).getLength();i++) {
        console.log(this.getPaths().getAt(0).getAt(i).toUrlValue());
        }
        debugger;
    });
var geocoder;
var map;

function initialize() {
  var map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  var triangleCoords = [{
    lat: 25.774,
    lng: -80.190
  }, {
    lat: 18.466,
    lng: -66.118
  }, {
    lat: 32.321,
    lng: -64.757
  }, {
    lat: 25.774,
    lng: -80.190
  }];
  var newPolygon = drawPolygon(map, triangleCoords, true, false, false, "#FF0000", 0.35, "#FF0000", 0.8, 2);

  var listener = google.maps.event.addListener(newPolygon, 'dblclick', function(e) {
    for (var i = 0; i < this.getPaths().getAt(0).getLength(); i++) {
      console.log(this.getPaths().getAt(0).getAt(i).toUrlValue());
    }
    debugger;
  });
}
google.maps.event.addDomListener(window, "load", initialize);

function drawPolygon(map, paths, clickable, draggable, editable, fillColor, fillOpacity, strokeColor, strokeOpacity, strokeWeight) {
  polygon = new google.maps.Polygon({
    paths: paths,
    strokeColor: strokeColor,
    strokeOpacity: strokeOpacity,
    strokeWeight: strokeWeight,
    fillColor: fillColor,
    fillOpacity: fillOpacity,
    editable: editable,
    clickable: clickable,
    draggable: draggable,
    map: map,
  });
  var firstCoord = paths[0];
  map.setCenter(firstCoord);
  return polygon;
}