上一篇地图编程过程中,循环绘制多边形覆盖物(土地),在每一个覆盖物绘制完成的同时添加覆盖物点击函数,由于地图接口不支持给覆盖物添加ID等属性接口,所以绘制的覆盖物点击是不能获取覆盖物id,也就不能通过点击获得覆盖物土地在数据库的信息,所以只能在循环绘制覆盖物的同时给每一个覆盖物添加点击事件,点击事件中记录覆盖物id,然后通过id查询覆盖物数据库信息,但是结果令人大失所望,这种方法所有覆盖物的点击事件的id都是和最后绘制的覆盖物id一样,经过多番查阅用JavaScript闭包函数得以解决,以前看到闭包觉得没有用,今天终于体会到其中奥秘了。
var dblclickFunction = function (i) {//鼠标双击事件
return function (event) {
console.log(i);
//将点增加到视野范围内
var path = polygon.getPath();//双击放大视野
borderArray = borderArray.concat(path);
};
}(arr[i-1].bordercode);
polygon.addEventListener('click',clickFunction);//鼠标点击事件
JavaScript闭包函数可以把传进去的变量保存下来,这就是他的有点之一。