Hallo, ik heb een lijst met alle steden van nederland, hierbij heb ik ook de geocodes dus de lengte en breedte graden van een stad.

Nu heb ik een vraagje. Is er iemand die mij kan uitleggen hoe ik een functie kan schrijven zodat als ik hengelo selecteer en een straal van 10 kilometer
Dat ik dan alle steden die binnen een straal van 10 kilometer liggen weergegeven worden??

Misschien dat iemand hier een voorbeeld bij kan geven. Het mag eventueel ook een vierkant zijn rond de stad. weet niet wat makkelijker is.

breedte graat van hengelo = 6.8
lengtegraad = 52,2667
voor de mensen die dat altijd al hebben willen weten ;)

groetjes Gijs
Ik heb geen idee hoeveel kilometer een breedte/lengtegraad is..
Maar anders gewoon met een for lus steeds 0.0001 eraf halen en in de database checken of er een stad is met die breedte/lengtegraad...
weet zelf nog nbiet zeker of dit juist is maar 1 km komt over een met 0,01248458 enz. maar dacht dat een for lus niet de optimale manier was. wil namelijk later mensen zelf laten kunnen kiezen welke straal ze willen. volgens mij wordt dat dan een hoop reken werk met een straal van 50 kilometer... maar weet ik niet zeker.

in ieder geval bedankt voor de snelle reactie
Je hoeft denk ik geen eens een if/while lus te gebruiken denk ik.

Dan wordt het zoiets:

<?
$straal = $_POST['straal'];

// Breedtegraad instellen (uit db voor bepaalde stad, of met hand als het persee Hengeloo moet zijn)
$bg = .....;
// Lengtegraad instellen
$lg = ......;

$straal_graden = $straal * 0.01248458;

$sql = "SELECT * FROM steden WHERE $lg-$straal_graden < $lg < lg+$straal_graden";
?>

Niet echt goed over nagedacht :$ Dus misschien kom je er wel helemaal niet zo... Maar probeer het eens...
$

Edit: Werkt denk ik niet...
Denk dat het toch met een while lus moet...

Edit2:
Misschien met deze verbetering wel.. Je moet nog wel het een en andere aanpassen...
Hmm...zijn die graden niet voor iedere locatie anders, anders hadden ze er wel kilometers van gemaakt?

Lengte- en breedtegraden zijn namelijk bolcoördinaten, dus ze zullen bij de polen dichter op elkaar liggen dan bij de evenaar. Nou zal dat voor Nederland niet veel verschillen, maar het is wat lastig (om nauwkeurig te) rekenen me dunkt.
ja klopt heb de afstand tussen amsterdam en hengelo genomen en dan via een 3 hoek uitgerekend hoeveel graden 1 km is. dit is niet perfect maar was ff snel om wat cijfers te kunnen geven...
1 graad is 60 mijl
Kasper daar vergis je aardig in

1 graad op de evennaar is 200 % groter dan in Nederland
Eris schreef op 29.10.2005 22:21
Kasper daar vergis je aardig in

1 graad op de evennaar is 200 % groter dan in Nederland

LOL, dan is Nederland een stuk kleiner dan ik dacht! Of die graden liggen verder uit elkaar dan ik dacht...maar hoe zit het dan met minuten en secondes, of heeft dat hier niks mee te maken?

Edit:
Dus Nederland is maar 30 mijl breed lang (volgens het plaatje)?! Zijn dat zeemijlen of luchtmijlen of...??
Maar aan onderstaand plaatje te zien maakt het wel degelijk uit waar je je op het bolletje bevindt:
[limg]http://www.urania.be/sterrenkunde/images/coordinaten-aarde.png[/limg]
Okee, maar laten we stellen dat de afwijkingen binnen Nederland niet al te groot zijn.

Je hebt een x- en een y-coordinaat voor bijvoorbeeld Hengelo en hetzelfde voor alle andere woonplaatsen in Nederland.

Het is alweer een tijdje geleden, maar volgens mij moet je dan de lengte van de hypothenusa weten. In gedachten teken je een rechthoekige driehoek waarbij de schuine zijde staat voor de afstand tussen de twee plaatsen.

Zie plaatje:

Dus ik zou zeggen:

neem de absolute waarde van x1 - x2
neem de absolute waarde van y1 - y2
tel de kwadraten bij elkaar op en neem daar de wortel van.

Dan heb je de afstand in graden. Die nog omrekenen naar kilometers en klaar ben je.

Ik weet niet of je hier genoeg aan hebt, dus ik ga nog even kijken voor een voorbeeld in PHP

Reageren