You may want to put some text here

Adres omvormen naar coördinaten met Google maps

Met behulp van google maps api en PHP is het mogelijk om een adres om te vormen naar coördinaten. Het enige wat je nodig hebt voor deze tutorial is een gratis google api key.

Als je de api key aangevraagd hebt kan je aan het script beginnen. Maak een nieuw PHP bestand aan en plak er de volgende code in.

$adres = urlencode("Violetlaan 9 Gierle");
$json_data = file_get_contents("http://maps.google.com/maps/geo?q=" . $adres . "&output=json&oe=utf8&sensor=true_or_false&key=***API KEY***");
$data = json_decode($json_data);

echo "Adres: " .  $data->Placemark[0]->address . "<br />";
echo "Coördinaten: " .  $data->Placemark[0]->Point->coordinates[0] . " - " .  $data->Placemark[0]->Point->coordinates[1];

Vervang in bovenstaande code de ***API KEY*** door jouw api key.

Het belangrijkste deel van dit scriptje is url binnen de file_get_contents. Dit is de url naar de google maps api en gaat het opgegeven adres opzoeken in de google database en geeft vervolgens een json terug met alle informatie. De ontvangen json informatie ga je omvormen naar een array en vervolgens haal je er de coördinaten uit.

De json data die we terugkrijgen van de server ziet er als volgt uit:

{
  "name": "violetlaan 9 gierle",
  "Status": {
    "code": 200,
    "request": "geocode"
  },
  "Placemark": [ {
    "id": "p1",
    "address": "Violetlaan 9, 2275 Lille, Belgium",
    "AddressDetails": {"Country": {"CountryNameCode": "BE","CountryName": "Belgium","AdministrativeArea": {"AdministrativeAreaName": "Flemish Region","SubAdministrativeArea": {"SubAdministrativeAreaName": "Antwerp","Locality": {"LocalityName": "Lille","DependentLocality": {"DependentLocalityName": "Gierle","Thoroughfare":{"ThoroughfareName": "Violetlaan 9"},"PostalCode": {"PostalCodeNumber": "2275"}}}}}},"Accuracy": 8},
    "ExtendedData": {
      "LatLonBox": {
        "north": 51.2757029,
        "south": 51.2694077,
        "east": 4.8757530,
        "west": 4.8694578
      }
    },
    "Point": {
      "coordinates": [ 4.8726054, 51.2725553, 0 ]
    }
  } ]
}

Als je het PHP script zou uitvoeren krijg je het volgende resultaat.

Adres: Violetlaan 9, 2275 Lille, Belgium
Coördinaten: 4.8726054 - 51.2725553

The Author of this post is Wim Mostmans

Wim Mostmans heeft een eigen webontwikkeling bedrijf Sitebase waar hij voltijds voor werkt. Hij beheert ook nog enkele websites waaronder deze en een Computerforum. Blijf op de hoogte van waar Wim mee bezig is door hem te volgen op Twitter.

6 Responses »

  1. Hoe vervang je het adres door variabelen als je een formulier gebruikt?

  2. Veerle,

    Vervang deze regels door het volgende:

    if(!empty($_POST[‘adres’])){
    // de code uit het voorbeeld
    }

    Vervang binnen de bovenstaande if de regel
    $adres = urlencode(“Violetlaan 9 Gierle”);
    door
    $adres = $_POST[‘adres’];

    Op dezefelfde pagina maak je dan een formulier aan met method post. Noem het veld waar het adres ingevuld kan worden “adres”. Laat het action veld van het formulier gewoon leeg.

    Als je nu een adres in het formulier invuld en je submit het dan zal de code uitgevoerd worden die binnen de if functie staat.

    Als je het nog niet goed begrijpt laat je het maar weten.

    • Pas op voor injection op die manier… probeer te vermijden dat je de $_post[‘adres’] rechtstreeks in je variabele te plaatsen en controleer eerst of het wel degelijk om een actie gaat afkomstig van een gebruiker of het systeem.
      Dus opsporen dat bots je systeem niet kunnen gebruiken.

      Zeker doen als je de code gebruikt voor opslag in een database. bekijk dan zeker ook sql-injection want dat kan gigantische problemen opleveren in je db.

  3. Schitterend, hier was ik naar op zoek! Bedankt!

  4. Is het waar dat je de functie maar x maal per dag kan oproepen?

Leave a Comment