Ini adalah jawaban yang sangat berguna bagi saya, tetapi saya menggunakan MySQL 5.7.18, yang memiliki fungsi kueri geo yang lebih maju atau hanya berbeda. Fungsi jarak yang diposting tidak diperlukan lagi- gunakan ST_Distance_Sphere. Jadi, inilah pembaruan kode yang sama untuk membuat DistanceFromLine sesuai dengan MySQL modern (5.7.6+)...
DROP 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//