From 0ca5c50af7ef1ef6aaa6e9b11600cd3384eb18da Mon Sep 17 00:00:00 2001 From: "andreas.schildbach@gmail.com" Date: Fri, 25 Nov 2011 20:11:39 +0000 Subject: [PATCH] nearby stations by coordinate via rest api git-svn-id: https://public-transport-enabler.googlecode.com/svn/trunk@853 0924bc21-9374-b0fa-ee44-9ff1593b38f0 --- .../schildbach/pte/AbstractHafasProvider.java | 2 +- src/de/schildbach/pte/DsbProvider.java | 22 ++++++++++--------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/de/schildbach/pte/AbstractHafasProvider.java b/src/de/schildbach/pte/AbstractHafasProvider.java index db6ce12a..8a2f832e 100644 --- a/src/de/schildbach/pte/AbstractHafasProvider.java +++ b/src/de/schildbach/pte/AbstractHafasProvider.java @@ -371,7 +371,7 @@ public abstract class AbstractHafasProvider extends AbstractNetworkProvider while (XmlPullUtil.test(pp, "StopLocation") || XmlPullUtil.test(pp, "CoordLocation")) { - final String name = XmlPullUtil.attr(pp, "name"); + final String name = ParserUtils.resolveEntities(XmlPullUtil.attr(pp, "name")); final int lon = XmlPullUtil.intAttr(pp, "x"); final int lat = XmlPullUtil.intAttr(pp, "y"); diff --git a/src/de/schildbach/pte/DsbProvider.java b/src/de/schildbach/pte/DsbProvider.java index 07f51e65..e945344a 100644 --- a/src/de/schildbach/pte/DsbProvider.java +++ b/src/de/schildbach/pte/DsbProvider.java @@ -104,24 +104,26 @@ public class DsbProvider extends AbstractHafasProvider } } + private static final String NEARBY_STATIONS_BY_COORDINATE_URI = "http://xmlopen.rejseplanen.dk/bin/rest.exe/stopsNearby?coordX=%d&coordY=%d"; + public NearbyStationsResult queryNearbyStations(final Location location, final int maxDistance, final int maxStations) throws IOException { - final StringBuilder uri = new StringBuilder(API_BASE); - if (location.hasLocation()) { - uri.append("query.exe/mny"); - uri.append("?performLocating=2&tpl=stop2json"); - uri.append("&look_maxno=").append(maxStations != 0 ? maxStations : 200); - uri.append("&look_maxdist=").append(maxDistance != 0 ? maxDistance : 5000); - uri.append("&look_stopclass=").append(allProductsInt()); - uri.append("&look_x=").append(location.lon); - uri.append("&look_y=").append(location.lat); + final StringBuilder uri = new StringBuilder(String.format(NEARBY_STATIONS_BY_COORDINATE_URI, location.lon, location.lat)); + if (maxStations != 0) + uri.append("maxNumber=").append(maxStations); + if (maxDistance != 0) + uri.append("maxRadius=").append(maxDistance); - return jsonNearbyStations(uri.toString()); + final List locations = xmlLocationList(uri.toString()); + + return new NearbyStationsResult(null, locations); } else if (location.type == LocationType.STATION && location.hasId()) { + final StringBuilder uri = new StringBuilder(API_BASE); + uri.append("stboard.exe/mn"); uri.append("?productsFilter=").append(allProductsString()); uri.append("&boardType=dep");