我知道这个问题,我正在展示我对基于对象编程的基本概念的困惑,但我希望有人可以帮助我,因为我似乎无法绕过它:< / p>
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
,但不知何故,enlargeGlass对象并没有使它成为原型,我很确定我搞砸了这个&#不知何故。谢谢你的帮助。
答案 0 :(得分:1)
这是一个范围问题。这是一个修复:
MagnifyGlass.prototype.begin=function(){
var self = this;
$("#map_canvas").mouseenter(function(){
self.magnifyingGlass.addTo(map);
}).mouseleave(function(){
map.removeLayer(self.magnifyingGlass);
});
}
正是LJ_1102所说的。