【问题标题】:OpenLayers 3 get extent of all feature contents in a listOpenLayers 3获取列表中所有功能内容的范围
【发布时间】:2015-05-03 20:05:58
【问题描述】:

我想放大列表中包含的所有要素的范围。

首先,我将我的功能放在一个列表中:

selectedFeatures = [];    
vector2.getSource().forEachFeature(function(feature) {
                var att = feature.get("NOM");
                if (att == strUser) {
                    selectedFeatures.push(feature);
                    }
                });

其次,这是我的问题...我想放大列表“selectedFeatures”中所有功能的范围

我试试这个,但总是给我无限的回报:

var vectorSource = new ol.source.Vector({
        projection: 'EPSG:3857',
        features: selectedFeatures //add an array of features
        });

var dataExtent = vectorSource.getExtent();
map.getView().fitExtent(dataExtent, map.getSize())
console.log("Extents : " + dataExtent);

有人有解决方案来获取列表中包含的功能范围吗?

【问题讨论】:

  • 实际上vectorSource.getExtent() 应该可以正常工作。你的特征坐标可能有问题吗?
  • 我选择的功能有问题。我能够获得每个功能的范围,但是一旦我将它们放在我的列表“selectedFeatures”中,我就无法获取有关此功能的信息。当我在新的矢量源上添加功能时,我可能做错了吗? (我的数据是GeoJSON格式)
  • 也许您可以创建一个 JSFiddle,其中包含一些您遇到此问题的功能?
  • 了解您使用的 OpenLayers 3 版本可能也很有用。
  • 我有 3.4.0 版本,我会寻找一个 JSFiddle,我从来没有玩过它

标签: javascript openlayers-3


【解决方案1】:

这应该可以解决问题吗?

var extent = features[0].getGeometry().getExtent().slice(0);
features.forEach(function(feature){ ol.extent.extend(extent,feature.getGeometry().getExtent())});

【讨论】:

  • 可能会被更新为使用在迭代步骤中跳过第一个元素的 for 循环
  • "Features" = 我的功能列表 (selectedFeatures)?如果是这种情况,它在您的第一行不起作用。它告诉我 getExtent() 不是一个函数。
  • 抱歉,复制粘贴有点太快了。记得检查特征是否有超过 0 个元素等。
猜你喜欢
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多