• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    4年前 (2015-04-23)  Android |   抢沙发  19 
    文章评分 0 次,平均分 0.0

    功能:计算两个点(经纬度坐标)之间的距离
    使用示例:
    double distance = LatLng.distance(113.926496000000000, 22.538393000000000, 114.23, 22.23);

    package com.haohui.util;
    
    /**
     * 计算两个经纬度之间的距离的工具类
     */
    public class LatLng {
    	private static double lngPerMeter = 1.E-005D;
    
    	public double getLat(double _curLat, int _radius) {
    		return _radius * lngPerMeter;
    	}
    
    	public double getLng(int _radius) {
    		return _radius * lngPerMeter;
    	}
    
    	/**
    	 * 计算两个经纬度之间的距离
    	 * 
    	 * @param _lng1
    	 * @param _lat1
    	 * @param _lng2
    	 * @param _lat2
    	 * @return
    	 */
    	public static double distance(double _lng1, double _lat1, double _lng2,
    			double _lat2) {
    		if ((_lng1 == 0.0D) || (_lat1 == 0.0D) || (_lng2 == 0.0D)
    				|| (_lat2 == 0.0D)) {
    			return 0.0D;
    		}
    		double rad_lat1 = Rad(_lat1);
    		double rad_lat2 = Rad(_lat2);
    		double a = rad_lat1 - rad_lat2;
    		double b = Rad(_lng1) - Rad(_lng2);
    		double s = 2.0D * Math.asin(Math.sqrt(Math
    				.pow(Math.sin(a / 2.0D), 2.0D)
    				+ Math.cos(rad_lat1)
    				* Math.cos(rad_lat2)
    				* Math.pow(Math.sin(b / 2.0D), 2.0D)));
    		s *= 6378137.0D;
    		s = Math.round(s * 10000.0D) / 10000L;
    		return s;
    	}
    
    	private static double Rad(double _d) {
    		return _d * 3.141592653589793D / 180.0D;
    	}
    	
    }
     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/4027.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享