Geocoding met Open Street Maps
Latitude en longitude ophalen
Als alternatief voor de Google Maps API kan je het gebruiken van Open Street Maps (OSM) overwegen. OSM heeft een heel eenvoudige en slimme service met de naam Nominatim.
Gebruik de Insert From URL
script step van FileMaker, kies JSON als teruggaveformaat en verwerk de latitude (lat) en longitude (lon) uit het resultaat.
Kijk eens naar dit voorbeeld, de details van ons kantoor in Antwerpen
https://nominatim.openstreetmap.org/search?format=json&q=Cogels-Osylei%2036+2600+Antwerp+BE
Dat geeft het volgende resultaat terug:
[{"place_id":"175614111","licence":"Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright","osm_type":"way","osm_id":"511761021","boundingbox":["51.2036036","51.2037706","4.4328532","4.4330846"],"lat":"51.20368615","lon":"4.4329703913766","display_name":"36, Cogels-Osylei, Berchem, Antwerpen, Vlaanderen, 2600, België","class":"historic","type":"building","importance":0.62025}]
Als je dit resultaat bewaart in een variable $result, dan kan je op deze manier de latitude en longitude achterhalen in je FileMaker script:
Set Variable [ $lat ; Value: JSONGetElement ( "[0]lat" ) ]
Set Variable [ $lon ; Value: JSONGetElement ( "[0]lon" ) ]
Als je goed naar het resultaat kijkt, dan zie je dat dit in feite een JSON array is, met daarin objecten. Het resultaat kan inderdaad uit meerdere items (matches) bestaan. In het bovenstaand voorbeeld kijken we simpelweg naar de eerste match – de JSONGetElement()
functie is 0-based!
De Usage Policy van OSM is meer flexibel dan die van de Google Maps API’s. Uiteraard is het belangrijk dat je sowieso copyright en Terms of Service van OSM respecteert.
Reverse geocoding: adresgegevens ophalen
Je kan ook het omgekeerde doen: adresgegevens ophalen op basis van latitudes and longitudes. Bijvoorbeeld:
https://nominatim.openstreetmap.org/reverse?format=json&lat=51.20368615&lon=4.4329703913766
Geeft dit resultaat terug:
{"place_id":"175614111","licence":"Data © OpenStreetMap contributors, ODbL 1.0. https://osm.org/copyright","osm_type":"way","osm_id":"511761021","lat":"51.20368615","lon":"4.4329703913766","display_name":"36, Cogels-Osylei, Berchem, Antwerpen, Vlaanderen, 2600, België","address":{"house_number":"36","road":"Cogels-Osylei","city_district":"Berchem","city":"Antwerpen","county":"Antwerpen","state":"Vlaanderen","postcode":"2600","country":"België","country_code":"be"},"boundingbox":["51.2036036","51.2037706","4.4328532","4.4330846"]}