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