Mapbox - 在会话

时间:2018-05-03 21:13:12

标签: mapbox mapbox-gl-js mapbox-gl

Mapbox网站上有几个tutorials数据驱动样式,但它们都没有解决如何在会话中更新现有的数据驱动样式(在Mapbox Studio中创建)。例如,假设我想创建一个按地区划分的美国各州的等值线。然后,用户选择“按人口颜色”,状态颜色会相应更新。

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

非常感谢任何想法或例子。

1 个答案:

答案 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中创建它们更简单。