A nebylo by jednodussi, nez to slozite pocitat, vzit proste ctverec o neco vetsi? Pres css se ten zbytek da schovat. Pokud to chces prepocitavat, tak bych to nechal az na javascriptu nebo php (google na to ma jiste funkce v maps enginu). A nebo to udelat pres dvojity dotaz, kdy prvni vybere ctverec, pac to bude rychlejsi a druhy to prepocita na oval zeme.
http://www.scribd.com/doc/2569355/Geo-Distance-Search-with-MySQL
set @orig_lat=122.4058; set @orig_lon=37.7907;set @dist=10;
SELECT *,
3956 * 2 * ASIN(SQRT( POWER(SIN((@orig_lat -
abs(
dest.lat)) * pi()/180 / 2),2) + COS(@orig_lat * pi()/180 ) * COS(
abs
(dest.lat) * pi()/180) * POWER(SIN((@orig_lon – dest.lon) * pi()/180 / 2), 2) ))
as distanceFROM hotels desthaving distance < @distORDER BY distance limit 10;
Lat can be negative!
4s, na dalsi strankach provadi upravy na 0.6-1s pro 800.000 zaznamu pres procedury. Tez to filtruje treba nejdriv pomoci ZIP kod oblasti. Mno, a pak je tu moznost si proste predem vypocitat ctverce a ulozit do db pri insertu. Pak si vyberes vsechno, co odpovida ctvercum z okoli a odfiltrujes tim slozitym vypoctem, co nechces. Rzhodne je rychlejsi najit cislo 5678 nez 49.3567842.
google = gps counting radius formula
(Calculate distance, bearing and more between Latitude/Longitude points)
http://www.movable-type.co.uk/…latlong.html