Skip to content

Commit ee28b82

Browse files
committed
fix #21538 - Fixed GPS traces no longer being browsable (patch by ygramul, modified)
git-svn-id: https://josm.openstreetmap.de/svn/trunk@18320 0c6e7542-c601-0410-84e7-c038aed88b3b
1 parent 06165ef commit ee28b82

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/org/openstreetmap/josm/io/BoundingBoxDownloader.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,15 @@
1111
import org.openstreetmap.josm.data.Bounds;
1212
import org.openstreetmap.josm.data.DataSource;
1313
import org.openstreetmap.josm.data.gpx.GpxData;
14+
import org.openstreetmap.josm.data.gpx.IGpxTrack;
1415
import org.openstreetmap.josm.data.notes.Note;
1516
import org.openstreetmap.josm.data.osm.DataSet;
1617
import org.openstreetmap.josm.gui.progress.ProgressMonitor;
18+
import org.openstreetmap.josm.spi.preferences.Config;
1719
import org.openstreetmap.josm.tools.CheckParameterUtil;
1820
import org.openstreetmap.josm.tools.JosmRuntimeException;
1921
import org.openstreetmap.josm.tools.Logging;
22+
import org.openstreetmap.josm.tools.Utils;
2023
import org.xml.sax.SAXException;
2124

2225
/**
@@ -51,7 +54,7 @@ private GpxData downloadRawGps(Bounds b, ProgressMonitor progressMonitor) throws
5154
boolean done = false;
5255
GpxData result = null;
5356
final int pointsPerPage = 5000; // see https://wiki.openstreetmap.org/wiki/API_v0.6#GPS_traces
54-
String url = "trackpoints?bbox="+b.getMinLon()+','+b.getMinLat()+','+b.getMaxLon()+','+b.getMaxLat()+"&page=";
57+
final String url = getBaseUrl() + "trackpoints?bbox="+b.getMinLon()+','+b.getMinLat()+','+b.getMaxLon()+','+b.getMaxLat()+"&page=";
5558
for (int i = 0; !done && !isCanceled(); ++i) {
5659
progressMonitor.subTask(tr("Downloading points {0} to {1}...", i * pointsPerPage, (i + 1) * pointsPerPage));
5760
try (InputStream in = getInputStream(url+i, progressMonitor.createSubTaskMonitor(1, true))) {
@@ -62,6 +65,20 @@ private GpxData downloadRawGps(Bounds b, ProgressMonitor progressMonitor) throws
6265
GpxReader reader = new GpxReader(in);
6366
gpxParsedProperly = reader.parse(false);
6467
GpxData currentGpx = reader.getGpxData();
68+
69+
// #21538 - Apparently track URLs are no longer complete URLs, but only paths
70+
// We'll prefix the browse URL to get something to navigate to again.
71+
final String browseUrl = Config.getUrls().getBaseBrowseUrl();
72+
for (IGpxTrack track : currentGpx.tracks) {
73+
Object trackUrl = track.get("url");
74+
if (trackUrl instanceof String) {
75+
String sTrackUrl = (String) trackUrl;
76+
if (!Utils.isBlank(sTrackUrl) && !sTrackUrl.startsWith("http")) {
77+
track.put("url", browseUrl + sTrackUrl);
78+
}
79+
}
80+
}
81+
6582
long count = 0;
6683
if (currentGpx.hasTrackPoints()) {
6784
count = currentGpx.getTrackPoints().count();

0 commit comments

Comments
 (0)