public enum WebService
{
- MAP_SOURCE_GOOGLE, /* Google maps */
- MAP_SOURCE_OSM, /* OpenStreetMap */
- MAP_SOURCE_MAPQUEST, /* Mapquest */
- MAP_SOURCE_YAHOO, /* Yahoo */
- MAP_SOURCE_BING, /* Bing */
- MAP_SOURCE_PEAKFINDER, /* PeakFinder */
- MAP_SOURCE_GEOHACK, /* Geohack */
- MAP_SOURCE_PANORAMIO, /* Panoramio */
- MAP_SOURCE_OPENCACHINGCOM, /* Opencaching.com */
+ MAP_SOURCE_GOOGLE, /* Google maps */
+ MAP_SOURCE_OSM, /* OpenStreetMap */
+ MAP_SOURCE_MAPQUEST, /* Mapquest */
+ MAP_SOURCE_YAHOO, /* Yahoo */
+ MAP_SOURCE_BING, /* Bing */
+ MAP_SOURCE_PEAKFINDER, /* PeakFinder */
+ MAP_SOURCE_GEOHACK, /* Geohack */
+ MAP_SOURCE_INLINESKATE, /* Inlinemap.net */
+ MAP_SOURCE_GRAPHHOPPER /* Routing with GraphHopper */
}
/**
return generateBingUrl(inTrackInfo);
case MAP_SOURCE_PEAKFINDER:
case MAP_SOURCE_GEOHACK:
- case MAP_SOURCE_PANORAMIO:
- case MAP_SOURCE_OPENCACHINGCOM:
+ case MAP_SOURCE_INLINESKATE:
return generateUrlForPoint(inSource, inTrackInfo);
+ case MAP_SOURCE_GRAPHHOPPER:
+ return generateGraphHopperUrl(inTrackInfo);
case MAP_SOURCE_OSM:
default:
return generateOpenStreetMapUrl(inTrackInfo);
return url;
}
+ /**
+ * Generate a url for routing with GraphHopper
+ * @param inTrackInfo track information
+ * @return URL
+ */
+ private static String generateGraphHopperUrl(TrackInfo inTrackInfo)
+ {
+ // Check if any data to display
+ if (inTrackInfo != null && inTrackInfo.getTrack() != null && inTrackInfo.getTrack().getNumPoints() >= 2)
+ {
+ if (inTrackInfo.getTrack().getNumPoints() == 2)
+ {
+ // Use first and last point of track
+ return generateGraphHopperUrl(inTrackInfo.getTrack().getPoint(0),
+ inTrackInfo.getTrack().getPoint(1));
+ }
+ else if (inTrackInfo.getSelection().hasRangeSelected())
+ {
+ // Use first and last point of selection
+ final int startIndex = inTrackInfo.getSelection().getStart();
+ final int endIndex = inTrackInfo.getSelection().getEnd();
+ return generateGraphHopperUrl(inTrackInfo.getTrack().getPoint(startIndex),
+ inTrackInfo.getTrack().getPoint(endIndex));
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Generate a url for routing with GraphHopper
+ * @param inStartPoint start point of routing
+ * @param inEndPoint end point of routing
+ * @return URL
+ */
+ private static String generateGraphHopperUrl(DataPoint inStartPoint, DataPoint inEndPoint)
+ {
+ final String url = "https://graphhopper.com/maps/"
+ + "?point=" + FIVE_DP.format(inStartPoint.getLatitude().getDouble())
+ + "%2C" + FIVE_DP.format(inStartPoint.getLongitude().getDouble())
+ + "&point=" + FIVE_DP.format(inEndPoint.getLatitude().getDouble())
+ + "%2C" + FIVE_DP.format(inEndPoint.getLongitude().getDouble())
+ + "&locale=" + I18nManager.getText("wikipedia.lang")
+ + "&elevation=true&weighting=fastest";
+ return url;
+ }
+
/**
* Generate a url for Open Street Map
* @param inTrackInfo track information
return generatePeakfinderUrl(currPoint);
case MAP_SOURCE_GEOHACK:
return generateGeohackUrl(currPoint);
- case MAP_SOURCE_PANORAMIO:
- return generatePanoramioUrl(currPoint);
- case MAP_SOURCE_OPENCACHINGCOM:
- return generateOpencachingComUrl(currPoint);
+ case MAP_SOURCE_INLINESKATE:
+ return generateInlinemapUrl(currPoint);
default:
return null;
}
*/
private static String generatePeakfinderUrl(DataPoint inPoint)
{
- return "http://peakfinder.org/?lat=" + FIVE_DP.format(inPoint.getLatitude().getDouble())
+ return "https://www.peakfinder.org/?lat=" + FIVE_DP.format(inPoint.getLatitude().getDouble())
+ "&lng=" + FIVE_DP.format(inPoint.getLongitude().getDouble());
}
{
return "https://tools.wmflabs.org/geohack/geohack.php?params=" + FIVE_DP.format(inPoint.getLatitude().getDouble())
+ "_N_" + FIVE_DP.format(inPoint.getLongitude().getDouble()) + "_E";
- // TODO: Could use absolute values and S, W but this seems to work
- }
-
- /**
- * Generate a url for Panoramio.com
- * @param inPoint current point, not null
- * @return URL
- */
- private static String generatePanoramioUrl(DataPoint inPoint)
- {
- return "http://panoramio.com/map/#lt=" + FIVE_DP.format(inPoint.getLatitude().getDouble())
- + "&ln=" + FIVE_DP.format(inPoint.getLongitude().getDouble()) + "&z=1&k=0";
+ // Note: Could use absolute values and S, W but this seems to work
}
-
/**
- * Generate a url for OpenCaching.com
+ * Generate a url for Inlinemap.net
* @param inPoint current point, not null
* @return URL
*/
- private static String generateOpencachingComUrl(DataPoint inPoint)
+ private static String generateInlinemapUrl(DataPoint inPoint)
{
- final String occLang = I18nManager.getText("webservice.opencachingcom.lang");
- final String url = "http://www.opencaching.com/" + occLang
- + "/#find?&loc=" + FIVE_DP.format(inPoint.getLatitude().getDouble())
- + "," + FIVE_DP.format(inPoint.getLongitude().getDouble());
- return url;
+ return "http://www.inlinemap.net/en/?tab=new#/z14/" + FIVE_DP.format(inPoint.getLatitude().getDouble())
+ + "," + FIVE_DP.format(inPoint.getLongitude().getDouble()) + "/terrain";
}
-
/**
* Get the median value from the given lat/long range
* @param inRange range of values