OpenStreetMap 是不是有 Point(Source) to Point(Destination) 方向 uri 可在 Android 中使用?

Posted

技术标签:

【中文标题】OpenStreetMap 是不是有 Point(Source) to Point(Destination) 方向 uri 可在 Android 中使用?【英文标题】:Does OpenStreetMap has Point(Source) to Point(Destination) direction uri to use in Android?OpenStreetMap 是否有 Point(Source) to Point(Destination) 方向 uri 可在 Android 中使用? 【发布时间】:2015-08-31 20:27:10 【问题描述】:

在我的应用程序中,我集成了 OpenStreetMap,我在其中获取了源坐标和目标坐标。我需要使用 Intent 类将这些坐标传递给 OpenStreetMap 应用程序,因为我需要 Uri

经过 2 天的搜索,我得到了这个 Uri

http://www.openstreetmap.org/?mlat=latitude&mlon=longitude&zoom=12

目前只支持一个位置,但我不想要它。

谁能帮我解决这个问题?在此先感谢...

下面是我的代码

Intent sendLocationToMap = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://openstreetmap.org/?mlat=13.074847&mlon=80.271019&zoom=12"));
startActivity(sendLocationToMap);

【问题讨论】:

【参考方案1】:

我假设您问的是routing。在这种情况下,答案是肯定的,有各种online routers(例如 GraphHopper、OSRM 和 MapQuest)以及用于 OSM 的offline routers。其中许多在线路由器都提供 GPX 导出。

【讨论】:

【参考方案2】:

您需要使用/directions 端点。

示例(以下意图将打开具有两点之间路线的 www.openstreetmap.org 网站):

http://www.openstreetmap.org/directions?engine=osrm_car&route=53.1855%2C18.0272%3B53.0915%2C18.0087

Intent sendLocationToMap = new Intent(android.content.Intent.ACTION_VIEW, 
Uri.parse("http://www.openstreetmap.org/directions?engine=osrm_car&route=53.1855%2C18.0272%3B53.0915%2C18.0087"));
startActivity(sendLocationToMap);

OsmAnd 应用不支持路线网址:

http://www.openstreetmap.org/directions?engine=osrm_car&route=53.1855%2C18.0272%3B53.0915%2C18.0087 http://maps.google.com/maps?daddr=53.0915,18.0087&saddr=53.1855,18.0272

OsmAnd 将只显示一个地理点,它们之间没有路线。

来源:https://github.com/osmandapp/Osmand/blob/master/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java


但是谷歌地图路线网址:

http://maps.google.com/maps?daddr=53.0915,18.0087&saddr=53.1855,18.0272

受 Google 地图和 HERE 支持。

【讨论】:

我尝试了下面的Intent sendLocationToMap = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse("http://www.openstreetmap.org/directions?engine=osrm_car&route=%"+ sourceLatitude + "%" + sourceLongitude + destinationLatitude + "%" + destinationLongitude)); startActivity(sendLocationToMap);,但它说“无法解析地理意图“openstreetmap.org/… 你用哪个应用打开这个intent? 你知道我为什么要集成 OpenStreetMap 而不是谷歌地图,只是因为也支持黑莓设备(因为黑莓不支持谷歌地图)。有没有其他方法可以做到这一点? 你需要询问 OsmAnd 开发者是否计划支持这种 url。

以上是关于OpenStreetMap 是不是有 Point(Source) to Point(Destination) 方向 uri 可在 Android 中使用?的主要内容,如果未能解决你的问题,请参考以下文章

python 包介绍:osmnx

如何从 OpenStreetMap 数据中找到街道交叉口的列表?

获取 Tilemill 以显示带有英文标题的 openstreetmap 地图

使用 Mapkit 框架加载 openstreetmap

获取OpenStreetMap数据方法知多少

从 Openstreetmap 缓存切片