2015-09-18 68 views
4

我需要获取用户当前正在导航的公路名称。 可以在导航模式下完成,得到它从获取公路名称 - Skobbler

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

所以,当我在昨天的测试我的应用程序,我是在高速公路上,是的,Skobbler也承认,我是其中一个,是的,我找回了高速公路名称。

这是“布鲁克林 - 皇后高速公路”。 不过,布鲁克林 - 皇后区的高速公路实际上是I-278号州际公路的名字,而我后来将不得不使用的功能,需要在我-NNN

这里说的格式获得公路名称是地图我的意思

enter image description here

所以照片,有没有办法让我-NNN格式streetName,当streetType被认为是州际公路? 或者是否有我们可以咨询的任何开放街道地图数据库?我无法在OSM Wiki上找到任何东西。

回答

3

不知道Skobbler SDK,但如果在线查询可用,并且您有大致的地理区域和高速公路的名称,则可以使用立交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; 

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

{ 
    "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数据库中的两段路。在美国,州际公路的“ref”标签的格式为“I XXX”(请参见http://wiki.openstreetmap.org/wiki/Interstate_Highways并注意共存位置的格式)。您可以相应地检索州际名称。

您可以在http://overpass-turbo.eu/s/bxi(针对返回的数据按RUN和DATA选项卡,并在另一个bbox中平移查询地图)在立交桥turbo(服务的用户界面)上尝试上述查询。

1

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

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