获得公路名称 - Skobbler

时间:2015-09-18 13:41:21

标签: ios objective-c openstreetmap skmaps

我需要获取用户当前正在导航的高速公路名称。 这可以在导航模式下完成,从

获取
-(void)routingService:(SKRoutingService *)routingService didChangeCurrentStreetName:(NSString *)currentStreetName streetType:(SKStreetType)streetType countryCode:(NSString *)countryCode

所以,当我昨天测试我的应用程序时,我在高速公路上,是的,Skobbler确实认识到我在一个,是的,我得到了公路名称。

是“布鲁克林 - 皇后高速公路”。 但是,布鲁克林 - 皇后高速公路实际上是I-278州际高速公路的名称,我后来必须使用的所有功能都需要以这种格式获得公路名称 I-nnn

这是我的意思的地图照片

enter image description here

那么,当streetType被识别为州际高速公路时,有没有办法以I-nnn格式获得streetName? 或者我们可以咨询任何Open Streetmap数据库吗?我无法在OSM Wiki上找到任何东西。

2 个答案:

答案 0 :(得分:3)

不了解Skobbler SDK,但如果在线查询可用并且您有大致的地理区域和高速公路的名称,您可以使用Overpass API(http://wiki.openstreetmap.org/wiki/Overpass_API)来查询openstreetmap数据库用于高速公路参考。

例如,以下查询(对于包含高速公路的一小部分的特定bbox):

{
  "version": 0.6,
  "generator": "Overpass API",
  "osm3s": {
    "timestamp_osm_base": "2015-09-18T20:21:02Z",
    "copyright": "The data included in this document is from www.openstreetmap.org. The data is made available under ODbL."
  },
  "elements": [

{
  "type": "way",
  "id": 46723482,
  "nodes": [
    488264429,
    488264444,
    488264461,
    488264512,
    488264530,
    488264541,
    597315979
  ],
  "tags": {
    "bicycle": "no",
    "bridge": "yes",
    "foot": "no",
    "hgv": "designated",
    "highway": "motorway",
    "horse": "no",
    "lanes": "3",
    "layer": "1",
    "name": "Brooklyn-Queens Expressway",
    "oneway": "yes",
    "ref": "I 278",
    "sidewalk": "none",
  }
},
{
  "type": "way",
  "id": 46724225,
  "nodes": [
    597315978,
    488242888,
    488248526,
    488248544,
    488248607
  ],
  "tags": {
    "bicycle": "no",
    "bridge": "yes",
    "foot": "no",
    "hgv": "designated",
    "highway": "motorway",
    "horse": "no",
    "lanes": "3",
    "layer": "1",
    "name": "Brooklyn-Queens Expressway",
    "oneway": "yes",
    "ref": "I 278",
    "sidewalk": "none",
  }
}

  ]
}

返回(为简单起见省略了一些键值对):

{{1}}

这是osm数据库中的两个部分。在美国,州际公路的“参考”标签采用“我XXX”的形式(请参阅http://wiki.openstreetmap.org/wiki/Interstate_Highways并注明协同定位的格式)。您可以相应地检索州际名称。

您可以在http://overpass-turbo.eu/s/bxi处的overpass-turbo(服务的UI)上尝试上述查询(按RUN和DATA选项卡查看返回的数据,并平移地图以便在另一个bbox中查询)。 / p>

答案 1 :(得分:1)

SDK中未公开“ref”信息(将其放在TODO列表中)。

解决方法是查看文本建议(使用TTS时),因为此信息存在(如果查看$ ref参数,其中包含您要查找的信息)。 有关文本建议结构的更多详细信息,请参阅this blog article