Ja sam polupao lončiće, kada sam otvorio nije bilo postal codes, ali za USA ima ja mislim, u ovom
GeoLiteCity-Location.csv imaš...
Kôd:
618,"US","NY","New York","10013",40.7214,-74.0052,501,212
Tebi treba recimo...
Kôd:
"New York","NY","10013",40.7214,-74.0052
Pa pretvoriš u SQL, ako ne znaš mogu ti ja napisati regexp Notepad++
PHP kôd:
INSERT INTO usa(city,state,zip,lat,lon) VALUES("New York","NY","10013",40.7214,-74.0052);
To sve ubaciš u tabelu "usa" kojoj je primary index na postal code odnosno "zip" kolonu.
Onda pukneš query... Broj 15 je broj milja, a ovaj drugi broj je 60 nautičkih milja u miljama. 10013 je ZIP code od NY, tu staviš oko kojeg grada tražiš, trebalo bi da ti vrati sve u radiusu od 15 milja.
PHP kôd:
SELECT g1.*
FROM usa AS g1
INNER JOIN usa AS g2 ON POW( (
g1.lat - g2.lat
), 2 ) + POW( (
g1.lon - g2.lon
), 2 ) < POW( ( 15 / 69.0467669 ) , 2 )
WHERE g2.zip = '10013');