根据一个经纬度求几公里范围内的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据一个经纬度求几公里范围内的数据相关的知识,希望对你有一定的参考价值。


/*
* *求两个已知经纬度之间的距离,单位为米 *@param lng1,lng2 经度 *@param lat1,lat2 纬度 *@return float 距离,单位米 **/ function getDistance($lng1,$lat1,$lng2,$lat2){ //将角度转为狐度 $radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度 $radLat2=deg2rad($lat2); $radLng1=deg2rad($lng1); $radLng2=deg2rad($lng2); $a=$radLat1-$radLat2; $b=$radLng1-$radLng2; $s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137*1000; return $s; } sql版:这里x是经度,Y是纬度 SELECT FORMAT(((6370996.81)*ACOS(COS( coordy2 *PI()/180) * COS({$y}*PI()/180) * COS(( coordx2 *PI()/180)-({$x}*PI()/180)) + SIN( coordy2 *PI()/180)*SIN( {$y} *PI()/180)))/1000,2) as distance

 

解释一下下

这里是两个版本,一个是封装的函数  一个是sql语句

在sql版本中,$x,$y因为是变量所以加了{},正式写的时候是不用加的

例如

技术分享

因为这里除以了1000,并且保留2为小数,如图:

技术分享

 

所以最后算下来是公里!如果想要米数,那么就把/1000去掉

 

例如:

技术分享

 

 

 

下边的例子调用:

 

技术分享

 


以上是关于根据一个经纬度求几公里范围内的数据的主要内容,如果未能解决你的问题,请参考以下文章

自适应最近邻 R 代码以识别每个池塘 1 公里范围内的池塘位置

根据用户当前位置设置 2 公里外的随机地理围栏位置

在我周围 5 公里半径值范围内的 android 应用上标记地理位置。

mySQL 在 y 范围内选择 x 公里/英里内的邮政编码

【在线等】怎么在百度地图上查找方圆多少公里内的地方

找到给定半径内的附近位置