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 24 PHP
php设计模式 Command(命令模式)
Jun 26 PHP
php在window iis的莫名问题的测试方法
May 14 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
Nov 30 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
Aug 01 PHP
PHP文字转图片功能原理与实现方法分析
Aug 31 PHP
laravel 5.4 + vue + vux + element的环境搭配过程介绍
Apr 26 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
php实现QQ小程序发送模板消息功能
Sep 18 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 输入输出流详解及示例代码
2016/08/25 PHP
yii2 上传图片的示例代码
2018/11/02 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
js加解密 脚本解密
2008/02/22 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
详解AngularJS如何实现跨域请求
2016/08/22 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
vue.js中指令Directives详解
2017/03/20 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
Angular2 组件通信的实例代码
2017/06/23 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
浅谈JS函数节流防抖
2017/10/18 Javascript
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
JS学习笔记之贪吃蛇小游戏demo实例详解
2019/05/29 Javascript
微信小程序如何实现radio单选框单击打勾和取消
2020/01/21 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
Python获取当前时间的方法
2014/01/14 Python
Python装饰器的函数式编程详解
2015/02/27 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
Python列表如何更新值
2020/05/27 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
美国殿堂级滑板、冲浪、滑雪服装品牌:Volcom(钻石)
2017/04/20 全球购物
简洁的英文求职信范文
2014/05/03 职场文书
评职称个人总结
2015/03/05 职场文书
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript