Mapbox网站上有几个tutorials数据驱动样式,但它们都没有解决如何在会话中更新现有的数据驱动样式(在Mapbox Studio中创建)。例如,假设我想创建一个按地区划分的美国各州的等值线。然后,用户选择“按人口颜色”,状态颜色会相应更新。
我找到了一些resources,可以通过添加所有状态的geojson然后执行map.addLayer
来实现这一点,但是我正在使用的geojson(人口普查区)是太大而无法添加到前端,因此我需要更改现有图层的数据驱动样式(或找到类似的解决方法)。数据必须是来自mapbox studio的持久tileset,用户可以根据geojson属性更新数据着色。
非常感谢任何想法或例子。
答案 0 :(得分:1)
在运行时更新数据驱动的样式非常简单。您只需致电export const ScreensStack = StackNavigator(
{
Login: {screen: LoginScreen},
Schedule: {screen: ScheduleScreen},
}
/**
* Intercept actions occuring in the screen stack.
*/
const getStateForActionScreensStack = ScreensStack.router.getStateForAction;
ScreensStack.router = {
...ScreensStack.router,
getStateForAction(action, state) {
if (action.type == 'Navigation/BACK') {
console.log('We are going back...');
}
return getStateForActionScreensStack(action, state);
},
};
。
我通常使用一个生成属性值的函数来实现它。像这样:
map.setPaintProperty
我通常不会在Mapbox Studio中创建任何数据驱动的样式。在Javascript中创建它们更简单。