2014-11-14 84 views
0

我使用Openlayers 3作爲我的地圖應用程序。我需要確定用戶是否移動了地圖。經過一段時間的谷歌搜索後,我發現,應該是由地圖對象發起的「拖動」和「dragend」事件。不幸的是,它不會發生在我身上。我只接收移動事件,但當地圖移動時,它會被解僱 - 程序化或用戶操作。請你能幫我解決這個問題嗎?我的代碼是:Openlayers 3拖動事件

function _mappingAPI() 
{ 
    this.map = new ol.Map({ 
       target: 'map_cont', 
       controls: controls, 
       layers: [ 
        new ol.layer.Tile({ 
        source: new ol.source.OSM() 
         }) 
         ], 
       view: this.view 
     }); 

     this.map.on('moveend', function(evt){ 
      writeConsoleLog("DEBUG move end",3); 

     }); 


     this.map.on('dragend', function(evt){ 
      writeConsoleLog("DEBUG drag end",3); 

     }); 


     this.map.on('drag', function(evt){ 
      writeConsoleLog("DEBUG drag",3); 

     }); 
} 
+0

目前沒有這類活動。隨時爲此創建GitHub問題。 – erilem

+1

'pointerdrag'事件可能是你之後的事件。然而,當地圖不能被拖拽時,它也被觸發,例如,因爲你處於其範圍的邊緣。請注意,'drag'和'dragend'事件是OpenLayers 2,而不是3. – ahocevar

+0

是的,pointerdrag適用於我 - 我剛剛在幫助頁面找到未選中「穩定版本」的「奇蹟」...;)。非常感謝。 –

回答

0

用戶Openlayers.Control.DragPan的控制,而不是,就像如下:

var dragcontrol = new OpenLayers.Control.DragPan({ 
      'map': mapObj, 'panMapDone': function (evt) 
      { 
       alert('drag'); 
      } 
     }); 
     dragcontrol.draw(); 
     mapObj.addControl(dragcontrol); 
     dragcontrol.activate(); 

阻力後,將火panMapDone事件,並顯示 '拖拽'。

+0

也許你可以把它放在一個工作jsfiddle? –

+0

看起來不相關,因爲問題涉及到Openlayers 3,而不是Openlayers 2 –