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?
2.797 views
<!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>
Met even rondneuzen in de debug-array (&debug=1) kan je de plaatsnaam ook wel ophalen.
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 ;
SELECT
city_name,
GetDistance(51.8055,4.73534,lat,lng) distance
FROM
cities
ORDER BY distance
LIMIT 1