GPS坐标间距运算

来源:互联网 发布:大众软件2007电子版 编辑:程序博客网 时间:2024/05/18 21:40

从IOS或者android端获取GPS经纬度坐标,获取GPS坐标间距运算,具体代码如下

package com.common.util;
/*
 * 将度分秒单位数据转换为度单位数据 度 = 度 + 分 / 60 + 秒 / 60 / 60 例如: 经度 = 116°20’43” 纬度 =
 * 39°12’37” 经度 = 116 + 20 / 60 + 43 / 60 / 60 = 116.34528° 纬度 = 39 + 12 /
 * 60 + 37 / 60 / 60 = 39.21028° NTU经度 = 116.34528 * 100000 = 11634528(NTU)
 * NTU纬度 = 39.21028 * 100000 = 3921028(NTU) 其格式的经纬值先转换度,再运算。
 *
 * 比如:点A的经度为11695400,纬度为3995400。点B的经度为11695300,纬度为3995300。 公式:两点间距离 = [
 * (A点经度 - B点经度)^2 + (A点纬度 - B点纬度)^2 ] ^ (1/2) = [ (11695400 - 11695300)^2 +
 * (3995400 - 3995300)^2 ] ^(1/2) =(10000+10000) ^ (1/2) =141米
 */
public class GPSUtils {
    /**
     * 求a,b两坐标间距(单位:米)
     * @param lata
     *            a点的经度
     * @param lona
     *            a点的纬度
     * @param latb
     *            b点的经度
     * @param lonb
     *            b点的纬度
     * @return
     */
    public static double betweenDistance(double lata, double lona, double latb,
            double lonb) {
        double lataNTU = lata*100000;
        double lonaNTU = lona*100000;
        double latbNTU = latb*100000;
        double lonbNTU = lonb*100000;
        double latV = Math.abs(lataNTU - latbNTU);
        double lonV = Math.abs(lonaNTU - lonbNTU);
        double rls = (latV * latV) + (lonV * lonV);
        rls = Math.sqrt(rls);
        return rls;
    }


    public static void main(String[] args) {
        Double a = betweenDistance(113.30001,22.9155, 113.30000,22.9155);
        System.out.println(a);
    }
}


原创粉丝点击