JAVA、PHP、前端、APP、网站开发 - 开发技术学习

开发技术学习 » 编程开发 » 根据经纬度查询数据

根据经纬度查询数据

此文被围观634 日期: 2021-12-26 分类 : 编程开发  标签:  ··
import java.util.HashMap;
import java.util.Map;

public class DistanceUtil {

    public static Map<String, Double> getLngLat(double dis, double longitude, double latitude) {
        Map<String, Double> map = new HashMap<>();
        //先计算查询点的经纬度范围
        try {
            double r = 6371;//地球半径千米
            double dlng = 2 * Math.asin(Math.sin(dis / (2 * r)) / Math.cos(latitude * Math.PI / 180));
            dlng = dlng * 180 / Math.PI;//角度转为弧度
            double dlat = dis / r;
            dlat = dlat * 180 / Math.PI;
            double minlat = latitude - dlat;
            double maxlat = latitude + dlat;
            double minlng = longitude - dlng;
            double maxlng = longitude + dlng;
            map.put("minlat", minlat);
            map.put("maxlat", maxlat);
            map.put("minlng", minlng);
            map.put("maxlng", maxlng);
            return map;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }
}
<select id="getRandSystemByLngLat" parameterType="map" resultMap="BaseResultMap">
  select
      *
  from tz_teacher where `status` = 1 and reply_sts = 1 and is_system = 1
  <if test="map.minlng != null and map.minlng != 0">
    and lng <![CDATA[ >= ]]> #{map.minlng}
  </if>
  <if test="map.maxlng != null and map.maxlng != 0">
    and lng <![CDATA[ <= ]]>  #{map.maxlng}
  </if>
  <if test="map.minlat != null and map.minlat != 0">
    and lat <![CDATA[ >= ]]>  #{map.minlat}
  </if>
  <if test="map.maxlat != null and map.maxlat != 0">
    and lat <![CDATA[ <= ]]>  #{map.maxlat}
  </if>
  order by rand() limit 1
</select>


这个是把这几个经纬度的最大值和最小值,都计算出来,然后把这个当成查询条件,根据经纬度的坐标查询这个表。

来源:

https://blog.csdn.net/ab13137462255/article/details/118362395

站点声明:部分内容源自互联网,为传播信息之用,如有侵权,请联系我们删除。

© Copyright 2011-2024 www.kfju.com. All Rights Reserved.
超级字帖 版权所有。 蜀ICP备12031064号      川公网安备51162302000234