Afstand berekenen long en lat.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donny Wie weet

Donny Wie weet

27/08/2013 19:30:22
Quote Anchor link
Hoi allemaal,

Ik heb een lijst met alle steden van nederland inclusief long en latitude. Nou haal ik de lng en lat op via GeoLocation en krijg dus een lng en lat. Hoe kan ik nou uitzoeken welke stad daarbij hoord?
 
PHP hulp

PHP hulp

17/11/2024 14:33:24
 
- Ariën  -
Beheerder

- Ariën -

27/08/2013 19:53:01
 
Erwin H

Erwin H

27/08/2013 19:58:17
Quote Anchor link
Wat klopt er niet.... de titel (afstand berekenen) of de vraag (hoe een stad te vinden aan de hand van lng/lat)?
 
- Ariën  -
Beheerder

- Ariën -

27/08/2013 20:02:31
Quote Anchor link
Geen afstand, wel een plaatsbepalen a.h.v. de API.
Dit script heb ik vorig jaar eens gebouwd voor een projectje en haal het land op.

Met even rondneuzen in de debug-array (&debug=1) kan je de plaatsnaam ook wel ophalen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Test van coordinaat-metadata ophalen....</title>
  </head>
  <body>
    <p>Hier kan je de landcode zien van een coordinaat:</p>
    <?php
    if(isset($_GET['coords'])) {
        $url = "http://maps.googleapis.com/maps/api/geocode/xml?latlng=".$_GET['coords']."&sensor=true";
        $xml = simplexml_load_file($url,NULL, LIBXML_NOCDATA);
        if(isset($_GET['debug'])) {
            echo "<pre>".print_r($xml,true)."</pre>";
        }

        if($xml->status == "ZERO_RESULTS") {
            echo "Geen resultaten gevonden!";
        }
else {
            echo "<ul>";
            foreach ($xml->result->address_component as $item) {
                $item = (array)$item;
                if($item['type'][0] == "country") {
                        echo "<li>Landcode:".$item['long_name']."</li>";
                        echo "<li>Landcode:".$item['short_name']."</li>";
                        break;            
                }
            }

            echo "</ul>";
        }
    }
else {
        echo "Ik heb coordinaten nodig (zoals 51.8055,4.73534), anders sta ik uit mijn neus te eten.<br />Snap je het niet? Klik eens <a href='locationcheck.php?coords=51.8055,4.73534'>hier</a>.";
    }

        
    ?>

  </body>
</html>
Gewijzigd op 28/08/2013 00:20:14 door - Ariën -
 
Donny Wie weet

Donny Wie weet

27/08/2013 23:40:42
Quote Anchor link
Sorry, bedoeling is echt alleen de stad ophalen. Ik heb een database die er zo uit ziet:

Stad = Amsterdam -> lng = 5.5698 -> lat = 3.4745
Stad = Rotterdam -> lng = 3.4785 -> lat = 1.4754

Nu krijg ik via de GLocation de volgende waarde binnen:
lng: 5.4987
lat: 5.6984

Nou moet dus de stad die het meest in de buurt komt getoond worden
 
- Ariën  -
Beheerder

- Ariën -

28/08/2013 00:19:27
Quote Anchor link
Om even te herhalen....

Quote:
Met even rondneuzen in de debug-array (&debug=1) kan je de plaatsnaam ook wel ophalen.
Gewijzigd op 28/08/2013 00:20:27 door - Ariën -
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/08/2013 09:32:07
Quote Anchor link
Ik heb voor het bepalen van de afstand een UDF in MySQL:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DELIMITER $$

CREATE FUNCTION GetDistance (orgLat float, orgLong float, destLat float, destLong float) RETURNS float(10,2)
BEGIN
    DECLARE dist float;
    SET dist := ROUND(6371 *
            acos(cos(radians(orgLat) ) *
            cos(radians(destLat)) *
            cos(radians(destLong) - radians(orgLong)) + sin(radians(orgLat))
            * sin(radians(destLat))), 2);
    RETURN dist;
END;
$$

DELIMITER ;

Dit voer je eenmalig uit en daarna kan je hem in query aanroepen, bv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT
    city_name,
    GetDistance(51.8055,4.73534,lat,lng) distance
FROM
    cities
ORDER BY distance
LIMIT 1
Gewijzigd op 28/08/2013 11:23:50 door Ger van Steenderen
 
Donny Wie weet

Donny Wie weet

28/08/2013 13:06:08
Quote Anchor link
@aar: ik kom er niet uit. Heb van alles geprobeerd vannacht maar heb er moeite mee. kan je me een zetje in de goede richting erbij geven?

@get: het gaat niet om afstand, het gaat om weten welke stad iemand is met lng en lat. Deze functie geeft je de afstand in meters/kilometers aan volgens mij?
 
- Ariën  -
Beheerder

- Ariën -

28/08/2013 13:07:28
Quote Anchor link
Wat heb je dan geprobeerd?
je kan dan als ik het goed heb zoeken (lijn 22) op de type 'locality'. Dan moet je Dordrecht te zien krijgen.
Gewijzigd op 28/08/2013 13:21:55 door - Ariën -
 
Donny Wie weet

Donny Wie weet

28/08/2013 13:28:25
Quote Anchor link
@aar: fantastisch! Ik had lijn 22 naar city veranderd. En de item array veranderd naar $item['city'] maar het werkte niet. Top!
 
- Ariën  -
Beheerder

- Ariën -

28/08/2013 13:33:21
Quote Anchor link
city komt ook helemaal niet voor in de array. ;-)

Maar fijn dat het nu werkt.
Gewijzigd op 28/08/2013 13:33:48 door - Ariën -
 
Donny Wie weet

Donny Wie weet

28/08/2013 15:47:45
Quote Anchor link
Hoe kan ik zien wat er wel voor komt in die array dan?
 
- Ariën  -
Beheerder

- Ariën -

28/08/2013 16:58:42
Quote Anchor link
Inkoppertje: De array eens bekijken, door de debug-mode aan te zetten?

Ik geef toe, er zit een vreemde logica in, maar dat heeft Google gewoon bedacht.
Gewijzigd op 28/08/2013 16:59:26 door - Ariën -
 
Erwin H

Erwin H

28/08/2013 18:21:21
Quote Anchor link
Misschien dan ook eens handig om de developers guide te bekijken, daar is dat ding voor:
https://developers.google.com/maps/documentation/geocoding/#XML
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

28/08/2013 19:27:13
Quote Anchor link
Donny Wie weet op 27/08/2013 23:40:42:
Sorry, bedoeling is echt alleen de stad ophalen. Ik heb een database die er zo uit ziet:

Stad = Amsterdam -> lng = 5.5698 -> lat = 3.4745
Stad = Rotterdam -> lng = 3.4785 -> lat = 1.4754

Nu krijg ik via de GLocation de volgende waarde binnen:
lng: 5.4987
lat: 5.6984

Nou moet dus de stad die het meest in de buurt komt getoond worden

Donny Wie weet op 28/08/2013 13:06:08:
@get: het gaat niet om afstand, het gaat om weten welke stad iemand is met lng en lat. Deze functie geeft je de afstand in meters/kilometers aan volgens mij?

Inderdaad, de functie geeft de afstand tussen twee coördinaten.
Maar de query haalt de dichtstbijzijnde stad op.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.