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正则的Unknown Modifier错误解决方法
Mar 02 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
PHP 第二节 数据类型之数值型
Apr 28 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
基于php缓存的详解
May 15 PHP
解析php获取字符串的编码格式的方法(函数)
Jun 21 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
Dec 10 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
php使用curl实现ftp文件下载功能
May 16 PHP
PHP实现的服务器一致性hash分布算法示例
Aug 09 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高级OOP技术演示
2009/08/27 PHP
PHP获取数组中重复最多的元素的实现方法
2014/11/11 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
js调用AJAX时Get和post的乱码解决方法
2013/06/04 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
微信小程序 支付功能开发错误总结
2017/02/21 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
ReactNative列表ListView的用法
2017/08/02 Javascript
NodeJS实现不可逆加密与密码密文保存的方法
2018/03/16 NodeJs
pm2发布node配置文件ecosystem.json详解
2019/05/15 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[02:38]2018年度DOTA2最佳劣单位选手-完美盛典
2018/12/17 DOTA
python冒泡排序算法的实现代码
2013/11/21 Python
Python3实现生成随机密码的方法
2014/08/23 Python
python操作redis的方法
2015/07/07 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
Python 中Django验证码功能的实现代码
2019/06/20 Python
用python生成与调用cntk模型代码演示方法
2019/08/26 Python
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
加油口号大全
2014/06/13 职场文书
爱护公共设施的标语
2014/06/24 职场文书
趣味运动会广播稿
2014/09/13 职场文书
村委会贫困证明范本
2014/09/17 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
Python爬虫数据的分类及json数据使用小结
2021/03/29 Python