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下通过伪造http头破解防盗链的代码
Jul 03 PHP
php expects parameter 1 to be resource, array given 错误
Mar 23 PHP
The specified CGI application misbehaved by not returning a complete set of HTTP headers
Mar 31 PHP
php加密解密实用类分享
Jan 07 PHP
迅速确定php多维数组的深度的方法
Jan 07 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
php判断输入是否是纯数字,英文,汉字的方法
Mar 05 PHP
Symfony核心类概述
Mar 17 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
Yii实现显示静态页的方法
Apr 25 PHP
PHP+JS实现的商品秒杀倒计时用法示例
Nov 15 PHP
Laravel接收前端ajax传来的数据的实例代码
Jul 20 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的特殊设置
2006/10/09 PHP
PHP中的日期加减方法示例
2014/08/21 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
jQuery实现的感应鼠标悬停图片色彩渐显效果
2015/03/03 Javascript
Js数组排序函数sort()介绍
2015/06/08 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
node实现分片下载的示例代码
2018/10/17 Javascript
浅谈Vue项目骨架屏注入实践
2019/08/05 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
Python编程入门之Hello World的三种实现方式
2015/11/13 Python
如何给Python代码进行加密
2020/01/10 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
2020/05/15 Python
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
Bluebella法国官网:英国性感内衣品牌
2019/05/03 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
linux面试题参考答案(6)
2016/06/23 面试题
编辑找工作求职信分享
2014/01/03 职场文书
十月份红领巾广播稿
2014/01/22 职场文书
办公设备采购方案
2014/03/16 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
关于工作经历的证明书
2014/10/11 职场文书
教师节寄语2015
2015/03/23 职场文书
自荐信格式模板
2015/03/27 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
2015婚礼主持词开场白
2015/05/28 职场文书
孩子满月酒答谢词
2015/09/30 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
golang的文件创建及读写操作
2022/04/14 Golang