-
Notifications
You must be signed in to change notification settings - Fork 1
/
script.js
110 lines (98 loc) · 4.3 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
import turf from 'turf';
function adres(postcode, huisnummer){
// Maak variabele aan
var bagurl, straat, huisletter, toevoeging, plaats, lat, lon;
// Check op huisletter / toevoeging
switch(checkHuisnummer(huisnummer)) {
case 1:
// Verkrijg huisletter
var pattern1 = new RegExp(/[A-Z]/i);
huisletter = pattern1.exec(huisnummer);
// Verkrijg toevoeging
var pattern2 = new RegExp(/\-(.*)/);
toevoeging = pattern2.exec(huisnummer)[1];
// Verkrijg huisnummer
var pattern3 = new RegExp(/[1-9]*/);
huisnummer = pattern3.exec(huisnummer);
// Stel BAG-url op
bagurl = "https://bag.basisregistraties.overheid.nl/api/v1/nummeraanduidingen?postcode="+postcode+"&huisnummer="+huisnummer+"&huisletter="+huisletter+"&huisnummertoevoeging="+toevoeging+"";
break;
case 2:
// Verkrijg toevoeging
var pattern1 = new RegExp(/\-(.*)/);
toevoeging = pattern1.exec(huisnummer)[1];
// Verkrijg huisnummer
var pattern2 = new RegExp(/[1-9]*/);
huisnummer = pattern2.exec(huisnummer);
// Stel BAG-url op
bagurl = "https://bag.basisregistraties.overheid.nl/api/v1/nummeraanduidingen?postcode="+postcode+"&huisnummer="+huisnummer+"&huisnummertoevoeging="+toevoeging+"";
break;
case 3:
// Verkrijg huisletter
var pattern1 = new RegExp(/[A-Z]/i);
huisletter = pattern1.exec(huisnummer);
// Verkrijg huisnummer
var pattern2 = new RegExp(/[1-9]*/);
huisnummer = pattern2.exec(huisnummer);
// Stel BAG-url op
bagurl = "https://bag.basisregistraties.overheid.nl/api/v1/nummeraanduidingen?postcode="+postcode+"&huisnummer="+huisnummer+"&huisletter="+huisletter+"";
break;
default:
bagurl = "https://bag.basisregistraties.overheid.nl/api/v1/nummeraanduidingen?postcode="+postcode+"&huisnummer="+huisnummer+"";
}
// API: Vraag BAG of deze combinatie bekend is
var data = getRequest(bagurl);
data = data._embedded.nummeraanduidingen[0];
if (data != undefined){
// Verkrijg URLs
var coordinatenURL = data._links.adresseerbaarObject.href;
var straatnaamURL = data._links.bijbehorendeOpenbareRuimte.href;
var straatnaamData = getRequest(straatnaamURL);
straat = straatnaamData.naam;
// Zoek bijbehorende plaatsnaam
var plaatsnaamURL = straatnaamData._links.bijbehorendeWoonplaats.href;
var plaatsnaamData = getRequest(plaatsnaamURL);
plaats = plaatsnaamData.naam;
// Zoek bijbehorende coordinaten
var coordinatenData = getRequest(coordinatenURL);
if (coordinatenData._embedded.geometrie.type === "Point"){
// Indien het adres een 'point' betreft, haal de coordinaten op.
lon = coordinatenData._embedded.geometrie.coordinates[0];
lat = coordinatenData._embedded.geometrie.coordinates[1];
} else {
// Indien het adres een 'polygon' betreft, zoek doormiddel van 'turf.js' het middelpunt voor de coordinaten.
var polygon = turf.polygon(coordinatenData._embedded.geometrie.coordinates);
var centroid = turf.centroid(polygon);
lon = centroid.geometry.coordinates[0];
lat = centroid.geometry.coordinates[1];
}
return {'straatnaam': straat, 'huisnummer': huisnummer, 'huisletter': huisletter, 'toevoeging': toevoeging, 'plaats': plaats, 'postcode': postcode, 'coordinaten': {'lat': lat, 'lon':lon}};
} else {
// Indien onbekend, geef foutmelding
return 'Fout: De opgegeven postcode/huisnummer combinatie resulteert niet in een gelig adres.';
}
}
function checkHuisnummer(huisnummerAanduiding) {
// 1. Check op huisletters met een toevoeging vb: 11A-1
var pattern1 = new RegExp(/[A-Z]\-(.*)/i);
// 2. Check op BIS als toevoeging vb: 1-BIS
var pattern2 = new RegExp(/\-/);
// 3. Check op huisletter vb: 11A
var pattern3 = new RegExp(/[A-Z]$/i);
if (pattern1.test(huisnummerAanduiding)) {
return 1;
} else if (pattern2.test(huisnummerAanduiding)) {
return 2;
} else if (pattern3.test(huisnummerAanduiding)) {
return 3;
}
}
function getRequest(url){
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", url, false);
xmlHttp.setRequestHeader('X-Api-Key', 'key here', 'Accept', 'application/hal+json');
xmlHttp.send( null );
var data = JSON.parse(xmlHttp.responseText);
return data
}