Fgb*_*nch 2 java google-maps bounding-box
我需要获取服务器端(用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;
}
Run Code Online (Sandbox Code Playgroud)
这适用于我的方形Google地图320x320像素,ZOOM_SCALING_FACTOR = 0.3838.此公式应适用于任何方形Google地图.您看到使用log_2的原因是,每次缩放级别增加1时,Google地图的大小都会翻倍.我还会处理点几乎相互重合的边缘情况(zoomLevel = 21),以及整个地球的位置是所需的缩放(zoomLevel = 1).
执行此服务器端的好处是,您已经释放了JavaScript引擎,无法执行复杂(并且可能浪费)的数学运算,这可能会减慢页面加载速度并恶化用户体验.
归档时间: |
|
查看次数: |
2415 次 |
最近记录: |