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 相关文章推荐
很实用的一个完整email发送程序
Oct 09 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
基于empty函数的输出详解
Jun 17 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
php查询mysql数据库并将结果保存到数组的方法
Mar 18 PHP
PHP保存session到memcache服务器的方法
Jan 19 PHP
PHP共享内存用法实例分析
Feb 12 PHP
PHP实现双链表删除与插入节点的方法示例
Nov 11 PHP
PHP 并发场景的几种解决方案
Jun 14 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
PHP网页安全认证的实例详解
2017/09/28 PHP
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
2011/10/29 Javascript
基于JQuery实现的类似购物商城的购物车
2011/12/06 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
JavaScript的Backbone.js框架的一些使用建议整理
2016/02/14 Javascript
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
2016/11/21 NodeJs
详解Javascript几种跨域方式总结
2017/02/27 Javascript
vue 使用html2canvas将DOM转化为图片的方法
2018/09/11 Javascript
React通过redux-persist持久化数据存储的方法示例
2019/02/14 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
django 控制页面跳转的例子
2019/08/06 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
用pushplus+python监控亚马逊到货动态推送微信
2021/01/29 Python
详解canvas在圆弧周围绘制文本的两种写法
2018/05/22 HTML / CSS
美国领先的水果篮送货公司和新鲜水果供应商:The Fruit Company
2018/02/13 全球购物
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
大学毕业感言50字
2014/02/07 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
1亿有多大教学反思
2014/05/01 职场文书
二年级上册数学教学计划
2015/01/20 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
Nginx源码编译安装过程记录
2021/11/17 Servers
Python3的进程和线程你了解吗
2022/03/16 Python