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中通过ADO调用Access数据库的方法测试不通过
Dec 31 PHP
使用zend studio for eclipse不能激活代码提示功能的解决办法
Oct 11 PHP
php 文件上传类代码
Aug 06 PHP
php cli 小技巧
Jun 03 PHP
php include类文件超时问题处理
Feb 06 PHP
php递归删除指定文件夹的方法小结
Apr 20 PHP
windows server 2008/2012安装php iis7 mysql环境搭建教程
Jun 30 PHP
PhpStorm terminal无法输入命令的解决方法
Oct 09 PHP
PHP实现的文件操作类及文件下载功能示例
Dec 24 PHP
php中通过eval实现字符串格式的计算公式
Mar 18 PHP
PHP实现Redis单据锁以及防止并发重复写入
Apr 10 PHP
PHP实现关键字搜索后描红功能示例
Jul 03 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
PHP通用检测函数集合
2006/11/25 PHP
PHP+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
php图片添加文字水印实现代码
2016/03/15 PHP
判断是否输入完毕再激活提交按钮
2006/06/26 Javascript
浅析JavaScript中的delete运算符
2013/11/30 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
详解webpack解惑:require的五种用法
2017/06/09 Javascript
Vue axios 中提交表单数据(含上传文件)
2017/07/06 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
Ant Design Pro 下实现文件下载的实现代码
2019/12/03 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
python使用pil生成图片验证码的方法
2015/05/08 Python
Python中绑定与未绑定的类方法用法分析
2016/04/29 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
Python开发最牛逼的IDE——pycharm
2018/08/01 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
python算的上脚本语言吗
2020/06/22 Python
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
排序都有哪几种方法?请列举。用JAVA实现一个快速排序
2014/02/16 面试题
土木工程专业大学毕业生求职信
2013/10/13 职场文书
火车的故事教学反思
2014/02/11 职场文书
公司档案管理制度
2015/08/05 职场文书
初中语文教师研修日志
2015/11/13 职场文书
小学班主任心得体会
2016/01/07 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript