电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP實現的7組經緯度與距離的計算函數demo

瀏覽:167日期:2022-06-14 11:14:45
目錄一. 根據當前位置計算四周的經緯度二. 根據經緯度計算范圍三. 通過經緯度根據距離從近到遠排序四. 根據經緯度查詢地理位置五. 根據經緯度計算直線距離六. 根據經緯度和半徑計算出范圍七. 獲取兩個經緯度之間的距離一. 根據當前位置計算四周的經緯度/** 根據當前位置計算四周的經緯度 * @param $lng * @param $lat * @param float $distance * @return array */function returnSquarePoint($lng, $lat, $distance = 0.5){ $earthRadius = 6378138; $dlng = 2 * asin(sin($distance / (2 * $earthRadius)) / cos(deg2rad($lat))); $dlng = rad2deg($dlng); $dlat = $distance / $earthRadius; $dlat = rad2deg($dlat); return array('left-top' => array('lat' => $lat + $dlat, 'lng' => $lng - $dlng),'right-top' => array('lat' => $lat + $dlat, 'lng' => $lng + $dlng),'left-bottom' => array('lat' => $lat - $dlat, 'lng' => $lng - $dlng),'right-bottom' => array('lat' => $lat - $dlat, 'lng' => $lng + $dlng) );}二. 根據經緯度計算范圍/** 根據經緯度計算范圍 * @param $lat1 * @param $lng1 * @param $lat2 * @param $lng2 * @return float */function getDistance($lat1, $lng1, $lat2, $lng2){ $earthRadius = 6378138; // 近似地球半徑米 // 轉換為弧度 $lat1 = ($lat1 * pi()) / 180; $lng1 = ($lng1 * pi()) / 180; $lat2 = ($lat2 * pi()) / 180; $lng2 = ($lng2 * pi()) / 180; // 使用半正矢公式 用尺規來計算 $calcLongitude = $lng2 - $lng1; $calcLatitude = $lat2 - $lat1; $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2); $stepTwo = 2 * asin(min(1, sqrt($stepOne))); $calculatedDistance = $earthRadius * $stepTwo; return round($calculatedDistance);}三. 通過經緯度根據距離從近到遠排序/** 通過經緯度根據距離從近到遠排序 * @param $lat * @param $lng * @return mixed */function computePoint($lat, $lng){ $page = 1; $pageSize = 7; $EARTH = 6378.137; // 固定參數 地球半徑 $PI = 3.1415926535898; // 固定參數 圓周率 $list = db('work')->alias('wk')->field('wk.id,wk.work_name,wk.age,wk.teach,wk.gwbqid,wk.start_money,wk.work_description,wk.xz_id,wk.category,cp.company_id,cp.company_name,cp.la,cp.lo,(2 * $EARTH* ASIN(SQRT(POW(SIN($PI*(' . $lat . '-cp.la)/360),2)+COS($PI*' . $lat . '/180)* COS(cp.la * $PI/180)*POW(SIN($PI*(' . $lng . '-cp.lo)/360),2)))) as juli')->order('create_time desc,juli asc')->page($page, $pageSize)->select()->toArray(); return $list;}四. 根據經緯度查詢地理位置/** 根據經緯度查詢地理位置 * @param $lat * @param $lng */function myLocation($lat, $lng){ $url = 'http://api.map.baidu.com/geocoder/v2/?ak=YQH8OyfGcvOsPlHdnssSpkulaSNVgL0N&callback=renderReverse&location=$lat,$lng&output=json&pois=1'; $res = file_get_contents($url); $lres = ltrim($res, 'renderReverse && renderReverse('); $rres = rtrim($lres, ')'); echo $rres;}五. 根據經緯度計算直線距離/** * 根據經緯度計算直線距離 * @param $lat1 * @param $lng1 * @param $lat2 * @param $lng2 * @return float|int */function getDistances($lat1, $lng1, $lat2, $lng2){ define('PI', 3.1415926535898); define('EARTH_RADIUS', 6378.137); $radLat1 = $lat1 * (PI / 180); $radLat2 = $lat2 * (PI / 180); $a = $radLat1 - $radLat2; $b = ($lng1 * (PI / 180)) - ($lng2 * (PI / 180)); $s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))); $s = $s * EARTH_RADIUS; $s = round($s * 10000) / 10000; return $s * 1000;}六. 根據經緯度和半徑計算出范圍/** 根據經緯度和半徑計算出范圍 * @param string $lat 緯度 * @param String $lng 經度 * @param float $radius 半徑 * @return Array 范圍數組 */function calcScope($lat, $lng, $radius){ $degree = (24901 * 1609) / 360.0; $dpmLat = 1 / $degree; $radiusLat = $dpmLat * $radius; $minLat = $lat - $radiusLat; // 最小緯度 $maxLat = $lat + $radiusLat; // 最大緯度 $mpdLng = $degree * cos($lat * (3.141592 / 180)); $dpmLng = 1 / $mpdLng; $radiusLng = $dpmLng * $radius; $minLng = $lng - $radiusLng; // 最小經度 $maxLng = $lng + $radiusLng; // 最大經度 /** 返回范圍數組 */ $scope = array('minLat' => $minLat,'maxLat' => $maxLat,'minLng' => $minLng,'maxLng' => $maxLng ); return $scope;}七. 獲取兩個經緯度之間的距離/** 獲取兩個經緯度之間的距離 * @param string $lat1 緯一 * @param String $lng1 經一 * @param String $lat2 緯二 * @param String $lng2 經二 * @return float 返回兩點之間的距離 */function calcDistance($lat1, $lng1, $lat2, $lng2){ if (empty($lat1) || empty($lng1) || empty($lat2) || empty($lng2)) {return false; } /** 轉換數據類型為 double */ $lat1 = doubleval($lat1); $lng1 = doubleval($lng1); $lat2 = doubleval($lat2); $lng2 = doubleval($lng2); $theta = $lng1 - $lng2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; return ($miles * 1.609344);}

以上就是PHP實現的7組經緯度與距離的計算函數demo的詳細內容,更多關于PHP經緯度距離計算函數的資料請關注好吧啦網其它相關文章!

標簽: PHP
主站蜘蛛池模板: 临朐空调移机_空调维修「空调回收」临朐二手空调 | 众品家具网-家具品牌招商_家具代理加盟_家具门户的首选网络媒体。 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | 风化石头制砂机_方解石制砂机_瓷砖石子制砂机_华盛铭厂家 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 电子万能试验机_液压拉力试验机_冲击疲劳试验机_材料试验机厂家-济南众标仪器设备有限公司 | PTFE接头|聚四氟乙烯螺丝|阀门|薄膜|消解罐|聚四氟乙烯球-嘉兴市方圆氟塑制品有限公司 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 塑料撕碎机_编织袋撕碎机_废纸撕碎机_生活垃圾撕碎机_废铁破碎机_河南鑫世昌机械制造有限公司 | 心肺复苏模拟人|医学模型|急救护理模型|医学教学模型上海康人医学仪器设备有限公司 | 蓄电池在线监测系统|SF6在线监控泄露报警系统-武汉中电通电力设备有限公司 | 【铜排折弯机,钢丝折弯成型机,汽车发泡钢丝折弯机,线材折弯机厂家,线材成型机,铁线折弯机】贝朗折弯机厂家_东莞市贝朗自动化设备有限公司 | 高柔性拖链电缆_卷筒电缆_耐磨耐折聚氨酯电缆-玖泰特种电缆 | 板框压滤机-隔膜压滤机-厢式压滤机生产厂家-禹州市君工机械设备有限公司 | ★济南领跃标识制作公司★济南标识制作,标牌制作,山东标识制作,济南标牌厂 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | PTFE接头|聚四氟乙烯螺丝|阀门|薄膜|消解罐|聚四氟乙烯球-嘉兴市方圆氟塑制品有限公司 | 欧洲MV日韩MV国产_人妻无码一区二区三区免费_少妇被 到高潮喷出白浆av_精品少妇自慰到喷水AV网站 | 吲哚菁绿衍生物-酶底物法大肠菌群检测试剂-北京和信同通科技发展有限公司 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 恒温恒湿箱(药品/保健品/食品/半导体/细菌)-兰贝石(北京)科技有限公司 | SOUNDWELL 编码器|电位器|旋转编码器|可调电位器|编码开关厂家-广东升威电子制品有限公司 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 彭世修脚_修脚加盟_彭世修脚加盟_彭世足疗加盟_足疗加盟连锁_彭世修脚技术培训_彭世足疗 | 泵阀展|阀门展|水泵展|流体机械展 -2025上海国际泵管阀展览会flowtech china | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 颗粒机,颗粒机组,木屑颗粒机-济南劲能机械有限公司 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 食品级焦亚硫酸钠_工业级焦亚硫酸钠_焦亚硫酸钠-潍坊邦华化工有限公司 | 旋转/数显粘度计-运动粘度测定仪-上海平轩科学仪器 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 东莞喷砂机-喷砂机-喷砂机配件-喷砂器材-喷砂加工-东莞市协帆喷砂机械设备有限公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 电子元器件呆滞料_元器件临期库存清仓尾料_尾料优选现货采购处理交易商城 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 海尔生物医疗四川代理商,海尔低温冰箱四川销售-成都壹科医疗器械有限公司 | TwistDx恒温扩增-RAA等温-Jackson抗体-默瑞(上海)生物科技有限公司 |