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简单命令代码集锦
Sep 24 PHP
php数组的概述及分类与声明代码演示
Feb 26 PHP
php设计模式之命令模式使用示例
Mar 02 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
PHP提高编程效率的20个要点
Sep 23 PHP
PHP正则匹配操作简单示例【preg_match_all应用】
Jul 10 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
Laravel自定义 封装便捷返回Json数据格式的引用方法
Sep 29 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
Apr 23 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
PHP4实际应用经验篇(2)
2006/10/09 PHP
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
IStream与TStream之间的相互转换
2008/08/01 PHP
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
jQuery源码分析-03构造jQuery对象-源码结构和核心函数
2011/11/14 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
Angular4学习笔记之根模块与Ng模块
2017/09/09 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
2018/11/05 Javascript
详解vue的双向绑定原理及实现
2019/05/05 Javascript
JS实现简易日历效果
2021/01/25 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
Python基于scapy实现修改IP发送请求的方法示例
2017/07/08 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
在matplotlib的图中设置中文标签的方法
2018/12/13 Python
8段用于数据清洗Python代码(小结)
2019/10/31 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
中专生学习生活的自我评价分享
2013/10/27 职场文书
自荐书范文范例
2014/02/13 职场文书
乳制品整治工作方案
2014/05/29 职场文书
工作岗位职责范本
2015/02/15 职场文书
中学教师读书笔记
2015/07/01 职场文书
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android