ios - 获取高速公路名称 - Skobbler

标签 ios objective-c openstreetmap skmaps

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

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

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

它是“布鲁克林-皇后区高速公路”。 但是,Brooklyn-Queens Expressway 实际上是 I-278 州际公路的名称,我以后必须使用的所有功能都需要以 I-nnn

格式获取公路名称

这是我的意思的 map 照片

enter image description here

那么,当 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;

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

{
  "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 的 overpass-turbo(该服务的用户界面)中尝试上述查询(返回数据按RUN和DATA选项卡,平移 map 在另一个bbox中查询)。

关于ios - 获取高速公路名称 - Skobbler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32653550/

相关文章:

ios - Array.append 覆盖不附加

objective-c - 在不是主运行循环的 NSRunLoop 上安排 NSStream 事件

language-agnostic - 如何从特定宽度的简单线条计算多边形点?

ios - TableCell ImageView设置带有URL的图像:SDWebImage:仅调整第一行的大小

ios - unity 和 ios - 获取用户的电话号码

ios - SWRevealViewController 打开事件

iphone - UIWebView 响应 Javascript 调用

ios - 当搜索栏具有焦点时,UISearchController 不会尊重隐藏的状态栏

openlayers - OSM : convert ties from projected coordinates in spherical mercator "EPSG:900913" to "EPSG:4326" coordinates

openstreetmap - 如何合并 osm 文件,同时保留所有节点、路径和关系信息?