获取高速公路名称 - 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。
我需要获取用户当前导航的高速公路名称。 这可以在导航模式下完成,从
获取-(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。