From ed44b99c9decb2f56df821d642bbc511e7d90eaa Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Wed, 15 Feb 2017 20:31:52 +1300 Subject: Support language for Google geocoder --- src/org/traccar/Context.java | 20 +++++--------------- src/org/traccar/geocoder/GeocodeFarmGeocoder.java | 13 +++++++------ src/org/traccar/geocoder/GoogleGeocoder.java | 19 +++++++++++-------- src/org/traccar/geocoder/NominatimGeocoder.java | 16 +++++++++------- 4 files changed, 32 insertions(+), 36 deletions(-) (limited to 'src/org') diff --git a/src/org/traccar/Context.java b/src/org/traccar/Context.java index cd6820778..c9c2e633e 100644 --- a/src/org/traccar/Context.java +++ b/src/org/traccar/Context.java @@ -208,15 +208,12 @@ public final class Context { String type = config.getString("geocoder.type", "google"); String url = config.getString("geocoder.url"); String key = config.getString("geocoder.key"); + String language = config.getString("geocoder.language"); int cacheSize = config.getInteger("geocoder.cacheSize"); switch (type) { case "nominatim": - if (key != null) { - geocoder = new NominatimGeocoder(url, key, cacheSize); - } else { - geocoder = new NominatimGeocoder(url, cacheSize); - } + geocoder = new NominatimGeocoder(url, key, cacheSize); break; case "gisgraphy": geocoder = new GisgraphyGeocoder(url, cacheSize); @@ -234,17 +231,10 @@ public final class Context { geocoder = new FactualGeocoder(url, key, cacheSize); break; case "geocodefarm": - if (key != null) { - geocoder = new GeocodeFarmGeocoder(key, cacheSize); - } else { - geocoder = new GeocodeFarmGeocoder(cacheSize); - } + geocoder = new GeocodeFarmGeocoder(key, cacheSize); + break; default: - if (key != null) { - geocoder = new GoogleGeocoder(key, cacheSize); - } else { - geocoder = new GoogleGeocoder(cacheSize); - } + geocoder = new GoogleGeocoder(key, language, cacheSize); break; } } diff --git a/src/org/traccar/geocoder/GeocodeFarmGeocoder.java b/src/org/traccar/geocoder/GeocodeFarmGeocoder.java index 585095606..db23aab79 100644 --- a/src/org/traccar/geocoder/GeocodeFarmGeocoder.java +++ b/src/org/traccar/geocoder/GeocodeFarmGeocoder.java @@ -19,14 +19,15 @@ import javax.json.JsonObject; public class GeocodeFarmGeocoder extends JsonGeocoder { - private static final String URL = "https://www.geocode.farm/v3/json/reverse/"; - - public GeocodeFarmGeocoder(int cacheSize) { - super(URL + "?lat=%f&lon=%f&country=us&lang=en&count=1", cacheSize); + private static String formatUrl(String key) { + String url = "https://www.geocode.farm/v3/json/reverse/"; + if (key != null) { + url += "&key=" + key; + } + return url; } - public GeocodeFarmGeocoder(String key, int cacheSize) { - super(URL + "?lat=%f&lon=%f&country=us&lang=en&count=1&key=" + key, cacheSize); + super(formatUrl(key), cacheSize); } @Override diff --git a/src/org/traccar/geocoder/GoogleGeocoder.java b/src/org/traccar/geocoder/GoogleGeocoder.java index 0506e701a..b38870c8f 100644 --- a/src/org/traccar/geocoder/GoogleGeocoder.java +++ b/src/org/traccar/geocoder/GoogleGeocoder.java @@ -21,16 +21,19 @@ import javax.json.JsonString; public class GoogleGeocoder extends JsonGeocoder { - public GoogleGeocoder() { - this(0); - } - - public GoogleGeocoder(int cacheSize) { - super("http://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f", cacheSize); + private static String formatUrl(String key, String language) { + String url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f"; + if (key != null) { + url += "&key=" + key; + } + if (language != null) { + url += "&language=" + language; + } + return url; } - public GoogleGeocoder(String key, int cacheSize) { - super("https://maps.googleapis.com/maps/api/geocode/json?latlng=%f,%f&key=" + key, cacheSize); + public GoogleGeocoder(String key, String language, int cacheSize) { + super(formatUrl(key, language), cacheSize); } @Override diff --git a/src/org/traccar/geocoder/NominatimGeocoder.java b/src/org/traccar/geocoder/NominatimGeocoder.java index b0ee39c6a..c10a1414e 100644 --- a/src/org/traccar/geocoder/NominatimGeocoder.java +++ b/src/org/traccar/geocoder/NominatimGeocoder.java @@ -19,16 +19,18 @@ import javax.json.JsonObject; public class NominatimGeocoder extends JsonGeocoder { - public NominatimGeocoder() { - this("http://nominatim.openstreetmap.org/reverse", 0); - } - - public NominatimGeocoder(String url, int cacheSize) { - super(url + "?format=json&lat=%f&lon=%f&zoom=18&addressdetails=1", cacheSize); + private static String formatUrl(String url, String key) { + if (url == null) { + url = "http://nominatim.openstreetmap.org/reverse"; + } + if (key != null) { + url += "&key=" + key; + } + return url; } public NominatimGeocoder(String url, String key, int cacheSize) { - super(url + "?format=json&lat=%f&lon=%f&zoom=18&addressdetails=1&key=" + key, cacheSize); + super(formatUrl(url, key), cacheSize); } @Override -- cgit v1.2.3