PHP查询附近的人及其距离的实现方法


Posted in PHP onMay 11, 2016

本文实例讲述了PHP查询附近的人及其距离的实现方法。分享给大家供大家参考,具体如下:

<?php
//获取该点周围的4个点
$distance = 1;//范围(单位千米)
$lat = 113.873643;
$lng = 22.573969;
define('EARTH_RADIUS', 6371);//地球半径,平均半径为6371km
$dlng = 2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));
$dlng = rad2deg($dlng);
$dlat = $distance/EARTH_RADIUS;
$dlat = rad2deg($dlat);
$squares = 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)
        );
print_r($squares['left-top']['lat']);
//从数库查询匹配的记录
$info_sql = "select * from `A` where lat<>0 and lat>{$squares['right-bottom']['lat']} and lat<{$squares['left-top']['lat']} and lng>{$squares['left-top']['lng']} and lng<{$squares['right-bottom']['lng']} ";
//获取两点之间的距离
function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) {
  $theta = $longitude1 - $longitude2;
  $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));
  $miles = acos($miles);
  $miles = rad2deg($miles);
  $miles = $miles * 60 * 1.1515;
  $feet = $miles * 5280;
  $yards = $feet / 3;
  $kilometers = $miles * 1.609344;
  $meters = $kilometers * 1000;
  return compact('miles','feet','yards','kilometers','meters'); 
}
$point1 = array('lat' => 40.770623, 'long' => -73.964367);
$point2 = array('lat' => 40.758224, 'long' => -73.917404);
$distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);
foreach ($distance as $unit => $value) {
  echo $unit.': '.number_format($value,4).'<br />';
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
php后门URL的防范
Nov 12 PHP
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
May 05 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
为PHP5.4开启Zend OPCode缓存
Dec 26 PHP
smarty模板引擎从php中获取数据的方法
Jan 22 PHP
php获得文件大小和文件创建时间的方法
Mar 13 PHP
php使用Image Magick将PDF文件转换为JPG文件的方法
Apr 01 PHP
PHP借助phpmailer发送邮件
May 11 PHP
PHP编程实现的TCP服务端和客户端功能示例
Apr 13 PHP
PHP中实现中文字串截取无乱码的解决方法
May 29 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 PHP
Smarty分页实现方法完整实例
May 11 #PHP
php简单获取复选框值的方法
May 11 #PHP
php上传图片类及用法示例
May 11 #PHP
php通过smtp邮件验证登陆的方法
May 11 #PHP
Smarty变量用法详解
May 11 #PHP
基于PHP实现商品成交时发送短信功能
May 11 #PHP
Smarty环境配置与使用入门教程
May 11 #PHP
You might like
简单的PHP多图上传小程序代码
2011/07/17 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
js左侧多级菜单动态的解决方案
2010/02/01 Javascript
15 个 JavaScript Web UI 库
2010/05/19 Javascript
js判断鼠标同时离开两个div的思路及代码
2013/05/31 Javascript
Eclipse下jQuery文件报错出现错误提示红叉
2014/01/13 Javascript
js中的for如何实现foreach中的遍历
2014/05/31 Javascript
javascript中的return和闭包函数浅析
2014/06/06 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
JavaScript给url网址进行encode编码的方法
2015/03/18 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
three.js实现3D视野缩放效果
2017/11/16 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
[01:19]DOTA2城市挑战赛报名开始 开启你的城市传奇
2018/03/23 DOTA
Python动态加载模块的3种方法
2014/11/22 Python
用virtualenv建立多个Python独立虚拟开发环境
2017/07/06 Python
python 变量初始化空列表的例子
2019/11/28 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
世界领先的以旅馆为主的在线预订平台:Hostelworld
2016/10/09 全球购物
白宫黑市官网:White House Black Market
2016/11/17 全球购物
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
复核员上岗演讲稿
2014/01/05 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
关于安全演讲稿
2014/05/09 职场文书
幼儿园卫生保健制度
2015/08/05 职场文书
《爬天都峰》教学反思
2016/02/23 职场文书
如何写好一份优秀的工作总结?
2019/06/21 职场文书