如何在谷歌地图中的两个点范围之间进行选择

时间:2012-05-17 14:18:08

标签: java android

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

我使用此代码计算距离。

    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;

       }
    }

2 个答案:

答案 0 :(得分:0)

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

public void zoomToSpan(int latSpanE6,int lonSpanE6)
  

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

答案 1 :(得分:0)

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