Đây là một câu trả lời rất hữu ích cho tôi, nhưng tôi đang sử dụng MySQL 5.7.18, có nhiều chức năng truy vấn địa lý nâng cao hơn hoặc chỉ khác. Hàm khoảng cách đã đăng không còn cần thiết nữa- sử dụng ST_Distance_Sphere. Vì vậy, đây là bản cập nhật của cùng một mã để làm cho DistanceFromLine tuân thủ với MySQL (5.7.6+) hiện đại ...
HàmDROP function IF EXISTS `DistanceFromLine`;
delimiter //
CREATE FUNCTION `DistanceFromLine`(
route LINESTRING, point1 POINT
) RETURNS INT DETERMINISTIC
BEGIN
DECLARE a INT Default 0 ;
DECLARE minDistance INT Default 0;
DECLARE currentDistance INT Default 0;
DECLARE currentpoint point ;
DECLARE size INT Default 0 ;
SET size = ST_NumPoints(route);
simple_loop: LOOP
SET a = a+1;
SET currentpoint = ST_PointN(route,a);
SET currentDistance = ST_Distance_Sphere(point1,currentpoint);
IF a = 1 THEN
SET minDistance = currentDistance;
END IF;
IF currentDistance < minDistance THEN
SET minDistance = currentDistance;
END IF;
IF a=size THEN
LEAVE simple_loop;
END IF;
END LOOP simple_loop;
RETURN (minDistance);
END//