Java对关于两个地点的根据经纬度算出后排序

Posted 一望无垠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java对关于两个地点的根据经纬度算出后排序相关的知识,希望对你有一定的参考价值。

/**
     * 查询收货地址列表
     * 
     * @param request
     * @param wechatId
     * @return
     */
    @RequestMapping("/weixin/address/queryRecentlyAddress")
    public AddressVo queryRecentlyAddress(HttpServletRequest request, Integer wechatId, AddressVo vo) {
        String openId = OauthUtil.getInstance().getOpenId(request, String.valueOf(wechatId));
        // 查询收货地址
        Map<String, Object> map = new HashMap<String, Object>();
        String nowLng = (String) request.getAttribute("Lng");
        String nowLat = (String) request.getAttribute("Lat");
        
        map.put("openId", openId);
        List<AddressVo> aList = addressService.queryList(map);
//TreeMap具有更具key做自动排序的功能,默认为正序即从小到大 Map
<Double,AddressVo> addressMap=new TreeMap<Double,AddressVo>(); for(AddressVo address:aList){ String latitude = address.getLatitude(); String longitude = address.getLongitude(); double distance = Distance(nowLng,nowLat,latitude,longitude); addressMap.put(distance,address); } AddressVo addressVo = addressMap.get(0); return addressVo; }

根据两个点的经纬度算出两个点之间的距离

//根据两个地点的经纬度,计算两的距离

      private static final double EARTH_RADIUS = 6378.137;


      private static double rad(double d){
                      return d * Math.PI / 180.0;
           }


public double Distance(String nowLng, String nowLat, String latitude, String longitude) { double long1; double lat1; double long2; double lat2; double a, b, sa2, sb2,d = 0; try { long1 = Double.valueOf(nowLng); lat1 = Double.valueOf(nowLat); long2 = Double.valueOf(latitude); lat2 = Double.valueOf(longitude); lat1 = rad(lat1); lat2 = rad(lat2); a = lat1 - lat2; b = rad(long1 - long2); sa2 = Math.sin(a / 2.0); sb2 = Math.sin(b / 2.0); d = 2 * EARTH_RADIUS * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2)); } catch (Exception e) { e.printStackTrace(); } return d; }

 

以上是关于Java对关于两个地点的根据经纬度算出后排序的主要内容,如果未能解决你的问题,请参考以下文章

Sql根据经纬度算出距离

MongoDB根据经纬度对文档进行排序

根据经纬度查询当前地点,百度google接口

高德地图怎样实现实时定位,得到当前地点的坐标,位置

高德地图怎样实现实时定位,得到当前地点的坐标,位置

java------4.根据经纬度排序,并计算距离。。。。。。。。根据地址计算出经纬度