1

如何在谷歌地图中的两个点范围之间进行选择。例如:50m 或 100m

我正在使用此代码来计算距离。

    public class DistanceCalculator {

       public static final double Radius = 6378.1;

       public double CalculationByDistance(GeoPoint startp, GeoPoint endp) {
          double lat1 = startp.getLatitudeE6()/1E6;
          double lat2 = endp.getLatitudeE6()/1E6;
          double lon1 = startp.getLongitudeE6()/1E6;
          double lon2 = endp.getLongitudeE6()/1E6;
          double dLat = Math.toRadians(lat2-lat1);
          double dLon = Math.toRadians(lon2-lon1);
          double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
          Math.sin(dLon/2) * Math.sin(dLon/2);
          double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
          return Radius * c;

       }
    }
4

2 回答 2

0

MapViewController 有一个名为 zoomToSpan(int, int) 的方法。所以你需要做的就是找到两个点的中心,然后放大到它们之间的跨度。这是文档:

public void zoomToSpan(int latSpanE6,int lonSpanE6)

尝试调整地图的缩放比例,以便显示给定的纬度和经度跨度。因为缩放只能实现离散级别,并且由于地图的纵横比可能与给定的比例不匹配,所以拟合的质量可能会有所不同。我们唯一保证的是,在缩放之后,新纬度或新经度中的至少一个将在相应参数的 2 倍范围内。

于 2012-05-17T14:28:03.823 回答
0

您尝试通过将度数转换为距离(例如从 1 度纬度到海里)来计算使用纬度和经度。

于 2012-05-17T14:32:35.840 回答