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;}

根据经纬度求距离(算法)相关推荐

  1. 已知两个经纬度求距离C++代码

    #include <math.h>// 角度转弧度 double rad(double d) {const double PI = 3.1415926535898;return d * P ...

  2. MATLAB中根据两点的经纬度求距离

    重点是用matlab计算距离得到的单位: %% 初始化参数 clear all; close all; clc; %% 读取两点的坐标 coordinate_a = [39.85929,116.470 ...

  3. [转载]根据两点的经纬度求方位角和距离,等

    转:http://blog.sina.com.cn/s/blog_658a93570101hynw.html 原文地址:根据两点的经纬度求方位角和距离,等作者:多乎哉不多也多亦不多乎实乃少也 最近自己 ...

  4. 两个经纬度偏角_[转载]根据两点的经纬度求方位角和距离,等

    最近自己做的一个小东西要用到经纬度方面的计算,查遍中文网页见到的要么基本上是一帮惜字如金装大爷的"砖家",要么就是像贴膏药一样,啪,一大堆代码往上一贴,一点说明都没有,让人看不懂, ...

  5. 通过经纬度坐标计算距离的方法(实为通过一个经纬度和距离角度求另一个经纬度)

    转自:https://www.cnblogs.com/softfair/p/lat_lon_distance_bearing_new_lat_lon.html 通过经纬度坐标计算距离的方法(经纬度距离 ...

  6. java根据经纬度坐标计算两点的距离算法

    2019独角兽企业重金招聘Python工程师标准>>> /** * Created by yuliang on 2015/3/20. */ public class Location ...

  7. Python 根据地址获取经纬度及求距离

    方法一: 使用Geopy包 : https://github.com/geopy/geopy   (仅能精确到城镇,具体街道无结果返回) from geopy.geocoders import Nom ...

  8. php 经纬度 距离排序,php mysql 根据经纬度计算距离和排序

    #1.两点距离(1.4142135623730951) select st_distance(point(0,0),point(1,1)); select st_distance(point (120 ...

  9. mysql,php和js根据经纬度计算距离

    根据经纬度计算距离公式 图片来自互联网 对上面的公式解释如下: Lung1 Lat1表示A点经纬度, Lung2 Lat2表示B点经纬度: a=Lat1 – Lat2 为两点纬度之差 b=Lung1 ...

  10. python GPS解析,坐标转换,两经纬度直线距离,方位角

    安装模块 pip install pyserial pip install serial 完整代码 # 导入模块 import os from time import sleep from seria ...

最新文章

  1. android不同Activity之间的数据共享
  2. POJ 1228 —— “稳定”凸包
  3. 【转】2.4SharePoint服务器端对象模型 之 访问网站和列表数据(Part 4)
  4. BMVC18|无监督深度关联学习大幅提高行人重识别性能(附Github地址)
  5. 格力发布公告称双11期间让利30亿元打击低质伪劣产品
  6. DNS(1) DNS基本概念和域名系统
  7. Java集合系列总结
  8. Linux电源驱动-Linux Cpuidle Framework
  9. vs 2015查看动态库
  10. 画中画功能的遥控器按键设计
  11. 韩顺平Java自学笔记 集合
  12. 数字图像处理第三版中文版部分答案-冈萨雷斯
  13. DELL linux 网卡驱动升级
  14. js根据经纬度计算距离
  15. 安卓机器人+淘宝客介绍
  16. 基于redis实现活跃用户统计功能
  17. 小白刷LeeCode(算法篇)7
  18. 网站运营中活动组织的三项注意
  19. 计算机综合症怎么治,小窍门防治电脑综合征
  20. c#样条曲线命令_C# chart控件绘制曲线

热门文章

  1. 【SpringBoot深入浅出系列】SpringBoot之集成JUnit5进行单元测试
  2. 海康8700视频监控OCX控件注册(如无法查看监控)
  3. 吞吐量测试(RFC2544)超详细步骤_使用思博伦spirent testcenter_双极未来
  4. 手机网络延迟测试软件,手机网速延迟测试在线(手机网络延迟测试工具)
  5. java 重载的特征_Java中方法的重载详解
  6. win10计算机本地组策略编辑器,win10本地组策略编辑器打不开最佳解决方法
  7. [徐培成系列实战课程]-docker篇-前序
  8. 大话WebRTC的前世今生
  9. 常用图像处理库都有哪些?
  10. [蓝桥杯] 扩散 (Python 实现)