根据自身所在经纬度,查询周围一定范围内的地理位置(经纬度)
来源:互联网 发布:网络策划培训课程 编辑:程序博客网 时间:2024/05/16 14:29
(注:知识浩瀚,本人能力有限,定有不足,望各位多多指点,不足之处请指出,俺好随时改进,小的无以为报,在此鞠躬致谢…)
根据自身经纬度,查询周围一定范围内的地理位置(经纬度),这在很多需要定位的项目中经常遇到。下面是我在项目中遇到后,各种上网搜索后,然后自己整理的:
/** * 获取附近dis千米内的站点 * @param lon [经度] * @param lat [纬度] * @param dis [半径范围(单位:千米)] * @return [符合条件站点的list集合] */ public List<Map<String, Object>> getNeighStation(double lon,double lat, double dis){ //先计算查询点的经纬度范围 double r = 6371;//地球半径千米 double dlng = 2*Math.asin(Math.sin(dis/(2*r))/Math.cos(lat*Math.PI/180)); dlng = dlng*180/Math.PI;//角度转为弧度 double dlat = dis/r; dlat = dlat*180/Math.PI; double minlat =lat-dlat; double maxlat = lat+dlat; double minlng = lon -dlng; double maxlng = lon + dlng; String getStaSql = "select distinct(sta.station_id) as stationid, sta.station_name as stationname, sta.station_memo as stationmemo," + " sta.longitude as lon, sta.latitude as lat" + " from bus_station_tb sta where sta.longitude between ? and ? and sta.latitude between ? and ?"; Object[] values = {minlng,maxlng,minlat,maxlat}; List<Map<String, Object>> stationList = daService.getAll(getStaSql, values); List<Map<String, Object>> staList = new ArrayList<Map<String,Object>>(); for (int i = 0; i < stationList.size(); i++) { double lon2 = Double.valueOf(stationList.get(i).get("lon").toString()); double lat2 = Double.valueOf(stationList.get(i).get("lat").toString()); double len = GetDistance(lat,lon,lat2,lon2); if (len <= 300) { staList.add(stationList.get(i)); } } return stationList; } /** * 计算两个经纬度之间的距离 * @param lat1 [纬度1] * @param lng1 [经度1] * @param lat2 [纬度2] * @param lng2 [经度2] * @return [两点之间的距离] */ public static double GetDistance(double lat1, double lng1, double lat2, double lng2) { double r = 6371.393;//地球半径千米 double radLat1 = lat1 * Math.PI / 180.0; double radLat2 = lat2 * Math.PI / 180.0; double a = radLat1 - radLat2; double b = (lng1 * Math.PI / 180.0) - (lng2 * Math.PI / 180.0); double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) + Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2))); s = s * r; s = Math.round(s * 1000); return s; }
阅读全文
1 0
- 根据自身所在经纬度,查询周围一定范围内的地理位置(经纬度)
- 根据经纬度查询出附近一定范围内用户
- 根据当前经纬度 获取一定距离范围内的两个经纬度的点值 经纬度最大最小值
- 根据地址的经纬度查询周围的城市
- 根据当前经纬度,获取一定距离范围内的两个经纬度的值,经纬度的最大和最小值
- 使用SQL语句查询经纬度之间的距离和一定范围内的数据
- CLGeocoder 根据地理位置获取经纬度,根据经纬度获取地理位置
- 根据经纬度查看附件周围信息
- 根据GPS获得的经纬度来获取地理位置信息
- 根据经纬度查询地名,
- 根据经纬度查询距离
- 根据经纬度查询地址
- 根据地址查询经纬度
- 根据地址查询经纬度
- 根据地址查询经纬度
- 根据地址查询经纬度
- 微信 根据当前地理位置经纬度计算1000米以内的经纬度范围 php版
- PHP根据自己的经纬度计算5公里范围内的全部经纬度
- Linux学习第十五章--文件系统的操作
- Logback 配置说明
- 1005. 最大和
- 曾经被微信打得溃不成军的米聊现在活得还好么
- HRBUST
- 根据自身所在经纬度,查询周围一定范围内的地理位置(经纬度)
- html5-表单
- gets_s不能输入的问题
- Discuz插件安装出现对不起,您安装的不是正版应用,安装程序无法继续执行
- leetcode 137. Single Number II
- ACdream 1077 LCM Challenge (数学题)(LCM)
- iOS搜索框样例
- js中的图片指定切换效果
- 23种设计模式之装饰者模式