OpenLayers,获取聚集点的val

时间:2013-12-07 01:21:37

标签: openlayers gis

我正在使用WMS叠加层和许多标记处理地图,我的问题是当我尝试计算聚类点的平均值时,我发现如何根据数字来区分行为和标签文本聚类元素,但我不知道如何达到每个聚类点的“val”值来计算它们的平均值并显示在聚集点中。

我认为值是进入features.cluster数组(如果我用.toString()调查它我得到不同数量的[对象] [对象],[对象] [对象]等),但我无法理解如何达到这些价值观。

这是上下文代码:

context: {
    val: function(feature) { 
       if(feature.attributes.count>1) {
           [here I should show the average]
       } else return feature.attributes.val; 
    },
[...]

这只是OpenLayers.Style代码中的一些代码:

var pointStyle = new OpenLayers.Style({
    strokeWidth: "${strokeFunction}",
    fillColor: "${fillFunction}",
    label: "${val}",
    [...]

不要认为这是必需的,但这是我设置val变量的点代码:

[...]
var pointFeature = new OpenLayers.Feature.Vector(point);
     pointFeature.attributes = {
         val: mks[i].m,
         align: "cm"
     };

(mks [i] .m是我从JSON数组得到的值,它是一个带小数的数字)

我非常感谢您提供的任何帮助, 阿尔贝托

1 个答案:

答案 0 :(得分:0)

我已经在gis.stackexchange上回答了 这是链接:https://gis.stackexchange.com/questions/79788/openlayers-get-clustered-points-val

这就是我所需要的(将feature.cluster [i] .attributes视为数组):

var sumValue = 0;
for (var i=0; i<feature.cluster.length; i++) {
    sumValue += feature.cluster[i].attributes['val'];
}
var averageValue = sumValue/feature.cluster.length;
return averageValue;

感谢明峰