Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obter todos os registros do banco de dados MySQL que estão no Google Maps .getBounds?


Todas as respostas anteriores funcionam apenas para 1/4 do mundo!

A resposta de W3t Tr3y foi próxima, mas teve um erro (extra "<").

Todos eles só funcionam para os EUA, porque fica no hemisfério NORTE. Não funcionam para o hemisfério sul, nem para países do leste (direita de greenwich).

Aqui está uma solução simples sem funções ou coisas complicadas.

letras são os resultados na ordem em que você os obtém de map.getBounds() ou seja, 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 outra solução com e/ou (você pode testá-lo para velocidade, não sei como executá-lo mais de uma vez no 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)

Agora você pode mapear o mundo inteiro :) Espero que alguém possa marcar as respostas acima como incorretas, pois estão nos fazendo perder muito tempo para milhões de pessoas que aprendem como eu. Eu me pergunto como eles conseguem tantos votos quando na verdade não funcionam!

PS:As chances de a borda do pixel do seu mapa corresponder ao valor exato de 15 casas decimais das coordenadas é zilhões de vezes menor do que as chances de perder um 3/4 inteiro do mundo!