0

我想计算屏幕中间圆的中心和半径,半径是可见区域宽度的一半。

visibleRegion.latLngBounds.getCenter()

或者

cameraPosition.target

当我缩小很多时,中心的值与物理中心有偏移。

在下图中,我计算了黑色阴影圆圈如下:

   VisibleRegion visibleRegion = mMap.getProjection().getVisibleRegion();
   LatLng nearLeft = visibleRegion.nearLeft;
   LatLng nearRight = visibleRegion.nearRight;
   mCircle.setCenter(visibleRegion.latLngBounds.getCenter());
   mCircle.setRadius(distanceFrom(nearLeft.latitude, nearLeft.longitude, nearRight.latitude, nearRight.longitude) / 4);




 public double distanceFrom(double lat1, double lng1, double lat2, double lng2)
    {
        // Return distance between 2 points, stored as 2 pair location;
        double dLat = Math.toRadians(lat2 - lat1);
        double dLng = Math.toRadians(lng2 - lng1);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(lat2)) * Math.sin(dLng / 2) * Math.sin(dLng / 2);
        double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        double dist = EARTH_RADIOUS * c;
        return new Double(dist * METER_CONVERSION).floatValue();
    }

我正在寻找绿色圆圈的半径和中心。在此处输入图像描述

4

1 回答 1

1

对于任何有兴趣的人,我都是这样解决的:我在开始时使用 GoolgeMap.getProjection() 计算中心的像素位置以及圆上一个点的像素位置。现在,随着相机的变化,我通过将 Point() 转换回 LatLang 来绘制以该像素位置为中心的圆,并且半径等于圆心与圆上点之间的距离(以米为单位)。

于 2015-08-25T17:52:14.283 回答