簡體   English   中英

Openlayers 3:交互DragBox不起作用

[英]Openlayers 3 : Interaction DragBox not working

我在OpenLayers v3中有一個錯誤(無論它在V3中是哪個版本)。 我嘗試將ol.interaction.DragBox添加到地圖中,但是當我開始拖動時,ol.js崩潰並顯示以下消息:

ol.js:201未捕獲的TypeError:無法讀取null的屬性'f'

在陣列。 (ol.js:201)在zm(ol.js:245)在bq(ol.js:370)在aq.ve(ol.js:371)在ok.n(ol.js:453)在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/

是否有一些已知的錯誤? 我搜索了以前的案例,例如我的案例,但沒有成功。 謝謝你的幫助 !

好的,我發現了問題。 這是問題的“原因”,也許以后對其他人有用。

在Openlayers v3中,您必須在交互中設置樣式,如下所示:

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至少為交互定義了默認樣式,因此不會崩潰。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM