2017-05-02 47 views
0

我有OpenLayers v3的bug(無論V3是哪個版本)。我嘗試了ol.interaction.DragBox添加到我的地圖,但是當我開始拖移,ol.js有消息崩潰:Openlayers 3:Interaction DragBox不能正常工作

ol.js:201 Uncaught TypeError: Cannot read property 'f' of null

at Array. (ol.js:201) at zm (ol.js:245) at bq (ol.js:370) at aq.ve (ol.js:371) at W.l.Kn (ol.js:453) at oi.f (ol.js:142)

與v3.9.0 這裏使用時,這是是代碼:

var vectorSource = new ol.source.Vector({ 
     url: 'https://openlayers.org/en/v4.1.0/examples/data/geojson/countries.geojson', 
     format: new ol.format.GeoJSON() 
     }); 

var map = new ol.Map({ 
    target: 'map', 
    layers: [ 
      new ol.layer.Tile({ 
      source: new ol.source.OSM() 
      }), 
      new ol.layer.Vector({ 
      source: vectorSource 
      }) 
    ], 
    view: new ol.View({ 
    center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'), 
    zoom: 4 
    }) 
}); 

var dragBox = new ol.interaction.DragBox({ 
    condition: ol.events.condition.platformModifierKeyOnly 
}); 

map.addInteraction(dragBox); 

在這裏你可以找到一個小提琴:http://jsfiddle.net/3svztkot/2/

在這裏你可以找到一個V4.1.0撥弄,用完全相同的代碼,但在這裏它是完全運行! :http://jsfiddle.net/872cuk52/2/

有沒有關於這方面的一些已知的錯誤?我搜索了像我的以前的案例,但沒有成功。謝謝你的幫助 !

回答

1

好的,我找到了問題。這是問題的「原因」,也許以後會對其他人有用。

在V3的OpenLayers,你必須設置一個風格的互動,就像這樣:

var dragBox = new ol.interaction.DragBox({ 
    condition: ol.events.condition.shiftKeyOnly, 
    style: new ol.style.Style({ 
     stroke: new ol.style.Stroke({ 
      color: [0, 0, 255, 1] 
     }) 
    }) 
}); 

然後,它的工作原理。看來OpenLayers 4.1.0至少定義了交互的默認樣式,所以它不會崩潰。

+0

你應該接受它作爲一個有效的答案:) – Svinjica