Android 在本机映射中切换映射类型
我在IOS和Android上都使用谷歌的react本地地图。 有没有办法在react native expo应用程序中启用像谷歌地图应用程序那样的Android 在本机映射中切换映射类型,android,ios,react-native,react-native-maps,Android,Ios,React Native,React Native Maps,我在IOS和Android上都使用谷歌的react本地地图。 有没有办法在react native expo应用程序中启用像谷歌地图应用程序那样的mapType图层切换器?以便用户可以切换地图类型(标准、卫星等) 代码的简化版本 constructor(props) { super(props); this.state = { mapRegion: null, markers: [], mapType: null }; } switchMapType() {
mapType
图层切换器?以便用户可以切换地图类型(标准、卫星等)
代码的简化版本
constructor(props) {
super(props);
this.state = {
mapRegion: null,
markers: [],
mapType: null
};
}
switchMapType() {
console.log('Changing');
this.state.mapType = 'satellite'
}
render() {
return (
<MapView
provider="google"
mapType={this.state.mapType}
>
<Icon
onPress={this.switchMapType}
/>
</MapView>
);
}
构造函数(道具){
超级(道具);
此.state={
mapRegion:null,
标记:[],
映射类型:null
};
}
switchMapType(){
console.log('Changing');
this.state.mapType='satellite'
}
render(){
返回(
);
}
当我在状态中
switchMapType()
查看文档时,我得到一个未定义的错误。它可以很简单,只需将正确的样式传递给mapType
属性
要显示的地图类型
- 标准:标准路线图(默认)
- 无:无地图
- 卫星:卫星视图
- 混合:覆盖道路和兴趣点的卫星视图
- 地形:(仅限Android)地形视图
- 静音标准:更加微妙,使标记/线条更加突出(仅限iOS 11.0+版本)
this
的值。您可以在构造函数中执行此操作,方法是将以下内容放入构造函数中
constructor(props) {
...
this.switchMapType = this.switchMapType.bind(this);
...
}
或者,您可以通过将其声明更改为,将switchMapType
转换为箭头函数
switchMapType = () => {
...
}
或者可以在调用函数时绑定它
<Icon
onPress={this.switchMapType.bind(this}
/>
如果您希望能够在卫星版
和标准版
之间切换,可以执行以下操作。这使用三元语句来处理if/else
我用一些代码和我得到的错误更新了这个问题。这是我的想法,但似乎不起作用。也许需要一个全球国家?太好了,我在错误的上下文中使用了“this”。我确实计算了“设置状态”。我很高兴它现在为您排序:)
switchMapType = () => {
console.log('changing');
this.setState({ mapType: 'satellite' });
}
switchMapType = () => {
console.log('changing');
this.setState({ mapType: this.state.mapType === 'satellite' ? 'standard' : 'satellite' });
}