Je suis venu avec une solution et je voudrais l'afficher ici juste pour avoir une opinion à ce sujet. Notez que la structure de la table ci-dessus a été légèrement modifiée en ajoutant une nouvelle colonne "POINT d'emplacement" qui est construite en utilisant la latitude et la longitude à chaque insertion.
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 //
Il y a une question similaire ici: http://stackoverflow.com/questions/1078386/see-if-lat-long-falls-within-a-polygon-using-mysql La réponse de Paul Dixon (qui est fondamentalement que vous ne pouvez pas le faire en utilisant les fonctions MySQL GIS) correspond à ma compréhension de la situation. – Mike