明白了!
什么得到它的工作是:
dragcontrol = new OpenLayers.Control.DragPan({'map':this.mymap, 'panMapDone':function(evt){
this.userdragged = true;
console.log('drag');
}});
dragcontrol.draw();
this.mymap.addControl(dragcontrol);
dragcontrol.activate();
Booyaka!
编辑: 其实this.userdragged不会在那里工作...这是不同的范围。你需要做一些类似var = this的事情;之前,该对象初始化和使用that.userdragged = true ...
编辑2: 我后来发现,这个panMapDone函数覆盖DragPans自己的方法,它具有相同的名称。就像我之前的例子一样,当用户拖动地图时,最终可能会导致地图的矢量功能与地图不同步。为了阻止这种情况发生,你应该在原有的功能复制到功能太...使它看起来类似的东西:
dragcontrol = new OpenLayers.Control.DragPan({'map':this.mymap, 'panMapDone':function(xy){
if(this.panned) {
var res = null;
if (this.kinetic) {
res = this.kinetic.end(xy);
}
this.map.pan(
this.handler.last.x - xy.x,
this.handler.last.y - xy.y,
{dragging: !!res, animate: false}
);
if (res) {
var self = this;
this.kinetic.move(res, function(x, y, end) {
self.map.pan(x, y, {dragging: !end, animate: false});
});
}
this.panned = false;
}
that.userdragged = true;
// do whatever you want here
}});
dragcontrol.draw();
this.mymap.addControl(dragcontrol);
dragcontrol.activate();
艾伦
很棒,你得到它的工作! draw()函数对解决方案有什么作用? – 2011-04-08 07:20:47
绘制创建并激活实际处理程序。 http://dev.openlayers.org/docs/files/OpenLayers/Control/DragPan-js.html [quote] draw - 创建一个Drag处理函数,使用panMap和panMapDone作为回调。[/ quote] – 2011-04-08 08:45:32