V databázi hotelů mám i GPS (latitude a longitude) ve tvaru: 43.368493000000 a -8.408942000000
Jak mohu vypsat nebližší hotely k daným souřadnicím?
V databázi hotelů mám i GPS (latitude a longitude) ve tvaru: 43.368493000000 a -8.408942000000
Jak mohu vypsat nebližší hotely k daným souřadnicím?
Gogy27 poptává: Skript na vyhladavanie z databazy
Myzsak poptává: Koupím dropshopy
WebPage poptává: Úprava prestashopu
Ahoj, já používám tento mysql dotaz, snad ti to pomůže
SELECT *,
( 6371 * acos( cos( radians($center->latitude) )
* cos( radians( latitude ) )
* cos( radians( longitude )
- radians($center->longitude) )
+ sin( radians($center->latitude) )
* sin( radians( latitude ) )
)
) AS distance
FROM `table`
HAVING distance < 25
ORDER BY distance;
Popravdě moc nepomůže.
Co jste už zkoušel? Vypočítat vzdálenost dvou bodů je jednoduché
Abyste nemusel počítat vzdálenost všech se všemi, můžete to předomezit jen na body ve čtverci se středem v aktuálním bodě.Kód:dist = sqrt ( pow(x2 - x1, 2) + pow(y2 - y1, 2) )
Jinak existují prostorové databáze, které tohle řeší samy. MySQL má taky prostorové rozšíření
http://dev.mysql.com/doc/refman/5.1/...xtensions.html
Zajímavý návod je na http://nerddinnerbook.s3.amazonaws.com/Part11.htm, hlavně část asi ve 3/4. Je to sice trochu jiná technologie (MS SQL), ale zápis SQL funkce bude skoro stejný.
Dobrá připomínka, díky za postřeh po měsících. :)
Na malých vzdálenostech by to mohlo pro určité aplikace být přijatelné zjednodušení, ale je lepší to udělat správně.
Jé aha pardon, já si nevšiml, že je to starší :)
To nevadí, lidé se sem dostanou i v budoucnosti, takže je lepší, abychom je nezaváděli.