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制作新闻系统的思路
Oct 09 PHP
php+mysql 实现身份验证代码
Mar 24 PHP
php 归并排序 数组交集
May 10 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
php curl 伪造IP来源的实例代码
Nov 01 PHP
PHP函数实现分页含文本分页和数字分页
Oct 23 PHP
PHP获取POST数据的几种方法汇总
Mar 03 PHP
PHP合并discuz用户脚本的方法
Aug 04 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
php rsa 加密,解密,签名,验签详解
Dec 06 PHP
Laravel 集成 Geetest验证码的方法
May 14 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 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
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
JQuery基础语法小结
2015/02/27 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
jquery用ajax方式从后台获取json数据后如何将内容填充到下拉列表
2015/08/26 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
小程序登录之支付宝授权的实现示例
2019/12/13 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
vue实现计算器功能
2020/02/22 Javascript
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
店长岗位职责
2013/11/21 职场文书
大学四年职业生涯规划书范文
2014/01/02 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
迎国庆演讲稿
2014/09/05 职场文书
2015感人爱情寄语
2015/02/26 职场文书
2015入党自荐书范文
2015/03/05 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
2016学校先进党组织事迹材料
2016/02/29 职场文书
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
python运算符之与用户交互
2022/04/13 Python
Spring Boot项目如何优雅实现Excel导入与导出功能
2022/06/10 Java/Android