diff --git a/src/de/schildbach/pte/Connection.java b/src/de/schildbach/pte/Connection.java
index 803f7cca..6f70c7f6 100644
--- a/src/de/schildbach/pte/Connection.java
+++ b/src/de/schildbach/pte/Connection.java
@@ -143,6 +143,19 @@ public final class Connection implements Serializable
final public String departure;
final public int arrivalId;
final public String arrival;
+ final public double arrivalLat, arrivalLon;
+
+ public Footway(final int min, final int departureId, final String departure, final int arrivalId, final String arrival,
+ final double arrivalLat, final double arrivalLon)
+ {
+ this.min = min;
+ this.departureId = departureId;
+ this.departure = departure;
+ this.arrivalId = arrivalId;
+ this.arrival = arrival;
+ this.arrivalLat = arrivalLat;
+ this.arrivalLon = arrivalLon;
+ }
public Footway(final int min, final int departureId, final String departure, final int arrivalId, final String arrival)
{
@@ -151,6 +164,8 @@ public final class Connection implements Serializable
this.departure = departure;
this.arrivalId = arrivalId;
this.arrival = arrival;
+ this.arrivalLat = 0;
+ this.arrivalLon = 0;
}
@Override
@@ -161,7 +176,7 @@ public final class Connection implements Serializable
builder.append(",");
builder.append("departure=").append(departureId).append("/").append(departure);
builder.append(",");
- builder.append("arrival=").append(arrivalId).append("/").append(arrival);
+ builder.append("arrival=").append(arrivalId).append("/").append(arrival).append("/").append(arrivalLat).append(",").append(arrivalLon);
builder.append("]");
return builder.toString();
}
diff --git a/src/de/schildbach/pte/VbbProvider.java b/src/de/schildbach/pte/VbbProvider.java
index a5bda705..ecc655cf 100644
--- a/src/de/schildbach/pte/VbbProvider.java
+++ b/src/de/schildbach/pte/VbbProvider.java
@@ -370,9 +370,9 @@ public final class VbbProvider implements NetworkProvider
+ "(.*?)" // arrival
+ "|" //
+ "(\\d+) Min\\.[\n\\s]?" // footway
- + "Fussweg\n?" //
- + ".*?(?:\n?" // arrivalId
- + "(.*?)|(\\w.*?)|(.*?)).*?" // arrival
+ + "Fussweg.*?" //
+ + "(?:\n" // arrivalId
+ + "(.*?)|([^<]*)|([^<]*)).*?" // arrival
+ ").*?", Pattern.DOTALL);
public GetConnectionDetailsResult getConnectionDetails(final String uri) throws IOException
@@ -453,17 +453,22 @@ public final class VbbProvider implements NetworkProvider
{
final int arrivalId = mDetFine.group(12) != null ? Integer.parseInt(mDetFine.group(12)) : 0;
- final String arrival = ParserUtils.resolveEntities(selectNotNull(mDetFine.group(13), mDetFine.group(14), mDetFine.group(15)));
+ final String arrival = ParserUtils.resolveEntities(selectNotNull(mDetFine.group(13), mDetFine.group(16), mDetFine.group(17)));
+
+ final double arrivalLon = mDetFine.group(14) != null ? latLonToDouble(Integer.parseInt(mDetFine.group(14))) : 0;
+
+ final double arrivalLat = mDetFine.group(15) != null ? latLonToDouble(Integer.parseInt(mDetFine.group(15))) : 0;
if (parts.size() > 0 && parts.get(parts.size() - 1) instanceof Connection.Footway)
{
final Connection.Footway lastFootway = (Connection.Footway) parts.remove(parts.size() - 1);
parts.add(new Connection.Footway(lastFootway.min + Integer.parseInt(min), lastFootway.departureId, lastFootway.departure,
- arrivalId, arrival));
+ arrivalId, arrival, arrivalLat, arrivalLon));
}
else
{
- parts.add(new Connection.Footway(Integer.parseInt(min), departureId, departure, arrivalId, arrival));
+ parts.add(new Connection.Footway(Integer.parseInt(min), departureId, departure, arrivalId, arrival, arrivalLat,
+ arrivalLon));
}
lastArrival = arrival;