我知道这个问题,这表明我对基于对象的编程的基本概念感到困惑,但是我希望有人可以对此提供帮助,因为我似乎无法解决这个问题:

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所说的。

09-10 18:29