3

我开始使用MapBox iOS SDK

有没有可能通过坐标查询 MapView 并返回地形类型(水、土地)的方法?

我已经阅读API 文档很长一段时间了,但无法弄清楚。我知道有(临时)解决方案可用于使用 Google 网络服务,但我需要它才能离线工作。

不过,我不受 MapBox 的约束(但我喜欢它),谢谢您的任何提示!

4

3 回答 3

2

无需深入研究运行时样式(请参阅我的另一个答案,错误的线索):使用mapView.visibleFeatures(at: CGPoint, styleLayerIdentifiers: Set<String>)等效于 javascript API 的非常简单的方法是queryRenderedFeatures.

func mapView(_ mapView: MGLMapView, regionDidChangeAnimated animated: Bool)
{
    let features = mapView.visibleFeatures(at: mapView.center, styleLayerIdentifiers: ["water"])
    print(features)
}

移动时的示例输出:

[]
[]
[]
[<MGLMultiPolygonFeature: 0x170284650>]

如果为空结果:没有水,如果多边形:水。

于 2017-05-29T08:48:04.257 回答
1

这似乎是可能的:

在https://www.mapbox.com/ios-sdk/api/3.5.0/runtime-styling.html上找到

有可能根据用户的位置(公园、城市、水等)调整 UI。不幸的是我不知道怎么做!(我一发现就会更新)

地图交互性您可以自定义地图,使其根据用户正在执行的操作动态响应。在用户驾驶时增加街道的文本大小,强调根据用户偏好定制的兴趣点,或者如果用户在公园、小径、地标或河流中,则更改您的 UI。

UI GIF 演示

于 2017-05-23T21:37:38.407 回答
0

我制作了一个示例代码,可以对您有所帮助。 https://github.com/P0nj4/Coordinates-on-water-or-land

给出一个坐标,应用程序会通过谷歌检查它是陆地还是水。

于 2013-12-16T19:56:12.803 回答