From cf30e53ff3a4dbfeaeb8b652425d93ef25e7f410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Cebri=C3=A1n=20Juan?= Date: Sat, 19 Jan 2019 01:06:30 +0100 Subject: [PATCH] Switch to OpenStreetMap Nominatim API --- Mapper.m | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Mapper.m b/Mapper.m index b62072a..b5004b0 100644 --- a/Mapper.m +++ b/Mapper.m @@ -81,15 +81,20 @@ classdef Mapper < handle % returns a struct with fields 'minLon', 'maxLon', 'minLat', and % 'maxLat'. - baseurl = 'https://maps.googleapis.com/maps/api/geocode/json'; + baseurl = 'https://nominatim.openstreetmap.org/search'; place = urlencode(place); - url = sprintf('%s?&address=%s', baseurl, place); + url = sprintf('%s?&city=%s&format=json', baseurl, place); data = jsondecode(urlread(url)); - geometry = data.results.geometry.bounds; - coords = struct('minLon', geometry.southwest.lng, ... - 'maxLon', geometry.northeast.lng, ... - 'minLat', geometry.southwest.lat, ... - 'maxLat', geometry.northeast.lat); + if isstruct(data) + bbox = data(1).boundingbox; + elseif iscell(data) + bbox = data{1}.boundingbox; + end + geometry = cellfun(@str2double, bbox); + coords = struct('minLon', geometry(3), ... + 'maxLon', geometry(4), ... + 'minLat', geometry(1), ... + 'maxLat', geometry(2)); if coords.minLon > coords.maxLon [coords.minLon, coords.maxLon] = ... deal(coords.maxLon, coords.minLon); -- 2.17.1