MapBox iOS,如何突出显示一个国家?或切换图层可见性?

MapBox iOS, how do I highlight a country? Or toggle layer visibility?

我试图在 MapBox 中突出显示特定国家/地区 iOS。

我让 mapbox 正常工作以在我的应用程序中显示我自己的样式化地图。

我已遵循以下说明: https://www.mapbox.com/help/style-single-country/ 并在 MapBox Studio 在线创建了一个正确显示突出显示国家/地区的新图层,但我无法弄清楚如何在我的应用程序代码中打开和关闭此图层,以及(希望如此)如何传递参数以便它知道哪个国家/地区为了突出。

这可能吗?或者我不是以正确的方式处理这个问题吗?

我有两个想法可能有用

  1. 通过设置 styleURL 属性 交换图层。这需要两种样式(一种基础层,一种具有基础层 + 国家/地区),因此可能并不理想。

    // Swift code example
    self.mapView.styleURL = NSURL(string: self.styleCountry)
    
  2. 遵循自定义图层的 Mapbox iOS 演示应用程序模型。不过看起来真的很难。

我查看了 Mapbox iOS demo app source code,发现他们有一些演示 Objective-C 代码可以执行自定义层。

[self.mapView insertCustomStyleLayerWithIdentifier:@"mbx-custom" ...]

从 Mapbox iOS SDK v3.3.0 开始,还不能修改样式的图层属性——这是我们称之为“运行时样式 API”的功能,它是一个长期的我们仍在努力的项目。您可以阅读有关此未来功能及其进展的更多信息 on GitHub

RobLab 建议使用两种不同的样式是今天实现此目的的一种方法,但并不总是可行,因为您需要为每个突出显示的功能使用一种样式。 CustomStyleLayer 不适用于此目的,通常不受支持。

另一种方法是使用 MGLPolygon 添加国家形状作为注释。