gpt4 book ai didi

java - 如何在java中计算边界框的谷歌地图缩放级别

转载 作者:行者123 更新时间:2023-12-03 18:29:41 41 4
gpt4 key购买 nike

我需要获取服务器端边界框的谷歌地图缩放级别(用 java 编码)有什么想法吗?

最佳答案

@Peter 实际上,您可以在服务器端使用 Java 做一些事情。您可以从边界框计算最小和最大纬度/经度值,然后使用以下代码:

int zoomLevel;
double latDiff = latMax - latMin;
double lngDiff = lngMax - lngMin;

double maxDiff = (lngDiff > latDiff) ? lngDiff : latDiff;
if (maxDiff < 360 / Math.pow(2, 20)) {
zoomLevel = 21;
} else {
zoomLevel = (int) (-1*( (Math.log(maxDiff)/Math.log(2)) - (Math.log(360)/Math.log(2))));
if (zoomLevel < 1)
zoomLevel = 1;
}

这适用于我的 320x320 像素方形 Google map ,ZOOM_SCALING_FACTOR = 0.3838。这个公式应该适用于任何方形谷歌地图。您看到使用 log_2 的原因是每次缩放级别增加 1 时,Google map 的大小都会翻倍。我还处理点几乎彼此重合的边缘情况(zoomLevel = 21),以及整个地球的位置是所需的缩放 (zoomLevel = 1)。

做这个服务器端的好处是你的 JavaScript 引擎从复杂的(并且可能是浪费的)数学中解放出来,这可能会减慢页面加载并恶化用户体验。

关于java - 如何在java中计算边界框的谷歌地图缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266754/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com