明白了!
什麼得到它的工作是:
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