我们有一个MySQL存储过程,该过程接受输入作为纬度和经度。此存储过程必须返回最接近该经度/纬度的3个区域,以及距给定经度/纬度的公里数各自的距离。
区域表具有ID,名称,位置。该位置是具有POINT(纬度,经度)的点类型。我尝试了以下解决方案:
SELECT
id,
name,
X(position) AS 'latitude',
Y(position) AS 'longitude',
(
GLength(
LineStringFromWKB(
LineString(
position,
GeomFromText('POINT(@lat @long)')
)
)
)
)
AS distance
FROM areas
ORDER BY distance ASC
limit 3;
上述解决方案中的几个问题: