目前,我正在手动设置停靠点,但是我的GeoJSON文件具有不同的范围,因此每次都必须设置停靠点值。
是否可以在map.addLayer函数中使用属性的最小值和最大值?然后将其划分为一系列值?
我目前正在解析GeoJSON以获取最小值和最大值,并且不确定mapbox是否提供此功能。

map.addLayer({
    'id': 'heatmap',
    'type': 'circle',
    'source': "sourceGeoJSON",
    paint: {
        'circle-color': {
        property:'pH',
        stops: [
        [6,'#6879FB'],
        [8,'#68FB75'],
        [9, '#F94B18'],
        [10, '#F92918']
        ];
    },
    'circle-opacity': 1.0
    }
});

最佳答案

Mapbox-GL-JS不提供任何自动装箱功能。在一定范围内创建线性箱非常简单:

phvals = sourceGeoJSON.features.map(f => f.properties.pH);
min = Math.min(...phvals);
max = Math.max(...phvals);
range = max-min;

map.addLayer({
    'id': 'heatmap',
    'type': 'circle',
    'source': "sourceGeoJSON",
    paint: {
        'circle-color': {
        property:'pH',
        stops: [
        [min,'#6879FB'],
        [min + 1/3*range,'#68FB75'],
        [min + 2/3*range, '#F94B18'],
        [max, '#F92918']
        ];
    },
    'circle-opacity': 1.0
    }
});


要走得更远,请考虑在简单统计信息包中使用类似ckmeans函数的方法。

关于javascript - MAPBOX-如何在数据驱动样式中使用GeoJSON中的要素的最小值和最大值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46604668/

10-12 06:48