嘿伙计们我已经在react-native中创建了一个mapView,现在我必须在用户当前位置设置修复标记。我使用navigator.geolocation获取当前位置也使用MapView.Marker设置标记最初标记显示正确的位置但是在缩放和捏合时移动
这是我的代码。
getInitialState() {
return {
region: {
latitude: LATITUDE,
longitude: LONGITUDE,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
},
};
},
componentDidMount: function() {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({
region: {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
}
});
},
);
this.watchID = navigator.geolocation.watchPosition((position) => {
const newRegion = {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
}
this.onRegionChange(newRegion);
});
},
这是渲染方法
render() {
return (
<View style={styles.container}>
<MapView
ref="map"
style={styles.map}
region={this.state.region}
onRegionChange={this.onRegionChange}
>
<MapView.Marker coordinate={this.state.region}>
</MapView.Marker>
</MapView>
有人可以帮忙吗? 提前致谢
答案 0 :(得分:2)
这是解决方案。这是更新的代码
componentDidMount: function() {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({
region: {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
}
});
},
);
},
render() {
return (
<View style={styles.container}>
<MapView
ref="map"
style={styles.map}
region={this.state.region}
onRegionChange={this.onRegionChange}
>
<MapView.Marker coordinate={this.state.region} />
</MapView>
问题是navigator.geolocation.watchPosition它正在更新我的新区域,因为标记在区域变化时会发生变化。