commit
7c02c314dc
1 changed files with 9 additions and 2 deletions
|
@ -45,6 +45,13 @@ public class GeoPointParserUtil {
|
||||||
actual = GeoPointParserUtil.parse("geo", url);
|
actual = GeoPointParserUtil.parse("geo", url);
|
||||||
assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z, name));
|
assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z, name));
|
||||||
|
|
||||||
|
// geo:34.99,-106.61?q=34.99%2C-106.61 (Treasure Island)
|
||||||
|
z = GeoParsedPoint.NO_ZOOM;
|
||||||
|
url = "geo:" + dlat + "," + dlon + "?q=" + dlat + "%2C" + dlon + " (" + name + ")";
|
||||||
|
System.out.println("url: " + url);
|
||||||
|
actual = GeoPointParserUtil.parse("geo", url);
|
||||||
|
assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z, name));
|
||||||
|
|
||||||
// 0,0?q=34,-106(Treasure Island)
|
// 0,0?q=34,-106(Treasure Island)
|
||||||
z = GeoParsedPoint.NO_ZOOM;
|
z = GeoParsedPoint.NO_ZOOM;
|
||||||
url = "geo:0,0?q=" + ilat + "," + ilon + " (" + name + ")";
|
url = "geo:0,0?q=" + ilat + "," + ilon + " (" + name + ")";
|
||||||
|
@ -331,7 +338,7 @@ public class GeoPointParserUtil {
|
||||||
* @return {@link GeoParsedPoint}
|
* @return {@link GeoParsedPoint}
|
||||||
*/
|
*/
|
||||||
public static GeoParsedPoint parse(final String scheme, final String uri) {
|
public static GeoParsedPoint parse(final String scheme, final String uri) {
|
||||||
final URI data = URI.create(uri.replaceAll("\\s+", "+").replaceAll("%20", "+"));
|
final URI data = URI.create(uri.replaceAll("\\s+", "+").replaceAll("%20", "+").replaceAll("%2C", ","));
|
||||||
if ("http".equals(scheme) || "https".equals(scheme)) {
|
if ("http".equals(scheme) || "https".equals(scheme)) {
|
||||||
|
|
||||||
final String schemeSpecific = data.getSchemeSpecificPart();
|
final String schemeSpecific = data.getSchemeSpecificPart();
|
||||||
|
@ -469,7 +476,7 @@ public class GeoPointParserUtil {
|
||||||
} else {
|
} else {
|
||||||
// geo:47.6,-122.3
|
// geo:47.6,-122.3
|
||||||
// geo:47.6,-122.3?z=11 (Treasure Island)
|
// geo:47.6,-122.3?z=11 (Treasure Island)
|
||||||
final String pattern = "([+-]?\\d+(?:\\.\\d+)?),([+-]?\\d+(?:\\.\\d+)?)(?:\\?z=(\\d{1,2}))?[\\+]?(?:\\((.*?)\\))?";
|
final String pattern = "([+-]?\\d+(?:\\.\\d+)?),([+-]?\\d+(?:\\.\\d+)?)(?:(?:\\?z=(\\d{1,2}))?|(?:\\?q=.*?)?)[\\+]?(?:\\((.*?)\\))?";
|
||||||
final Matcher matcher = Pattern.compile(pattern).matcher(schemeSpecific);
|
final Matcher matcher = Pattern.compile(pattern).matcher(schemeSpecific);
|
||||||
if (matcher.matches()) {
|
if (matcher.matches()) {
|
||||||
final double lat = Double.valueOf(matcher.group(1));
|
final double lat = Double.valueOf(matcher.group(1));
|
||||||
|
|
Loading…
Reference in a new issue