我正在尝试构建一个 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/