1.项目需求

根据用户的定位,查询距离大约5公里(该距离可以调节)的商家,并显示与用户的距离。

2.思路实现

1.先筛选出来距离5公里的商家,(必须要分页)

2.根据选筛选出来的商家进行距离计算.

3.代码实现

1.获取附近5公里商家(方法可以自己百度)

    //查询距离自己5千米的商铺public function selectcltext(){$page = I('post.page');                                    //分页$relevance = I('post.relevance');                          //分类$size = 10;$lng = I('post.long');$lat = I('post.lat');$point = $this->returnSquarePoint($lng,$lat,50000);        //得到四个点// tp3.2的判断大小经度纬度的判断$where['relevance']  = array('eq',$relevance);$where['latitude']  = array(array('gt',$point[minLat]),array('lt',$point[maxLat])); $where['longitude']  = array(array('gt',$point[minLon]),array('lt',$point[maxLon]));$res[count] = M('ppjj_cltext')->where($where)->count(); $res[da] = M('ppjj_cltext')->where($where)->page($page,$size)->select(); //查询距离的方法调用if ($res[count]> 0){$result = $res[da];foreach($result as $key => $value){$distance = $this->getDistance($lat,$value[latitude],$lng,$value[longitude],2,2); $result[$key]['distance'] = $distance;}$res[da] = $result;$this->ajaxReturn($res);}else{echo "none";}}// *@param lng float 经度//  *@param lat float 纬度//  *@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为单位米//  *@return array 正方形的四个点的经纬度坐标public 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;}

2.查询距离方法

    // 查询距离public function getDistance($latitude1,$latitude2,$longitude1,$longitude2,$unit){$EARTH_RADIUS = 6370.996; // 地球半径系数$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 = $distance * $EARTH_RADIUS * 1000;if($unit==2){$distance = $distance / 1000;}return $distance;}

注释:以上所有的方法,百度均可以查到

1.注意自己的判断方法,本人第一次把这个tp3.2的区间查询写错了

php根据经纬度查询附近工人,并算出距离(tp3.2)相关推荐

  1. android double值排序,android根据Double类型数据经纬度算出距离再根据距离实现排序功能...

    前言 项目中用到全国的加油站数据加载 并根据经纬度算出距离 然后根据距离从小到大排序 主要是数据类型是Double 这里必须对数据进行封装 实现也不难 这里讲一下自己的实现方法和实现思路 效果图 先来 ...

  2. Mysql实现根据经纬度查询周围的商家,并按距离进行排序

    今天要说的是如何在Mysql中实现根据已知的经纬度查询周围的商家(或者是别的带有经纬度字段的表)并且根据距离的远近来进行排序! 废话就不多说了,直奔主题~ 首先有这么个商城表 lng代表经度,lat代 ...

  3. python通过经纬度算出距离_Python中如何利用经纬度进行距离计算

    前些天由于工作中需求,要计算经纬度之间的距离,当我去网上搜索距离计算的方法时,发现很多文章中的方法乍一看都是很不同的,同是进行距离计算,为啥这么不一样呢?后来才发现问题在于很多文章没有进行相关的原理说 ...

  4. 数据库根据经纬度查询离我最近的数据

    之前很啥很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的 ...

  5. mysql根据经纬度查询范围内数据,并根据距离排序

    最近接到一个新需求,要根据经纬度查询指定范围内的数据,并且根据距离进行排序,网上找了找相关实现方法,记录一下. java代码如下 public final class DistanceUtils {/ ...

  6. PHP根据经纬度查询地理位置

    PHP根据经纬度查询地理位置 function getCity($longitude, $latitude){//调取百度接口,其中ak为百度帐号key,注意location纬度在前,经度在后$api ...

  7. 全国各区县经纬度查询困难?精度不够?试试自制市区县经纬度查询工具并将数据保存本地

    自制中国各区县经纬度查询工具 1. 引言 1.1 问题描述 1.2 基本思路 2. 获取全国市区县的名称 2.1 数据初阅 2.2 数据转移 2.3 数据去重 3. 获取全国市区县的经纬度数据 3.1 ...

  8. 一刀工具箱 - 经纬度查询

    一刀工具箱是一款集合多个实用工具的智能APP,包含100多种不同的功能,基本满足您在工作生活使用需求,只需要一个应用就可以解决日常小问题,不再需要下多个应用 1.打开一刀APP,进行APP首页,点击& ...

  9. 根据经纬度查询,mysql查询计算经纬度

    mysql经纬度查询并且计算2KM范围内附近用户的sql查询性能优化实例教程 https://www.cnblogs.com/mgbert/p/4146538.html 

  10. app 隔几秒记录当前经纬度位置_经纬度查询app下载-经纬度查询(在线定位查询)官方版下载v3.6...

    经纬度查询是一款在线定位查询的app,一键快速的获取位置,并且智能的系统还能够进行高德地图的切换,手机上查询也比较的方便,高清的画质,用户在使用的时候非常的清晰,同时还可以了解纬度值的精准信息哦!赶紧 ...

最新文章

  1. 每一种SDS都能做超融合吗?
  2. Spring MVC 基础
  3. 【EventBus】发布-订阅模式 ( Android 中使用 发布-订阅模式 进行通信 )
  4. 博弈论笔记:谈判与讨价还价
  5. C语言经典算法 11-20
  6. 真正CSDN博客文章一键转载插件(含源码)
  7. pdf.js插件使用记录,在线打开pdf
  8. php 分割二维数组,拆分二维数组 php
  9. pytorch argmax_PyTorch深度学习模型的服务化部署
  10. java中多叉树(tree)的生成与显示
  11. 单片机c语言设计电风扇,基于单片机的智能电风扇的设计(毕业论文).docx
  12. 肿瘤(Oncology)生物信息学分析简介
  13. UWP开发入门(八)——聊天窗口和ItemTemplateSelector
  14. Java实现anagram算法
  15. 整型数据分类及其取值范围
  16. P1129 矩阵游戏
  17. Android 65536错误:Cannot fit requested classes in a single dex file
  18. 《水经注地图服务》数据源说明
  19. python元素分类_在python中对列表的元素进行分类
  20. 无人驾驶汽车系统入门(一)——卡尔曼滤波与目标追踪

热门文章

  1. mysql 如何抓慢查询_如何进行 MySQL慢查询 操作
  2. Docker容器实战(七) - 容器中进程视野下的文件系统
  3. Android 网络管理
  4. WIN10下搭建vue开发环境
  5. 【数据获取】建筑轮廓数据的N种获取方法
  6. hdu2084数塔----DP入门
  7. 宁波大学计算机专硕分数线,2019宁波大学研究生分数线汇总(含2016-2019历年复试)...
  8. java类学习_Java常用类学习
  9. netbeans写登录界面java_NetBeans 界面美化与字体设置
  10. 华北五省计算机应用大赛2018,2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛举行...