获取高速公路名称 - Skobbler

Getting the Highway name - Skobbler

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

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

所以,当我昨天测试我的应用程序时,我在高速公路上,是的,Skobbler 确实认出了我在高速公路上,是的,我找回了高速公路名称。

是"Brooklyn-Queens Expressway"。 但是,Brooklyn-Queens Expressway 实际上是 I-278 州际公路的名称,我以后必须使用的所有功能都需要以这种格式获取公路名称 I-nnn

我说的是地图照片

那么,当 streetType 被识别为州际公路时,有没有办法以 I-nnn 格式获取 streetName? 或者有没有我们可以参考的 Open Streetmap 数据库?我在 OSM Wiki 上找不到任何内容。

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

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

[out:json]
[timeout:25]
;
(
  way
    ["highway"="motorway"]
    ["name"="Brooklyn-Queens Expressway"]
    (40.73483602685421,-73.91463160514832,40.73785205632046,-73.9096748828888);
);
out body qt;

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

{
  "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",
  }
}

  ]
}

osm 数据库中有 2 段路。在美国,州际公路的 "ref" 标签采用 "I XXX" 形式(请参阅 http://wiki.openstreetmap.org/wiki/Interstate_Highways 并注意并置的格式)。您可以相应地检索州际公路名称。

您可以在 http://overpass-turbo.eu/s/bxi(按 运行 和返回数据的数据选项卡,然后平移在另一个 bbox 中查询的地图)。

"ref" 信息未在 SDK 中公开(将把它放在 TODO 列表中)。

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