我知道这个问题,这表明我对基于对象的编程的基本概念感到困惑,但是我希望有人可以对此提供帮助,因为我似乎无法解决这个问题:
function MagnifyGlass(){
var magnifiedTiles = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png');
var magnifyingGlass = L.magnifyingGlass({layers: [ magnifiedTiles ]});
this.magnifyingGlass = magnifyingGlass;
}
MagnifyGlass.prototype.begin=function(){
$("#map_canvas").mouseenter(function(){
this.magnifyingGlass.addTo(map);
}).mouseleave(function(){
map.removeLayer(this.magnifyingGlass);
});
}
MagnifyGlass.prototype.end=function(){
map.removeLayer(this.magnifyingGlass);
$("#map_canvas").unbind();
}
var mg= new MagnifyGlass();
mg.begin();
我要在这里发生的事情是,
MagnifyGlass
创建一个对象,该对象可以用作传单地图中的一个图层(位于div map_canvas
中)。然后通过调用.begin
或.end
切换是否显示该层。我正确地创建了图层(magnifyingGlass
),并且调用了.begin
,但是不知怎的,magnifyingGlass对象并没有使其成为原型,所以我很确定自己已经搞砸了。谢谢你的帮助。 最佳答案
这是一个范围问题。解决方法:
MagnifyGlass.prototype.begin=function(){
var self = this;
$("#map_canvas").mouseenter(function(){
self.magnifyingGlass.addTo(map);
}).mouseleave(function(){
map.removeLayer(self.magnifyingGlass);
});
}
正是LJ_1102所说的。