我开始使用MapBox iOS SDK。
有没有可能通过坐标查询 MapView 并返回地形类型(水、土地)的方法?
我已经阅读API 文档很长一段时间了,但无法弄清楚。我知道有(临时)解决方案可用于使用 Google 网络服务,但我需要它才能离线工作。
不过,我不受 MapBox 的约束(但我喜欢它),谢谢您的任何提示!
我开始使用MapBox iOS SDK。
有没有可能通过坐标查询 MapView 并返回地形类型(水、土地)的方法?
我已经阅读API 文档很长一段时间了,但无法弄清楚。我知道有(临时)解决方案可用于使用 Google 网络服务,但我需要它才能离线工作。
不过,我不受 MapBox 的约束(但我喜欢它),谢谢您的任何提示!
无需深入研究运行时样式(请参阅我的另一个答案,错误的线索):使用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>]
如果为空结果:没有水,如果多边形:水。
这似乎是可能的:
在https://www.mapbox.com/ios-sdk/api/3.5.0/runtime-styling.html上找到
有可能根据用户的位置(公园、城市、水等)调整 UI。不幸的是我不知道怎么做!(我一发现就会更新)
地图交互性您可以自定义地图,使其根据用户正在执行的操作动态响应。在用户驾驶时增加街道的文本大小,强调根据用户偏好定制的兴趣点,或者如果用户在公园、小径、地标或河流中,则更改您的 UI。
我制作了一个示例代码,可以对您有所帮助。 https://github.com/P0nj4/Coordinates-on-water-or-land
给出一个坐标,应用程序会通过谷歌检查它是陆地还是水。