Ios 地图盒水/陆探测

Ios 地图盒水/陆探测,ios,objective-c,map,detection,mapbox,Ios,Objective C,Map,Detection,Mapbox,我开始用这个 是否有任何可能的方法通过坐标查询地图视图并返回地形类型(水、陆地)? 我读这本书已经有一段时间了,但是我想不出来。 我知道可以使用GoogleWebService,但我需要它来离线工作 不过,我不一定要使用MapBox(但我喜欢),谢谢你的提示 我制作了一个示例代码,可以对您有所帮助。 在给出坐标后,应用程序会与谷歌确认是陆地还是水域。这似乎是可能的: 发现 有可能根据用户的位置(公园、城市、水等)调整UI。不幸的是,我不知道如何调整!(我一发现就会更新) 地图交互性您可以自定义

我开始用这个

是否有任何可能的方法通过坐标查询地图视图并返回地形类型(水、陆地)?

我读这本书已经有一段时间了,但是我想不出来。 我知道可以使用GoogleWebService,但我需要它来离线工作


不过,我不一定要使用MapBox(但我喜欢),谢谢你的提示

我制作了一个示例代码,可以对您有所帮助。


在给出坐标后,应用程序会与谷歌确认是陆地还是水域。

这似乎是可能的:

发现

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

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


无需深入研究运行时样式(参见我的另一个答案,false lead):使用
mapView的非常简单的方法。visibleFeatures(at:CGPoint,styleLayerIdentifiers:Set)
javascript API的等价物是
queryRenderedFeatures

func mapView(_ mapView: MGLMapView, regionDidChangeAnimated animated: Bool)
{
    let features = mapView.visibleFeatures(at: mapView.center, styleLayerIdentifiers: ["water"])
    print(features)
}
移动时的输出示例:

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

If empty result:no water,If polygon:water。

感谢您的输入,但此机制的一个必要功能是脱机使用,因为它将用于帆船上,因为帆船上没有足够快的internet连接,无法针对Web服务实现路由算法。我实际上是用OSM数据实现的。它工作起来很容易,在内存中,而且速度非常快。在我上面的回答中看到我的链接。也看到同样的
visibleFeatures
意味着只获取可见结果的结果,对吗?如果我想在一定距离内获取可能不可见的特征,该怎么办?