根据经纬度求距离(算法)
public function howLang(Request $request){$navi_id = $request->get('id');//分类id,或其他查询条件$storex = $request->get('longitude');//经度$storey = $request->get('latitude');//纬度$distance = $request->get('distance');//搜索距离范围$result = DB::select("SELECT*,(6371 * acos (cos ( radians({$storey}) )* cos( radians( latitude ) ) //表字段中纬度字段* cos( radians( longitude ) - radians({$storex}) ) //表字段中经度字段+ sin ( radians({$storey}) )* sin( radians( latitude ) ) //表字段中纬度字段)) AS distanceFROM storelistWHERE navi_id = {$navi_id} //条件,这里是分类idHAVING distance < {$distance} //一定范围内的地点ORDER BY distance //通过距离大小排序LIMIT 0 , 20; "); //分段查询,偏移量设为20foreach($result as $k=>$v){ $result[$k] = (array)$v; //laravel框架,对象转数组}$result = $this->distance($result,$storex,$storey);return json_encode($result,JSON_UNESCAPED_UNICODE);}/*** @param $result 数组* @param $storex 经度* @param $storey 纬度* @return mixed 计算出距离赋值到数组里*/public function distance($result,$storex,$storey){foreach($result as $k=>$v){$km = $this->km(round($this->getdistance($storex,$storey,$v['longitude'],$v['latitude'])));$result[$k]['km'] =$km ;}return $result;}/***显示方式,km 或 m*/public function km($km){if($km < 1000){return $km.'m';}else{return ($km/1000).'km';}}/*** 求两个已知经纬度之间的距离,单位为米* @param lng1 $ ,lng2 经度* @param lat1 $ ,lat2 纬度* @return float 距离,单位米*/function getdistance($lng1, $lat1, $lng2, $lat2) {// 将角度转为狐度$radLat1 = deg2rad($lat1); //deg2rad()函数将角度转换为弧度$radLat2 = deg2rad($lat2);$radLng1 = deg2rad($lng1);$radLng2 = deg2rad($lng2);$a = $radLat1 - $radLat2;$b = $radLng1 - $radLng2;$s = 2 * asin(sqrt(pow(sin($a / 2), 2) + cos($radLat1) * cos($radLat2) * pow(sin($b / 2), 2))) * 6371 * 1000;return $s;}
根据经纬度求距离(算法)相关推荐
- 已知两个经纬度求距离C++代码
#include <math.h>// 角度转弧度 double rad(double d) {const double PI = 3.1415926535898;return d * P ...
- MATLAB中根据两点的经纬度求距离
重点是用matlab计算距离得到的单位: %% 初始化参数 clear all; close all; clc; %% 读取两点的坐标 coordinate_a = [39.85929,116.470 ...
- [转载]根据两点的经纬度求方位角和距离,等
转:http://blog.sina.com.cn/s/blog_658a93570101hynw.html 原文地址:根据两点的经纬度求方位角和距离,等作者:多乎哉不多也多亦不多乎实乃少也 最近自己 ...
- 两个经纬度偏角_[转载]根据两点的经纬度求方位角和距离,等
最近自己做的一个小东西要用到经纬度方面的计算,查遍中文网页见到的要么基本上是一帮惜字如金装大爷的"砖家",要么就是像贴膏药一样,啪,一大堆代码往上一贴,一点说明都没有,让人看不懂, ...
- 通过经纬度坐标计算距离的方法(实为通过一个经纬度和距离角度求另一个经纬度)
转自:https://www.cnblogs.com/softfair/p/lat_lon_distance_bearing_new_lat_lon.html 通过经纬度坐标计算距离的方法(经纬度距离 ...
- java根据经纬度坐标计算两点的距离算法
2019独角兽企业重金招聘Python工程师标准>>> /** * Created by yuliang on 2015/3/20. */ public class Location ...
- Python 根据地址获取经纬度及求距离
方法一: 使用Geopy包 : https://github.com/geopy/geopy (仅能精确到城镇,具体街道无结果返回) from geopy.geocoders import Nom ...
- php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序
#1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120 ...
- mysql,php和js根据经纬度计算距离
根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...
- python GPS解析,坐标转换,两经纬度直线距离,方位角
安装模块 pip install pyserial pip install serial 完整代码 # 导入模块 import os from time import sleep from seria ...
最新文章
- android不同Activity之间的数据共享
- POJ 1228 —— “稳定”凸包
- 【转】2.4SharePoint服务器端对象模型 之 访问网站和列表数据(Part 4)
- BMVC18|无监督深度关联学习大幅提高行人重识别性能(附Github地址)
- 格力发布公告称双11期间让利30亿元打击低质伪劣产品
- DNS(1) DNS基本概念和域名系统
- Java集合系列总结
- Linux电源驱动-Linux Cpuidle Framework
- vs 2015查看动态库
- 画中画功能的遥控器按键设计
- 韩顺平Java自学笔记 集合
- 数字图像处理第三版中文版部分答案-冈萨雷斯
- DELL linux 网卡驱动升级
- js根据经纬度计算距离
- 安卓机器人+淘宝客介绍
- 基于redis实现活跃用户统计功能
- 小白刷LeeCode(算法篇)7
- 网站运营中活动组织的三项注意
- 计算机综合症怎么治,小窍门防治电脑综合征
- c#样条曲线命令_C# chart控件绘制曲线
热门文章
- 【SpringBoot深入浅出系列】SpringBoot之集成JUnit5进行单元测试
- 海康8700视频监控OCX控件注册(如无法查看监控)
- 吞吐量测试(RFC2544)超详细步骤_使用思博伦spirent testcenter_双极未来
- 手机网络延迟测试软件,手机网速延迟测试在线(手机网络延迟测试工具)
- java 重载的特征_Java中方法的重载详解
- win10计算机本地组策略编辑器,win10本地组策略编辑器打不开最佳解决方法
- [徐培成系列实战课程]-docker篇-前序
- 大话WebRTC的前世今生
- 常用图像处理库都有哪些?
- [蓝桥杯] 扩散 (Python 实现)