首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在运行时在react-native-mapbox-gl中显示/隐藏栅格图层(可见性属性visible/none)

如何在运行时在react-native-mapbox-gl中显示/隐藏栅格图层(可见性属性visible/none)
EN

Stack Overflow用户
提问于 2019-03-07 13:03:03
回答 3查看 1.6K关注 0票数 5

我已经在地图初始化中设置了自定义样式url。像这样:

代码语言:javascript
复制
<Mapbox.MapView
   styleURL="asset://mystyle.json"
   logoEnabled={false}
   attributionEnabled={false}
   ref={(e) => { this.oMap = e }}
   animate={true}
   zoomLevel={6}
   centerCoordinate={[54.0, 24.0]}
   style={{ flex: 1 }}
   showUserLocation={true}>
</Mapbox.MapView>

在mystyle.json中,我有两个基本映射,如下所示:

代码语言:javascript
复制
 {
      "id": "Satellite",
      "type": "raster",
      "source": "Satellite",
      "layout": {
        "visibility": "visible"
      },
      "paint": {
        "raster-opacity": 1
      }
    },
 {
      "id": "Satellite2",
      "type": "raster",
      "source": "Satellite",
      "layout": {
        "visibility": "none"
      },
      "paint": {
        "raster-opacity": 1
      }
    }

默认情况下,卫星是可见的。

如何在运行时将卫星属性的可见性设置为none,并将satellite2可见性设置为visible?

Mapbox gl:

代码语言:javascript
复制
"@mapbox/react-native-mapbox-gl": "^6.1.3"

原生React:

代码语言:javascript
复制
"react-native": "0.58.9",
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-03-10 18:40:33

最后我得到了解决方案:

代码语言:javascript
复制
constructor() {
   this.state = {
      lightMap: 'visible', 
      darkMap: 'none'
   };
} 

changeMap(){
   this.setState({darkMap:'visible'})
}

<MapboxGL.MapView
   styleURL="asset://mystyle.json"
   logoEnabled={false}
   attributionEnabled={false}
   ref={(e) => { this.oMap = e }}
   zoomLevel={6}
   centerCoordinate={[54.0, 24.0]}
   style={{ flex: 1 }}>

<MapboxGL.RasterSource
   id="idLightMap" 
   url="LAYERURL1"
   tileSize={256}>
   <MapboxGL.RasterLayer 
      id="idLightMap"
      sourceID="idLightMap"
      style={{visibility: this.state.lightMap}}>
   </MapboxGL.RasterLayer>
</MapboxGL.RasterSource>

<MapboxGL.RasterSource
   id="idDarkMap" 
   url="LAYERURL2"
   tileSize={256}>
   <MapboxGL.RasterLayer
      id="idDarkMap"
      sourceID="idDarkMap"
      style={{visibility: this.state.darkMap}}>
   </MapboxGL.RasterLayer>
</MapboxGL.RasterSource>

</MapboxGL.MapView>

我已经添加了栅格层和编程切换它。

票数 4
EN

Stack Overflow用户

发布于 2019-03-07 14:55:54

假设我们有一个状态isStateliteVisible:false

现在,当您想要可见性时,将此状态更改为true

像这样使用mapbox,

代码语言:javascript
复制
<Mapbox.MapView
   styleURL={this.state.isStateliteVisible?...visiblityStyle:....noneStyle} // use this as per your case
   logoEnabled={false}
   attributionEnabled={false}
   ref={(e) => { this.oMap = e }}
   animate={true}
   zoomLevel={6}
   centerCoordinate={[54.0, 24.0]}
   style={{ flex: 1 }}
   showUserLocation={true}>
</Mapbox.MapView>
票数 3
EN

Stack Overflow用户

发布于 2019-03-07 13:17:06

我可以看到您使用的是较旧的mapbox-gl折旧版本。此程序包已弃用,请改用this

安装

依赖关系

代码语言:javascript
复制
node
npm
React Native recommended version 0.50 or greater

Git

代码语言:javascript
复制
git clone git@github.com:mapbox/react-native-mapbox-gl.git
cd react-native-mapbox-gl

纱线

代码语言:javascript
复制
yarn add @mapbox/react-native-mapbox-gl

Npm

代码语言:javascript
复制
npm install @mapbox/react-native-mapbox-gl --save

你可以走了!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55036420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档