繁体   English   中英

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

[英]how to calculate google maps zoom level for a bounding box in java

我需要在服务器端(用Java编码)的边界框上获取Google Maps缩放级别,有什么想法吗?

@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地图(ZOOM_SCALING_FACTOR = 0.3838)效果很好。 此公式应适用于任何方形Google地图。 您看到使用log_2的原因是,缩放级别每增加1,Google地图的大小就会加倍。我还处理了边点几乎彼此重合的情况(zoomLevel = 21),并且整个地球是所需的缩放比例(zoomLevel = 1)。

做这个服务器端的好处是,您使JavaScript引擎摆脱了复杂的(可能会浪费)数学的工作,这可能减慢页面加载速度并恶化用户体验。

Google地图是通过在客户端(在浏览器内部)运行的javascript库使用的。 在服务器端您无能为力。

但是,您可以在javascript中(在客户端)查看边界框大小,并相应地设置缩放级别。

我很好奇:您正在服务器端使用Google地图吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM