Всички предишни отговори работят само за 1/4 от света!
Отговорът на W3t Tr3y беше близо, но имаше грешка (допълнително "<").
Всички те работят само за САЩ, защото се намират в СЕВЕРНОТО полукълбо. Те не работят за южното полукълбо, нито за източните страни (вдясно от Гринуич).
Ето едно просто решение без функции или сложни неща.
буквите са резултатите в реда, в който ги получавате от map.getBounds(), т.е. 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)
или друго решение с и/или (можете да го тествате за скорост, не знам как да го стартирам повече от веднъж в 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)
Сега можете да картографирате целия свят :) Надявам се някой да отбележи горните отговори като неверни, защото ни карат да губим много време за милиони учещи хора като мен. Чудя се как получават толкова много гласове, когато всъщност не работят!
PS:Шансовете ръбът на пиксела на вашата карта да съвпада с точните 15 десетични стойности на координатите е милиони пъти по-малък от шансовете да пропуснете цели 3/4 от света!