将Region latitudeDelta/longitudeDelta转换为近似zoomLevel

Thi*_*iel 5 react-native react-native-maps

react-native-mapsreact-native应用程序上使用了Airbnb 的精彩内容.

我在JSON文件上有一个标记列表,其中每个标记都有一个属性zoom,该属性是一个近似缩放级别的整数,标记应该在地图上显示/隐藏.

是否有基于a latitudeDeltalongitudeDeltaa的方法Region来获得当前缩放级别的近似双/整数,就像我们在Google地图上看到的那样(1到20)?

谢谢

Thi*_*iel 18

好的,我带来了一个方便的解决方案,我不知道我们能否做得更好.

我添加了onRegionChange事件来检索区域,然后我使用了一些数学:

<MapView
    style={styles.map}
    initialRegion={this.state.region}
    onRegionChange={region => {
        clearTimeout(this.timerForMap)
        this.timerForMap = setTimeout(() => {
            this.showMarkers(region)
        }, 100)
    }}>
    ...
Run Code Online (Sandbox Code Playgroud)

然后 :

showMarkers(region) {
    let zoom = Math.round(Math.log(360 / region.longitudeDelta) / Math.LN2)
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果有人有更好的方法,请随时发表评论!

谢谢.

  • 您可以使用它来计算给定缩放的区域 `const distanceDelta = Math.exp(Math.log(360) - (zoom * Math.LN2));` (3认同)