6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)
  • Q:
    Bijdrager

    Geolocatie dichstbijzijnde

    Heeft iemand een idee hoe deze functie in de hieronderstaande webapp werkt die de dichtstbijzijnde bushalte laat zien? Ik wil hem namelijk gebruiken voor mijn eigen web app.

    nextbus.com (webapp werkt alleen op iphone en ipod touch).

    Lid
    Pepperonie

    Dat zou ik doen met behulp van javascript of html5.
    Hier vind je er meer over:
    http://diveintohtml5.org/geolocation.html

    Bijdrager

    Ja dit stukje heb ik zelf ook al maar nu heb ik een lijst met plaatsen en coordinaten en nu wil ik weten welke plaats het dichstbij is en 2,3,4,5e enzovoort.

    Lid
    Pepperonie

    Dat is heel erg afhankelijk van de hoeveelheid locaties je hebt waarmee je wilt vergelijken.
    Al zijn had er een paar dan pas je gewoon pythagoras op alle locaties t.o.v. van je eigen locatie en dan heb je hem zo gevonden.
    Al heb je een hoop locaties om mee te vergelijken, dan snap je dat dit lang zal duren. Dan kan je het het best het gehele gebied opdelen in kleine gebiedjes. Vervolgens bepaal binnen welk gebiedje de gebruiker zit. Vervolgens zoek je binnen dit gebiedje de dichts bij zijnde locatie. Het zelfde doe je voor de locaties die in de gebiedjes die aan het gebiedje grenzen, want je kan aan rand van een gebiedje zitten. Vervolgens kijk je welke locatie het dichtsbij is (die in het huidige gebiedje, of misschien wel in het andere gebiedje). En dan ben je klaar.

    Dit kan ook weer gedetailleerder en sneller uitgedacht worden, maar daarvoor moet je je echt gaan verdiepen in algoritmes. Maar dit is een beetje de basis.

    Ik hoop dat ik je hiermee een beetje op weg heb geholpen.

    Bijdrager
    ieperlingetje

    Google heeft zelf uitleg op zijn site over hoe de dichtsbijzinde punten in een bepaalde straal weer te geven. http://code.google.com/intl/nl/apis/maps/articles/phpsqlsearch.html

    Bijdrager
    qazwsxedc

    In PHP is een voorbeeld van een functie om de afstand tussen 2 coordinaten uit te rekenen (in kilometers):

    <br />
    public function distance($lat1, $long1, $lat2, $long2)<br />
    {<br />
        $theta = $long1 - $long2;<br />
        $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));<br />
        $dist = acos($dist);<br />
        $dist = rad2deg($dist);<br />
        return ($dist * 60 * 1.1515 * 1.609344);<br />
    }<br />
     

    Vervolgens even een loopje om ze te vergelijken en de resultaten even sorteren en je bent er :smile:. Zelf haal ik de locatie van een bezoeker op via een webservice van Maxmind. Dat gaat op basis van IP en werkt vrij goed. Afgezien van mensen die thuiswerken met een VPN naar kantoor;)

6 berichten aan het bekijken - 1 tot 6 (van in totaal 6)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.