`
kidiaoer
  • 浏览: 802693 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

JAVA java 根据二个点的经纬度(坐标)计算距离 获取500米范围用户

    博客分类:
  • java
阅读更多


在经线上,相差一纬度约为111km    ,因此100m(0.1KM)在经线上对应约为0.1/111=0.0009度,这个度数和纬度没有关系

在纬线上,相差一经度约为111cosα(α为该纬线的纬度)因此100m(0.1KM)在该纬线上对应约为0.1/(111*cos23.14)=0.0009797度,这个度数和纬度有关


                //0.0045   lat   500米纬度转换成度数
//0.0048985   lng  500米经度转换成度数  
//经纬度所有500米统一用0.0048

先从数据库筛选范围
SELECT * from table
 where (lat between lat1-0.0048 and lat1-0.0048) and (lng between lng1-0.0048 and lng1+0.0048)


java 根据二个点的经纬度计算距离

public class DistanceUtil {
	
	private final static double PI = 3.14159265358979323; // 圆周率
    private final static double R = 6371229; // 地球的半径

    public static double getDistance(double lng1, double lat1, double lng2,double lat2) {
        double x, y, distance;
        x = (lng2 - lng1) * PI * R
                * Math.cos(((lat1 + lat2) / 2) * PI / 180) / 180;
        y = (lat2 - lat1) * PI * R / 180;
        distance = Math.hypot(x, y);
        return distance;
    }

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics