From 81ce7cdc3d8f7ebbcb5a0aa0171aaa71e7c93999 Mon Sep 17 00:00:00 2001 From: Andreas Schildbach Date: Wed, 10 Feb 2016 18:58:30 +0100 Subject: [PATCH] Navitia: When querying for nearby locations, let the server choose the limit when maxLocations=0. --- .../pte/AbstractNavitiaProvider.java | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java b/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java index 1dead7f0..b5cbcda5 100644 --- a/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java +++ b/enabler/src/de/schildbach/pte/AbstractNavitiaProvider.java @@ -766,45 +766,42 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider final ResultHeader resultHeader = new ResultHeader(network, SERVER_PRODUCT, SERVER_VERSION, 0, null); // Build query uri depending of location type. - final String queryUriType; + final StringBuilder queryUri = new StringBuilder(uri()); if (location.type == LocationType.COORD || location.type == LocationType.ADDRESS || location.type == LocationType.ANY) { if (!location.hasLocation()) - { throw new IllegalArgumentException(); - } final double lon = location.lon / 1E6; final double lat = location.lat / 1E6; - - queryUriType = "coords/" + lon + ";" + lat + "/"; + queryUri.append("coords/").append(lon).append(';').append(lat); } else if (location.type == LocationType.STATION) { if (!location.isIdentified()) - { throw new IllegalArgumentException(); - } - queryUriType = "stop_points/" + location.id + "/"; + queryUri.append("stop_points/").append(location.id); } else if (location.type == LocationType.POI) { if (!location.isIdentified()) - { throw new IllegalArgumentException(); - } - queryUriType = "pois/" + location.id + "/"; + queryUri.append("pois/").append(location.id); } else { throw new IllegalArgumentException("Unhandled location type: " + location.type); } + queryUri.append('/'); if (maxDistance == 0) maxDistance = 50000; - final String queryUri = uri() + queryUriType + "places_nearby?type[]=stop_point" + "&distance=" + maxDistance + "&count=" + maxLocations - + "&depth=0"; - final CharSequence page = httpClient.get(queryUri); + queryUri.append("places_nearby?type[]=stop_point"); + queryUri.append("&distance=").append(maxDistance); + if (maxLocations > 0) + queryUri.append("&count=").append(maxLocations); + queryUri.append("&depth=0"); + final CharSequence page = httpClient.get(queryUri.toString()); try {