gpt4 book ai didi

javascript - 如何获取开放层中向量层内的向量元素数量3

转载 作者:行者123 更新时间:2023-12-02 18:47:47 24 4
gpt4 key购买 nike

有人知道如何计算 OL3 矢量图层中存在的特征数量吗?

我的矢量图层定义如下,我想知道它有多少个元素,以及理想情况下当前正在渲染多少个元素:

var styleCache = {};
var WFS_layer_Traffic_Lights = new ol.layer.Vector({
source : new ol.source.GeoJSON({
projection : 'EPSG:3857',
url : "Vector_Data/Traffic_Lights_Bordeaux.geojson"
}),


style : function(feature, resolution) {

var path;
var x_anchor;
var y_anchor;

if(resolution < 4){
path = 'Icons/Traffic_Lights_Sign_Icon_Small.png';
x_anchor = 23;
y_anchor = 90;
}
if(resolution >= 4 && resolution < 10){
path = 'Icons/Traffic_Lights_Sign_Small.png';
x_anchor = 16;
y_anchor = 16;
}
if(resolution >= 10){
path = 'Icons/Traffic_Lights_Sign_Tiny.png';
x_anchor = 10;
y_anchor = 10;
}


if (!styleCache[path]) {
styleCache[path] = [new ol.style.Style({
fill : new ol.style.Fill({
color : 'rgba(255, 255, 255, 0.1)'
}),
stroke : new ol.style.Stroke({
color : '#319FD3',
width : 1
}),
image: new ol.style.Icon(({
anchor: [x_anchor, y_anchor],
anchorXUnits: 'pixels',
anchorYUnits: 'pixels',
src: path
})),
text : new ol.style.Text({
font : '12px Calibri,sans-serif',
text : "",
fill : new ol.style.Fill({
color : '#000'
}),
stroke : new ol.style.Stroke({
color : '#fff',
width : 4
})
}),
zIndex : 1
})];
}
return styleCache[path];
}
});

最佳答案

加载 (GeoJSON) 要素后,您可以在矢量源上调用 getFeatures 以获取包含矢量源中包含的要素引用的数组。因此,要获取功能数量,您可以使用以下命令:

var featureCount = vectorLayer.getSource().getFeatures().length;

如上所述,应加载源才能使其工作。如果您将 url 选项传递给源构造函数,源将使用 Ajax 请求来下载功能。这是异步发生的,这意味着源在构造后将不包含功能。

您可以在矢量源上注册一个 change 监听器以了解其加载时间:

var vectorSource = vectorLayer.getSource();
var listenerKey = vectorSource.on('change', function(e) {
if (vectorSource.getState() == 'ready') {
var featureCount = vectorSource.getFeatures().length;
// ...
ol.Observable.unByKey(listenerKey);
// use vectorSource.unByKey(listenerKey) instead
// if you do use the "master" branch of ol3
}
});

编辑:我对此进行了编辑,将事件名称从 change:state 更改为 change

关于javascript - 如何获取开放层中向量层内的向量元素数量3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com