计算Google地图中可见地图用户的半径

时间:2016-07-07 01:02:37

标签: android google-maps google-api

我想要做的是计算用户查看地图的圆的半径 到目前为止,我已经写了解决方案(这是真的):

mMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition cameraPosition) {
            String TAG = AppController.TAG;
            LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds;
            LatLng target = cameraPosition.target;
            LatLng northEast = bounds.northeast;
            LatLng southEast = bounds.southwest;
            float[] results1 = new float[1];
            float[] results2 = new float[1];
            Location.distanceBetween(target.latitude, target.longitude, northEast.latitude, northEast.longitude, results1);
            Location.distanceBetween(target.latitude, target.longitude, southEast.latitude, southEast.longitude, results2);
            double distance = results1[0] > results2[0] ? results1[0] : results2[0];
            Log.d(TAG, "onCameraChange:" + results1[0] + "  " + results2[0]);
        }
    });

我在这里面临两个问题:
1-首先,为什么中心和东北之间的偏差不等于西南? 2-是否有任何内置方法可以达到相同的效果?

1 个答案:

答案 0 :(得分:0)

enter image description here

从上面的地图可以看出,水平线(纬度)越远离赤道越远。

在屏幕上,地图被“扭曲”以平整地球的曲面,与视图中心的经度和纬度相同。+ -

因此,除非您直接在赤道进行测量,否则半径会略有不同。对于小距离,这可以忽略不计。

如果准确度不重要,可以尝试使用较小的半径(如果要在视图上绘制一个不会被部分隐藏的圆圈),或者使用较大的半径(如果要对其中的位置进行计算) cicle)。