You are here: home » projects » 6pp » tutorial

Leer 6PP te integreren in websites of applicaties

What is there to learn about a postcode?

Tutorial

Deze pagina bevat enkele eenvoudige voorbeelden om op te warmen. Voor wie meer functionaliteit nodig heeft zijn er geavanceerde voorbeelden en is de complete webservice gedocumenteerd.

Eenvoudige voorbeelden

Adres opvragen als XML

De eenvoudigste manier van communiceren met de 6PP webservices is via een HTTP GET. Standaard wordt XML data geretourneerd.
Gegeven een postcode (bijvoorbeeld: 5616JR) wordt het bijbehorende adres opgevraagd.
Voorbeeld: http://6pp.kvdb.net/services/lookup?postcode=5616JR.
Uitvoer:

<result>
  <item>
    <postcode>5616JR</postcode>
    <street>Jacobus Deckersstraat</street>
    <subtitle>Onderwijzer te strijp van 1797 tot 1849</subtitle>
    <city>Eindhoven</city>
    <province>Noord-Brabant</province>
    <areacode>040</areacode>
    <geo_precision>city</geo_precision>
    <geo_lat>51.45000000</geo_lat>
    <geo_long>5.46666700</geo_long>
  </item>
</result>

Adres opvragen als JSON

In sommige talen (b.v. JavaScript) is JSON eenvoudiger te verwerken dan XML. Dit formaat is te verkrijgen door het toevoegen van de parameter tg_format=json.
In het volgende voorbeeld wordt alleen het numerieke deel (4PP) van de postcode meegegeven, waardoor alleen de plaats, niet de straat bekend wordt.
Voorbeeld: http://6pp.kvdb.net/services/lookup?postcode=5408&tg_format=json.

Uitvoer:

{"result": [
  {"city": "Volkel",
   "street": "",
   "subtitle": "",
   "postcode": "5408",
   "areacode": "0413",
   "geo_precision": "city",
   "geo_lat": "51.65000000",
   "geo_long": "5.65000000"}
]}

Adres opvragen als SOAP

Een derde manier is het gebruik van SOAP. WSDL: http://6pp.kvdb.net/services/soap/api.wsdl
Dit PHP voorbeeld geeft het volgende resultaat:

stdClass Object
(
    [result] => stdClass Object
    (
        [item] => stdClass Object
        (
            [city] => Hilversum
            [postcode] => 1212AB
            [street] => Oude Amersfoortseweg
        )
    )
)

Afstand tussen postcodes

Als opstapje naar de geavanceerde voorbeelden gebruiken we de distance API call om de afstand tussen postcodes of plaatsen tot op redelijke nauwkeurigheid te bepalen.
Er zijn vier gradaties in precisie. Namelijk:

Voorbeeld: http://6pp.kvdb.net/distance?start_postcode=5408&destination_postcodes=2987&tg_format=json
Uitvoer:

{"result": {
   "distance": "76.4",
   "unit": "km",
   "distance_precision": "city",
   "city": "Volkel",
   "postcode": "5408",
   "lat": 51.649999999999999,
   "lng": 5.6500000000000004,
   "precision": "city",
   "city2": "Ridderkerk",
   "postcode2": "2987",
   "lat2": 51.866667,
   "lng2": 4.5999999999999996,
   "precision2": "city"}
}

Geavanceerde voorbeelden

Javascript en JSONP

Om 6PP gegevens direct in een Javascript website te integreren is het goed te weten dat de meeste browsers niet toestaan data op te halen van een ander domein (in dit geval 6pp.kvdb.net). De oplossing hiervoor is JSONP.
Deze methode wordt ook gebruikt in de javascript code zoals demonstreerd op de 6PP website.
Voorbeeld: http://6pp.kvdb.net/services/lookup?postcode=5408&tg_format=json&jsonp=myFunc.
Door gebruik de parameter jsonp=myFunc wordt de uitvoer 'gewrapt' in een functie aanroep welke direct door JavaScript wordt uitgevoerd. De functie 'myFunc' dient wel aanwezig en zelf geimplementeerd te zijn.
Uitvoer:

myFunc(
  {"result": [
    {"city": "Volkel",
     "street": "",
     "postcode": "5408",
     "geo_precision": "city",
     "geo_lat": "51.65000000",
     "geo_long": "5.65000000"}
  ]}
);

Gedetaileerdere adres gegevens

Er zijn meer en gedetaileerdere adres gegevens uit 6PP op te vragen. Zoals de documentatie van getstreet vermeldt:
Voorbeeld: http://6pp.kvdb.net/services/getstreet?fourpp=1053&chars=XD&tg_format=json.

Uitvoer:

{"result": {
  "total": 1,
  "perpage": 1000,
  "page": 1,
  "pages": 1
  "streets": [{
    "id": 314,
    "updated": 1237235684,
    "created": 1237235684,
    "source_id": 4,
    "source": "Mijn NL <www.mijnnl.nl>",
    "fourpp": 1053,
    "lat": "52.35000000",
    "lng": "4.91666700",
    "precision": "city",
    "street": "Da Costakade",
    "even": true,
    "low": 160,
    "high": 160,
    "lowcapped": null,
    "highcapped": null,
    "pobox": false,
    "chars": "XD",
    "postcode_id": 964,
    "city_id": 634,
    "city_name": "Amsterdam",
    "province_id": 9,
    "province_name": "Noord-Holland",
    "country_id": 1,
    "country_name": "Nederland",
  }]
}}

Synchroniseren met een eigen database

Bij gebruik van een eigen database is het aan te raden regelmatig te synchroniseren met 6PP om de laatste wijzigingen te ontvangen.
Zoals uitgewerkt in dit voorbeeld begint het vullen van een initieel lege database met alle beschikbare plaatsen:

Om dagelijks te syncroniseren, gebruik de min_update_date parameter. Zo worden alleen plaatsen teruggegeven welke zijn toegevoegd of aangepast na de genoemde datum. De datum wordt genoteerd in "Unix time" formaat.

Na de plaatsen kan een soortgelijke synchronisatie worden uitgevoerd voor postcodes en straten:

Meer hulp nodig?

Stel een vraag in het forum of via dit reactieformulier (laat een e-mailadres achter).


last modified on 2009-10-29 @ 22:38