【问题标题】:How can OSMdroid and OSMBonusPack use OpenStreetMap's Barrier?OSMdroid 和 OSMBonusPack 如何使用 OpenStreetMap 的 Barrier?
【发布时间】:2014-05-04 17:04:24
【问题描述】:
我目前正在 Android Studio 中开发一款 GPS 应用程序,该应用程序会将我从当前位置路由到设定的目的地。
事先,沿着这条路,我想让一些街道和路线不可用强制 GPS 引导我最短距离而不使用这些不可用路线。
例如,我正从 A 向 B 行驶。在最短的正常路线之间,我要经过一座桥。这座桥已经倒塌,并用一个大红十字形状的 MapOverlayItem 进行标记。我希望 GPS 知道桥已损坏并引导我前往另一条路线。
我使用 OSMdroid 进行地图,使用 OSMBonusPack 进行路由。
我知道 OSM 拥有我 need 的功能,但我不确定如何将它们一起使用。
【问题讨论】:
标签:
android
map
gps
routes
openstreetmap
【解决方案1】:
我的一个朋友解决了它。
@Override
protected Integer doInBackground(GeoPoint... geoPoints) {
String url = getRoadUrl(geoPoints[0]);
HttpConnection connection = new HttpConnection();
connection.doGet(url);
String s = connection.getContentAsString();
String[] split = s.split("\"linkId\":");
split = split[1].split(",");
return Integer.parseInt(split[0]);
}
通过查找路线的 ID,您可以明确要求它不要按该道路计算。上面的代码只是一个sn-p来展示我们如何要求一条不被使用的路。询问您是否需要更多描述性的版本。
【解决方案2】:
不幸的是,我认为这是不可能的。据我所知,OSMBonusPack 本身并不做路由(离线路由),而是使用 MapQuest(在线路由)。因此,您不能自己添加任意障碍。唯一的解决方案是将offline router 用于android。