MapBox水域/陆地检测

3
我开始使用MapBox iOS SDK
有没有可能通过坐标查询MapView,并将地形类型(水域,陆地)作为结果返回?
我已经阅读了API文档很长时间,但是无法弄清楚。 我知道可以使用Google webservice的(临时)解决方案,但我需要离线工作。
我不一定要使用MapBox(但我喜欢它),感谢任何提示!
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>]

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


请参考Android的相同内容。 - François Legras
visibleFeatures 的意思是只获取可见结果,对吗?如果我想要获得一定距离内的特征,这些特征可能是不可见的,该怎么办? - Bagusflyer

1

看起来似乎是可能的:

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

有可能根据用户位置(公园、城市、水域等)调整UI。不幸的是,我不知道如何实现!(一旦我弄清楚了,就会更新)

地图互动性 您可以自定义地图,以便根据用户的操作动态响应。 当用户驾车时增加街道文本大小,强调 根据用户偏好的兴趣点,或者如果用户在公园、小径、地标或河流处更改您的UI。

UI GIF演示


0

谢谢您的输入,但该机制的一个必要功能是离线使用,因为它将在一艘帆船上使用,没有足够快的互联网连接来对抗网络服务的路由算法。我实际上使用OSM数据实现了它。它在内存中运行起来非常容易且超快速。请查看我上面回答中的链接。 - thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接