我正在使用airbnb的react-native-maps库开发我的用于android的本机应用程序。这个应用程序在主页上显示地图和汽车图标。
工作正常但是当汽车行驶并且汽车坐标连续变化时,地图不能平滑地渲染。带有汽车图标的MapView标记沿着路径从一个点跳到另一个点。我的期望是在地图上显示连续移动的物体,就像它在谷歌地图上显示的那样。
这是我的代码:
this.state = {
latitude: 22.55231,
longitude: 88.56772,
angle: 0
}
componentDidMount(){
navigator.geolocation.getCurrentPosition(
position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
let angle = position.coords.heading;
this.setState({latitude, longitude, angle});
},
error => console.log(error),
{
// enableHighAccuracy: true
}
);
navigator.geolocation.watchPosition(
position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
let angle = position.coords.heading;
this.setState({latitude, longitude, angle});
},
error => console.log(error),
{
// enableHighAccuracy: true
}
);
}
getMapRegion(){
return {
latitude: this.state.latitude,
longitude: this.state.longitude,
latitudeDelta: 0.9271,
longitudeDelta: ASPECT_RATIO * 0.9271
}
}
render(){
let angle = this.state.angle || 0;
return(
<MapView style={styles.map}
showUserLocation={true}
followUserLocation={true}
region={this.getMapRegion()}>
<MapView.Marker
title={'Hi'}
style={{
transform: { rotate: `${angle}deg` },
width: 20,
height: 20
}}
image={require('../../../images/car-marker-2.png')}
coordinate={{ latitude: this.state.latitude, longitude: this.state.longitude }}/>
</MapView>
);
}
非常感谢任何帮助。
答案 0 :(得分:2)
我相信这辆车是&#34;跳跃&#34;因为它是GPS计算新坐标所需的时间,而您只是发送新的坐标,但您并没有简化过渡。请记住GPS不能立即工作。
您可能想要为标记设置动画。请参阅&#34;动画标记位置&#34;在这里:https://github.com/airbnb/react-native-maps
答案 1 :(得分:0)
尝试在watchPosition中传递参数“ distanceFilter:10”。设置为0表示不过滤位置。默认为100m。 就我而言,它工作正常。