php 根据经纬度获取附近50km的信息,并计算距离
// 查询附近50km的信息
$longitude = '113.2425';
$latitude= '23.16993';
$point = $this->returnSquarePoint($longitude, $latitude, 50000); // 得到四个点
// sql语句查询组合
$where = ' latitude > ' . $point['minLat'] . ' AND latitude < ' . $point['maxLat'];
$where .= ' AND longitude > ' . $point['minLon'] . ' AND longitude < ' . $point['maxLon'];// 查询距离
$distance = $this->getDistance('23.16993', '23.15564', '113.2425', '113.221893');/*** @param $lng float 经度* @param $lat float 纬度* @param $distance float 该点所在圆的半径,该圆与此正方形内切,默认值为单位米* @return array 正方形的四个点的经纬度坐标*/
private function returnSquarePoint($lng, $lat, $distance)
{$PI = 3.14159265;$longitude = $lng;$latitude = $lat;$degree = (24901 * 1609) / 360.0;$raidusMile = $distance;$dpmLat = 1 / $degree;$radiusLat = $dpmLat * $raidusMile;$minLat = $latitude - $radiusLat; //拿到最小纬度$maxLat = $latitude + $radiusLat; //拿到最大纬度$mpdLng = $degree * cos($latitude * ($PI / 180));$dpmLng = 1 / $mpdLng;$radiusLng = $dpmLng * $raidusMile;$minLng = $longitude - $radiusLng; //拿到最小经度$maxLng = $longitude + $radiusLng; //拿到最大经度$range = array('minLat' => $minLat,'maxLat' => $maxLat,'minLon' => $minLng,'maxLon' => $maxLng);return $range;
}// 根据经纬度计算距离方法
private function getDistance($latitude1, $latitude2, $longitude1, $longitude2)
{$EARTH_RADIUS = 6378.137; // 地球半径(单位km)$PI = 3.1415926; //$radLat1 = $latitude1 * $PI / 180.0;$radLat2 = $latitude2 * $PI / 180.0;$radLng1 = $longitude1 * $PI / 180.0;$radLng2 = $longitude2 * $PI /180.0;$a = $radLat1 - $radLat2;$b = $radLng1 - $radLng2;$distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));$distance = abs(round($distance * $EARTH_RADIUS, 2));return $distance;
}
php 根据经纬度获取附近50km的信息,并计算距离相关推荐
- 根据经纬度获取用户当前位置信息
根据上篇文章获取的经纬度获取用户当前的位置信息 //获取用户所在位置信息ADDRESS func getUserAddress() { let latitude : CLLocationDegrees ...
- PHP通过计算经纬度获取附近的数据信息
/** *计算某个经纬度的周围某段距离的正方形的四个点 * *@param lng float 经度 *@param lat float 纬度 *@param distance float 该点所在圆 ...
- uni-app开发微信小程序获取位置信息并且计算距离
一.uniapp项目 打开uniapp项目的配置文件manifest.json,选择"源码视图". /* 小程序特有相关 */ "mp-weixin": {&q ...
- php 通过坐标获取省市,PHP根据经纬度获取在范围坐标的数据
PHP根据经纬度获取在范围坐标的数据 PHP根据经纬度获取在范围坐标的数据 //计算范围,可以做搜索用户 function GetRange($lat,$lon,$raidus){ //计算纬度 $d ...
- 百度api:根据经纬度获取地理位置信息
调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...
- java调用腾讯地图根据经纬度获取位置信息
这是java提交经纬度信息,然后获取该经纬度所在省市区的一个方法,话不多说直接上代码: package com.lmj.util;import net.sf.json.JSONObject; impo ...
- 根据百度地图经纬度获取位置信息
/*** 根据百度地图经纬度获取位置信息 **/ public class BaiduMapUtils {// 百度地图秘钥static String ak = "此处添加你的百度地图秘钥& ...
- WEB开发 高德地图应用,初始加载,地图定位,层级变化控制,根据经纬度获取详细地址信息,点击事件以及地图自适应
1.前台html位置准备 <div id="Sharingrouter"> <div id="container" r ...
- 百度地图根据经纬度获取国家、州市等地址相关信息
这是一个简单的经纬度转换成具体地址信息,支持国际和国内经纬度转换. 效果如下图所示: function xmlToArray2($xml) { // 将XML转为array $array_data = ...
最新文章
- codeforces 400D Dima and Bacteria 并查集+floyd
- 五大经典算法之回溯法
- ThinkPHP 目录结构
- Mirantis 收购 Docker EE | 云原生生态周报 Vol. 28
- sql不等于0怎么表示_数组真的只能从0开始吗?python表示不同意
- python实现归并排序
- 2021年呼和浩特高考段考成绩查询,2019届呼和浩特市高三段考成绩排名分析
- 适合户外显示中玩耍的游戏
- c语言无符号扩展,C语言中的无符号扩展和带符号扩展
- 小程序中的多表联合查询
- 前端:运用js制作一个万年历程序
- OpenCV——相当通俗易懂的SVD奇异值分解
- mysql 节假日判断,sql 节假日判断(春节、中秋、国庆、周末等)
- openwrt路由器(红米AC2100)折腾全程——多拨、ipv6负载均衡、ipv6 nat6、ddns、端口转发
- vue遍历中key详解 (Demo案例)
- fx5u怎么与计算机通讯,两个FX5U系列PLC如何用RS485进行通信幻灯片
- 在anti-spoofing中,在OULU数据集上求APCER,BPCER,ACER上的一个注意事项
- 【秋招纪实录】一篇特别正经的【基恩士】求职经验分享
- Flutter中的多选按钮组件Checkbox
- 炽热如初 向新而生|ISC2022 HackingClub白帽峰会圆满举办