地图框 - 在会话中更新数据驱动样式



Mapbox的网站上有几个关于数据驱动样式的教程,但没有一个教程涉及如何在会话中更新现有的数据驱动样式(在Mapbox Studio中创建(。例如,假设我想创建按区域着色的美国各州的分区统计。 然后,用户选择"按人口颜色",状态的颜色会相应地更新。

我找到了一些资源,可以通过添加所有州的 geojson 然后执行map.addLayer来实现这一点,但是我正在使用的 geojson(人口普查区域(太大而无法添加到前端,所以我需要更改现有图层的数据驱动样式(或找到类似的解决方法(。数据必须是来自 mapbox studio 的持久切片集,用户根据 geojson 属性更新数据着色。

任何想法或例子将不胜感激。

在运行时更新数据驱动的样式非常简单。您只需称map.setPaintProperty.

我通常使用一个生成属性值的函数来实现这一点。像这样:

function fillColorByPopulation(min, max) {
return {
property: 'pop',
stops: [
[min, 'red'],
[max, 'blue']
],
type: 'exponential'
}
}
function updateStyle(prop) {
if (prop === 'population') {
map.setPaintStyle('regions', 'fill-color', fillColorByPopulation(data.minpopulation, data.maxpopulation));
} else {
map.setPaintStyle('regions', 'fill-color', 'transparent');
}
}

我通常不会在Mapbox Studio中创建任何数据驱动的样式。在Javascript中创建它们更简单。

最新更新