Google maps API

42 views
Skip to first unread message

Joost Ruis

unread,
Aug 12, 2009, 11:14:05 AM8/12/09
to php-nl
Het kan ooit nuttig zijn om de lengte+breedtegraad te kunnen opzoeken
aan de hand van slechts een adres.
Wat je nodig hebt is een google maps api key

http://code.google.com/apis/maps/signup.html

Kan je daar gratis en voor niks krijgen (per domein 1 key).

Vervolgens heb ik het als volgt opgelost:

function get_google_coords($key,$my_address,$city)
{
$address = 'http://maps.google.com/maps/geo?q='.urlencode
($my_address).','.urlencode($city).',+NL&output=xml&key='.$key;
$page = file_get_contents($address);

$xml = new DOMDocument();
$xml->loadXML($page);

$points = $xml->getElementsByTagName("Point");

foreach($points as $point)
{
$c = $point->getElementsByTagName( "coordinates" );
$coords = $c->item(0)->nodeValue;
}

$coords_array = explode(',', $coords);
return $coords_array;
}

Bjorn V (Generaal Joubert)

unread,
Aug 12, 2009, 11:25:50 AM8/12/09
to php...@googlegroups.com
En wil je de afstand uitrekenen tussen 2 adressen:

Let op: Deze berekening houd rekening met de kromming van de aarde en berekent dus de WERKELIJKE afstand tussen 2 punten!!!


function calcDistICAO($lat1,$lon1,$lat2,$lon2)
{
    $r = 6367000; // Radius of the Earth in meters

    //convert degrees to radians
    $lat1 = ($lat1 * pi() ) / 180;
    $lon1 = ($lon1 * pi() ) / 180;
    $lat2 = ($lat2 * pi() ) / 180;
    $lon2 = ($lon2 * pi() ) / 180;
   
    //Haversine Formula (http://www.movable-type.co.uk/scripts/gis-faq-5.1.html)
    $dlon = $lon2 - $lon1;
    $dlat = $lat2 - $lat1;
    $a = pow(sin($dlat/2), 2) + cos($lat1) * cos($lat2) * pow(sin($dlon/2), 2);
    $intermediate_result = 2 * asin(min(1,sqrt($a)));
    $distance = $r * $intermediate_result;
   
    //Distance is in meters, now to go from meters to Nm
    $distance = ceil($distance / 1852);
   
    return $distance;
}

Ook een erg leuke functie..

Groet,


Björn.



Op 12 augustus 2009 17:14 schreef Joost Ruis <joos...@gmail.com> het volgende:
Reply all
Reply to author
Forward
0 new messages