PHP lareal_怎么样能在mysql里结合php的函数

这篇博客讨论了如何在MySQL中结合PHP函数计算数据库中经纬度与当前定位地点的距离,并按距离进行排序。提供了将SQL Server的函数转换为MySQL的示例,创建了一个名为`fnGetDistance`的MySQL函数,用于计算两个地理坐标点之间的距离。通过改造此函数,可以在数据库查询时直接获取按距离排序的数据。
摘要由CSDN通过智能技术生成

数据库里的经纬度想和当前定位地点的经纬度进行计算,差值最小的数据排在前面,也就是按距离排序,这个函数已经有了,就是不知道怎么结合mysql查询

/**

* 计算两个坐标之间的距离(米)

* @param float $fP1Lat 起点(纬度)

* @param float $fP1Lon 起点(经度)

* @param float $fP2Lat 终点(纬度)

* @param float $fP2Lon 终点(经度)

* @return int

*/

function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){

…..

return $distance;

}

解决方案

60

把这个函数改造一下就行了,在mysql中写一个函数,直接调用。

本人这里有 sql server版本的,你改成mysql的就可以了,提供给你参考:

create FUNCTION dbo.fnGetDistance

(

@LatBegin REAL,

@LngBegin REAL,

@LatEnd REAL,

@LngEnd REAL

)

RETURNS FLOAT

AS

BEGIN

DECLARE @Distance REAL

DECLARE @EARTH_RADIUS REAL

SET @EARTH_RADIUS = 6378.137

DECLARE @RadLatBegin REAL, @RadLatEnd REAL, @RadLatDiff REAL, @RadLngDiff REAL

SET @RadLatBegin = @LatBegin * PI() / 180.0

SET @RadLatEnd = @LatEnd * PI() / 180.0

SET @RadLatDiff = @RadLatBegin - @RadLatEnd

SET @RadLngDiff = @LngBegin * PI() / 180.0 - @LngEnd * PI() / 180.0

SET @Distance = 2 * ASIN(SQRT(POWER(Sin(@RadLatDiff / 2), 2) + COS(@RadLatBegin) * COS(@RadLatEnd) * POWER(SIN(@RadLngDiff/2),2)))

SET @Distance = @Distance * @EARTH_RADIUS

RETURN @Distance

END

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明怎么样能在mysql里结合php的函数!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值