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截取中文字符串的问题
Jul 12 PHP
不用数据库的多用户文件自由上传投票系统(3)
Oct 09 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
phpMyAdmin2.11.6安装配置方法
Aug 24 PHP
PHP 循环删除无限分类子节点的实现代码
Jun 21 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
Nov 07 PHP
PHP按行读取、处理较大CSV文件的代码实例
Apr 09 PHP
php语言的7种基本的排序方法
Dec 28 PHP
php如何执行非缓冲查询API
Jul 22 PHP
简单的自定义php模板引擎
Aug 26 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
如何在PHP中读写文件
Sep 07 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 str_replace的替换漏洞
2008/03/15 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
php实现在线考试系统【附源码】
2018/09/18 PHP
setTimeout函数兼容各主流浏览器运行执行效果实例
2013/06/13 Javascript
js获取当前月的第一天和最后一天的小例子
2013/11/18 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
javascript如何写热点图
2015/12/08 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
Vue与React的区别和优势对比
2020/12/18 Vue.js
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
详解python开发环境搭建
2016/12/16 Python
Pandas实现数据类型转换的一些小技巧汇总
2018/05/07 Python
python爬虫基础教程:requests库(二)代码实例
2019/04/09 Python
详解python中的线程与线程池
2019/05/10 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Python3 requests模块如何模仿浏览器及代理
2020/06/15 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
班组长的岗位职责
2013/12/09 职场文书
圣诞节红领巾广播稿
2014/02/03 职场文书
2014年元旦活动方案
2014/02/15 职场文书