Я придумала решение, и я хотела бы опубликовать его здесь просто для того, чтобы иметь мнение об этом.Обратите внимание, что приведенная выше структура таблицы была немного изменена путем добавления нового столбца «POINT местоположения», который строится с использованием широты и долготы при каждой вставке.
CREATE PROCEDURE GetRequestsAroundLocation( IN lat DOUBLE,
IN lon DOUBLE )
BEGIN
SET @answerLocation = GeomFromText( CONCAT( 'POINT( ', lat, ' ', lon, ' )' ) );
SELECT id, token, latitude, longitude FROM Request
WHERE answerId = -1 AND
Intersects( @answerLocation,
GeomFromText( CONCAT( 'POLYGON((', latitude - radius, ' ', longitude - radius, ',',
latitude + radius, ' ', longitude - radius, ',',
latitude + radius, ' ', longitude + radius, ',',
latitude - radius, ' ', longitude + radius, ',',
latitude - radius, ' ', longitude - radius, '))' ) ) ) AND
SQRT( POW( ABS( lat - latitude ), 2 ) + POW( ABS( lon - longitude ), 2 ) ) < radius;
END //