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.0272OsmAnd 将只显示一个地理点,它们之间没有路线。
来源: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 中使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 OpenStreetMap 数据中找到街道交叉口的列表?