ios - 了解 CLLocation 代表陆地还是海洋

标签 ios mapkit mapbox geo

我正在尝试构建一个 API,以便了解 CLLocation 是否代表土地。我需要它才能离线工作,因为我希望我的大多数用户都没有连接。我将 MapBox 用作图 block 服务器,但这仍然是一个 MapKit 问题,因为我没有使用 MapBox SDK。

我尝试了几种方法来确定给定坐标是代表陆地还是海洋位置:

  • 包含大致构成世界海岸线的坐标的离线数据库。确定给定点是在轮廓内还是轮廓外仍然是一个问题。
  • png tile 资源的颜色分析(必须有更好的方法!还需要大量离线数据才能成为一种有效的方法)

此外(在处理完上述内容之后)是否有一种有效的方法来确定给定的瓦片坐标 (x,y,z) 它是否是陆地/海洋/海岸瓦片?

如果有人曾经为这个问题而苦恼,我将不胜感激。

最佳答案

别着急,看来苹果已经考虑过了!

如果您看一下 CLGeocoder 类 (CoreLocation),就会发现有一个 reverseGeocodeLocation:completionHandler: 方法。

在完成处理程序中,您可以检索 CLPlacemark 对象的数组

CLPlacemark 有两个有趣的属性:

[placemark inlandWater]

For coordinates that lie over an inland body of water, this property contains the name of that water body—the name of a lake, stream, river, or other waterway.

[placemark ocean]

coordinates that lie over an ocean, this property contains the name of the ocean.

因此,您只需对您的位置进行反向地理编码,并检查是否在生成的 CLPlacemark 对象上设置了 ocean 属性。

关于ios - 了解 CLLocation 代表陆地还是海洋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677775/

相关文章:

ios - Mapbox SDK离线 map 下载

ios - 将代码移动到 willDisplayCell 以改进 UITableview 滚动

ios - 没有m3u8扩展名的swift stream hls

swift2 - 使用 Swift 2 进行 map 聚类

ios - 简化 map

ios - 检测用户是否退出 MKCircle | map 套件

javascript - 带标记映射到 png

javascript - 如何使用mapboxgl.js向 map 添加图 block 图层

iOS画屏视频采集不流畅

ios - 当我使用委托(delegate)将值传递给另一个 ViewController 时,我发现委托(delegate)什么都不做