Jag sitter med ett sidoprojekt just nu där jag behöver lista de 10 närmaste platserna från en given adress. Alltså, jag har en stor databas med kartnålar till Google maps men när användarna söker efter en viss plats vill jag inte bara visa de kartnålar som finns på just den platsen utan även de som ligger inom en viss radio. T.ex. visa alla hotell inom en radie av 10 mil.
Jag Googlade runt lite och hittade snart lösningen på Google Groups. Koden nedan är skriven för MS SQL men fungerar lika bra på MySQL. Med detta anrop får du en ny kolumn som räknar ut avståndet från den angivna positionen(CENTER_LATITUDE, CENTER_LONGITUDE). I denna kolumn får du alltså se hur långt det är från varje post i databasen till din angivna punkt.
Sjukt smidigt och väldigt enkelt att implementera. Jag postar ett exempel så snart vi har en prototyp klar. Men om du letat efter samma sak som jag så har du svaret här nedan.
select *,
acos(cos(CENTER_LATITUDE * (PI()/180)) *
cos(CENTER_LONGITUDE * (PI()/180)) *
cos(lat * (PI()/180)) *
cos(long * (PI()/180))
+
cos(CENTER_LATITUDE * (PI()/180)) *
sin(CENTER_LONGITUDE * (PI()/180)) *
cos(lat * (PI()/180)) *
sin(long * (PI()/180))
+
sin(center_latitude * (PI()/180)) *
sin(lat * (PI()/180))
) * 6378 as Dist
from TABLE_NAME












Jag behöver ett smart verktyg att uppdatera min google karta med alla mina återförsäljare runt om i världen. En koppling mellan en databas och min karta tänker jag mig. Några förslag om var jag kan finna en programvara?