使用wrapX在范围中查找矢量源要素

时间:2016-12-30 17:19:48

标签: javascript openlayers-3

我目前在ol.source.Vector上有功能,我希望通过在屏幕上绘制一个框(MultiPolygon)来找到它。我目前有这个功能正常工作,但是,如果我移动到下一个渲染的世界("旋转地球"可以这么说),当我在同一组渲染的功能上绘制我的盒子时,我得不到任何回报。

示例代码:

var featureSource = new ol.source.Vector({
   url: '/ShinyService/feature/geoJson',
   format: new ol.format.GeoJSON()
});
var featureLayer = new ol.layer.Vector( {
   source: featureSource
});

var myMap = new ol.Map({
    layers: [ featureLayer],
    view: new ol.View({
        minZoom: 3,
        maxZoom: 10
    });
});

//Later within interaction event (draw end)
var boxExtent = box.getGeometry().getExtent();
vectorSource.forEachFeatureInExtent(boxExtent, function(feature){
    foundFeature.push(feature.getId());
});

我目前正在考虑唯一的解决方案"这是为了不再允许世界多次渲染,但我不认为这是我想要实现的要求的选择。

我目前正在使用Openlayers v3.18.2

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我能够解决我的问题。事实证明我必须"包装"我的范围的坐标,以便在它们经过-180到180边界时使其正常工作。一旦我这样做,每件事似乎都有效。

然而,这感觉就像在Openlayers中应该已经完成​​的那样,所以可能还有其他一些东西可能会丢失。