Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir tous les enregistrements de la base de données MySQL qui se trouvent dans Google Maps .getBounds ?

Toutes les réponses précédentes ne fonctionnent que pour 1/4 du monde !

La réponse de W3t Tr3y était proche, mais elle comportait une erreur (extra "<").

Tous ne travaillent que pour les États-Unis, car c'est dans l'hémisphère NORD. Ils ne travaillent pas pour l'hémisphère sud, ni les pays de l'Est (à droite de Greenwich).

Voici une solution simple sans fonctions ni trucs compliqués.

les lettres sont les résultats dans l'ordre dans lequel vous les obtenez de map.getBounds() c'est-à-dire swlat, swlng, nelat, nelng =a, b, c, d.

SELECT * FROM tilistings WHERE
(CASE WHEN a < c
        THEN lat BETWEEN a AND c
        ELSE lat BETWEEN c AND a
END) 
AND
(CASE WHEN b < d
        THEN lng BETWEEN b AND d
        ELSE lng BETWEEN d AND b
END) 

ou une autre solution avec et/ou (vous pouvez tester la vitesse, je ne sais pas comment l'exécuter plus d'une fois dans WorkBench)

SELECT * FROM tilistings WHERE
(a < c AND lat BETWEEN a AND c) OR (c < a AND lat BETWEEN c AND a)
AND 
(b < d AND lng BETWEEN b AND d) OR (d < b AND lng BETWEEN d AND b)

Maintenant, vous pouvez cartographier le monde entier :) J'espère que quelqu'un pourra marquer les réponses ci-dessus comme incorrectes, car elles nous font perdre beaucoup de temps à des millions d'apprenants comme moi. Je me demande comment ils obtiennent autant de votes alors qu'ils ne fonctionnent pas !

PS :les chances que le bord des pixels de votre carte corresponde à la valeur exacte de 15 décimales des coordonnées sont des millions de fois inférieures aux chances de manquer les 3/4 du monde !