我将react-native-maps
用于react-native
,并且我喜欢将自己的按钮用于“左”,“右”,“上”和“下”,而不是用手指轻扫。 (也是旋转按钮)
我在网络上搜索了很多内容,但找不到解决方案。
我可以使用setInterval并在经度或纬度上添加一个数字,但这非常耗费数据,速度较慢,而且不太流畅。
<MapView style={{ flex: 1 }}
initialRegion={this.state.region}
followUserLocation={false}
showsUserLocation={false}
zoomEnabled={false}
zoomControlEnabled={false}
zoomTapEnabled={false}
rotateEnabled={false}
scrollEnabled={false}
></MapView>
<Button title="up" onPress... />
<Button title="down" onPress.../>
<Button title="left" onPress... />
<Button title="right onPress... />
<Button title="rotate-left" onPress... />
<Button title="rotate-right" onPress... />
答案 0 :(得分:0)
您可以使用camera view
代替region
来指定纬度和经度。它提供了一种导航到特定坐标并旋转地图的方法。
首先为地图的初始位置创建状态:
this.state = {
camera: {
center: {
latitude: 40.712776,
longitude: -74.005974,
},
pitch: 0,
heading: 0,
zoom: 15
}
}
然后将其与MapView一起使用,如下所示:
<MapView
ref={(ref) => this.mapView = ref}
camera={this.state.camera}
.../>
现在指定要计算的纬度和经度,以移动到特定侧面(具有向左,向右,向上和向下按钮的功能)。
MoveToPosition = () => {
const duration = 1000;
//provided static latitude and longitude for moving downwards from original location
var newCam = {
center: {
latitude: 40.702776,
longitude: -74.005974,
}
}
//below method animates view to specified latitude and longitude in provided duration
this.mapView.animateCamera(newCam, duration);
}
要旋转该地图,您可以在heading
道具中指定数字的度数。
RotateFun = () => {
heading += 90;
this.mapView.animateCamera({ heading: heading }, 1000);
}
您可以使用region
prop和animateToRegion
方法进行相同的操作,在其中可以指定纬度和经度。(但是,我认为使用区域时没有任何道具可以旋转)
您可以在文档中找到有关此信息的更多信息:https://github.com/react-native-community/react-native-maps/blob/master/docs/mapview.md