PHP查询附近的人及其距离的实现方法
本文实例讲述了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`wherelat<>0andlat>{$squares['right-bottom']['lat']}andlat<{$squares['left-top']['lat']}andlng>{$squares['left-top']['lng']}andlng<{$squares['right-bottom']['lng']}"; //获取两点之间的距离 functiongetDistanceBetweenPointsNew($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; returncompact('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($distanceas$unit=>$value){ echo$unit.':'.number_format($value,4).'<br/>'; } ?>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《php正则表达式用法总结》、《PHP+ajax技巧与应用小结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。