android 已知有N个坐标(经纬度),现在求坐标(x,y(经纬度))在半径不超过X米并且在N个坐标(经纬度)中有那些坐标(经纬度)点???我问这个问题有2个点想知道1.  2个坐标(经纬度)怎么求距离2. 难道每次求,都要遍历N个坐标算一次距离吗?

解决方案 »

  1.   

    /**
     * 计算两点间距离
     * 
     * @param lat1
     *            纬度
     * @param lng1
     *            经度
     * @param lat2
     *            纬度
     * @param lng2
     *            经度
     * @return 米
     */
    public static double GetDistance(double lat1, double lng1, double lat2,
    double lng2) {
    double radLat1 = rad(lat1);
    double radLat2 = rad(lat2);
    double a = radLat1 - radLat2;
    double b = rad(lng1) - rad(lng2); double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
    + Math.cos(radLat1) * Math.cos(radLat2)
    * Math.pow(Math.sin(b / 2), 2)));
    s = s * 6378.137 * 1000;
    return s;
    } private static double rad(double d) {
    return d * Math.PI / 180.0;
    }