我需要为服务器端的边界框(用java编码)获取google地图缩放级别的任何想法吗?
答案 0 :(得分:6)
@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引擎,无法执行复杂(并且可能浪费)的数学运算,这可能会减慢页面加载速度并恶化用户体验。
答案 1 :(得分:1)
Google地图通过在客户端(浏览器内)运行的javascript库使用。您无法在服务器端执行任何操作。
然而,您可以在javascript(在客户端)查看边界框大小并相应地设置缩放级别。
我很好奇:你在服务器端用谷歌地图做什么?