2015-09-18 93 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