Zoh*_*ram 3 android google-maps
任何人都可以帮我计算或转换谷歌地图相机缩放级别为KM距离.当用户缩小谷歌地图时,我想向api发送距离以获得更多的pin数据.
lam*_*bda 10
我有我的zoom level( zl ) 到 km 的简单转换。如果zl1 =40,000km和zl2 =20,000km等等。所以每一级都会减半公里。因此,
公里 = ( 40000/2 ^ zl ) * 2
e.g. zl = 4
km = (40000/2^4) * 2
= 5000km
Run Code Online (Sandbox Code Playgroud)
我真的很喜欢 @lambda 解决方案的简单性,但似乎缩放级别已重新调整。
当我进行测试时,我有 zl3 = 38Mm , zl6 = 4.8Mm , zl9 = 600km ...但这仅在赤道上可靠,您必须添加另一个乘数来考虑纬度。
所以我的最终公式如下所示:
公里 = (38000 / 2 ^ ( zl - 3)) * cos(纬度)
其中 zl = 地图缩放级别,lat = 地图中心纬度(以度为单位)
对于 JS 用户,您可以复制以下内容:
const km = 38000 / Math.pow(2, zl - 3) * Math.cos(lat * Math.PI / 180);
Run Code Online (Sandbox Code Playgroud)
现在是时候制作相反的公式了:
zl = log2(38000 * cos(纬度) / 公里) + 3
翻译成 JS 为:
const zl = Math.log2(38000 * Math.cos ( lat * Math.PI / 180) / km) + 3
Run Code Online (Sandbox Code Playgroud)
PS:我不知道分辨率是否有影响,我使用的是全高清屏幕(1920 x 1080)
您可以计算地图中心和左上角坐标之间的距离,如下所示:
VisibleRegion visibleRegion = mMap.getProjection().getVisibleRegion();
double distance = SphericalUtil.computeDistanceBetween(
visibleRegion.farLeft, mMap.getCameraPosition().target);
Run Code Online (Sandbox Code Playgroud)
请注意,我用SphericalUtil.computeDistanceBetween的方法谷歌地图API的Android实用工具库.
| 归档时间: |
|
| 查看次数: |
5844 次 |
| 最近记录: |