我想将google地图多边形(google.maps.Polygon)和地图(google.maps.Map)封装到javascript对象中,并为多边形和地图处理一些事件。这是一些代码
function Landmark(map, polygon) {
this.map = map;
this.polygon = polygon;
// Add a listener for the click event
google.maps.event.addListener(this.map, 'click', this.addPoint);
google.maps.event.addListener(this.polygon, 'click', this.addPoint);
addPoint = function (event) {
alert("xxx");
}
}
我使用以下方法调用了函数:
var myLatLng = new google.maps.LatLng(24.886436490787712, -70.2685546875);
var myOptions = {
zoom: 5,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
polygonInTest = new google.maps.Polygon({
strokeColor: "#FF0000",
strokeOpacity: 0.8,
strokeWeight: 2,
fillColor: "#FF0000",
fillOpacity: 0.35
});
polygonInTest.setMap(map);
var landmark = new Landmark(map, polygonInTest);
但是当我触发事件时,通过点击地图,我从firebug得到了这个错误:
f.e is undefined
[Break On This Error] function de(a,b){var c,d=a.__e3_||{};i...n"+b]=c,c=new ce(a,b,c,3));return c};
有谁能指出我哪里做错了并提出一些建议?任何评论或帮助表示赞赏。
提前致谢。
答案 0 :(得分:0)
我最好的猜测是,当你创建一个事件监听器时
google.maps.event.addListener(this.map, 'click', this.addPoint);
您的处理程序尚未定义(即您稍后定义addPoint
),因此在addListener()
调用this.addPoint
时undefined
为{{1}}。当GM到处理程序被调用时,GMaps会搞砸。
至少我是通过查看你的代码来实现我在这一点上遇到问题的方法:)