Hus*_*aik 6 react-native react-native-android react-native-ios react-native-maps
我想在地图中移动某个位置时更改我的初始区域,为此我使用了 onRegionChangeComplete 功能,但它一次调用两次或三次。
这是我的代码:
onRegionChangeComplete(region) {
if(!this.state.initialRegionChange){
console.log("changeRegion:"+JSON.stringify(region))
var initialRegion = {
latitude: region.latitude,
longitude :region.longitude,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
}
var lat = parseFloat(region.latitude)
var lang = parseFloat(region.longitude)
}else{
this.setState({
initialRegionChange:false
})
}
}
render(){
return(
<MapView
ref="map"
style={styles.map}
initialRegion={this.state.region}
provider={MapView.PROVIDER_DEFAULT}
zoomEnabled={true}
onRegionChangeComplete={this.onRegionChangeComplete.bind(this)}
pitchEnabled={true}
showsCompass={true}
showsBuildings={true}
showsUserLocation={true}
showsTraffic={true}
showsIndoors={true}
/>
)
}
Run Code Online (Sandbox Code Playgroud)
请给我建议如何解决这个问题。
非常感谢任何帮助。
这是我正在关注的模块链接。 https://github.com/react-community/react-native-maps
Mat*_*ias 10
这可能是一个老问题,但我会提供对我有用的内容以供参考。就我而言,只是区域的精度发生了变化onRegionChangeComplete,这使地图认为该区域已更改。为了解决这个问题,我只是将输入区域与先前设置的区域进行了比较,但在比较中将坐标的小数位数限制为 6。像这样的东西:
onRegionChange = (region) => {
if(region.latitude.toFixed(6) === this.state.region.latitude.toFixed(6)
&& region.longitude.toFixed(6) === this.state.region.longitude.toFixed(6)){
return;
}
this.setState({region});
}
Run Code Online (Sandbox Code Playgroud)
这是一个已记录的问题react-native-maps,甚至提交了一个拉取请求来修复它: https: //github.com/react-community/react-native-maps/pull/1597。您可以立即将拉取请求合并到本地副本中react-native-maps,或者等待它被发布。我建议添加您对 PR 的支持,以引起更多关注并使其更快合并。我知道这不能解决您的问题,但目前您无法在源代码中执行任何操作来修复它 - 您需要更改库本身。希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
4532 次 |
| 最近记录: |