Google Maps API – del1 “Geocoding”

När jag byggde min sajt om att ta körkort så pysslade jag en del med google maps och tänkte mest för min egen skull skriva ner hur jag gjorde :). Kan ju vara bra att komma ihåg sådant. Det här blir första delen i en liten serie om google maps api.

Det första jag gjorde efter att fått tag i alla adresser var att geokoda dem. Det gjorde jag såklart så att jag kunde pricka ut dem på kartan, man vill alltså få ut Latitud och Longitud för att veta vart markern skall sitta.

Det är ganska enkelt att göra detta. Det är några rader php kod. Jag gjorde detta bara en gång och implementerade inte detta på något vis i applikationen. Om en trafikskola flyttar så vet jag ju ändå inte vart den nya markern skall sitta och då är det ju lite onödigt att kolla adresserna flera gånger.

Koden bygger på att fråga google via cURL vilket funktionen cURL() är till för. I övrigt finns det lite kommentarer i koden.


$api_key = "xxx"; // API-keyn får du från google på urlen http://code.google.com/apis/maps/signup.html

function cURL($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}

function geoCode($address, $api_key){
$address = urlencode(utf8_encode($address)); // UTF8 och URL kodar adressen så att det fungerar med ÅÄÖ och mellanslag osv.
$url = "http://maps.google.com/maps/geo?q=" . $address . "&output=csv&sensor=false&key=" . $api_key; // URLen vi använder för att fråga google om latitud och longitud

$output = cURL($url);

$array = explode(",",$output); // dela strängen som google skickar tillbaka till oss
$geocode = array("status" => $array[0], "accuracy" => $array[1],"lat" => $array[2], "long" => $array[3]); // Snyggar till arrayen lite
return $geocode;
}

$geocode = geoCode("gröna gatan 14 15132",$api_key);

echo $geocode[status] . "\n"; // Statuskoden, 200 betyder okej. På http://code.google.com/apis/maps/documentation/geocoding/v2/#Responses ser du hela listan
echo $geocode[accuracy] . "\n"; // Träffsäkerhet, 8 är gatunivå hela listan på http://code.google.com/apis/maps/documentation/geocoding/v2/#GeocodingAccuracy
echo $geocode[lat] . "\n"; // Adressens latitud
echo $geocode[long]; // Adressens longitud

?>

4 thoughts on “Google Maps API – del1 “Geocoding””

  1. Åh! Gissa om du hjälpte mig när jag försökte få till ett uppslag mot google för att få ut Long,Lat till en adress med ÅÄÖ i namet! urlencode(utf8_encode($address)); fixade biffen! Stort tack! :D

  2. Fungerar ju bra, även om jag fick sätta fnuttar i dessa taggar för att inte PHP ska ge mig varningar:

    $geocode[long]

    Istället:

    $geocode[‘long’]

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>