我正在使用大量 10.000+ 的标记,它们都应该是可点击的。目前我为每个标记创建一个单独的回调函数,它是我需要的所有数据的闭包。我试图阻止创建 10.000 个函数,它们都做同样的事情并将我需要的数据作为参数传递给 cb 函数,但这似乎是不可能的。
但是无论如何,有一种方法可以将数据获取到回调函数。'This' 在 cb 函数中指向实际单击的标记,如果我将它们附加到标记对象,我可以访问所需的数据。这很脏,但它似乎工作。
但这会导致更多问题:我怀疑这会导致内存泄漏。我在标记代表的对象中引用标记,例如 obj.marker,但是要访问 cb 函数中的对象,我必须引用像 marker.obj 这样的对象
// Callback function for clicks on markers
function cb(e){
console.log(e); // the event with information about marker position
console.log(this.obj); // the object the marker stands for
}
//add a eventListener to the marker which represents a object
this.initMarkerListener = function(obj) {
obj.marker.obj = obj; //the critical point
google.maps.event.addListener(obj.marker, 'click', cb);
};
这会造成内存泄漏吗?我可以通过其他技术将所需的数据传递给回调函数吗?