swift 如何使用MapBox iOS SDK显示邮政编码

wfveoks0  于 2023-08-02  发布在  Swift
关注(0)|答案(1)|浏览(139)

我的目标是显示邮政编码或邮政编码使用Mapbox的iOS软件开发工具包为美国唯一的邮政编码;
我目前能够显示邮政编码和国际邮政编码的边界,例如“USP 227518”,而实际上我想显示“27518”
我试过使用mapboxMap.queryRenderedFeatures(),并能够成功地显示修改后的字符串值,但这并没有解决我的问题,因为我需要显示前缀为'USP 2'的长邮政编码,以便它找到功能并显示没有前缀的Map注解。这会造成视觉上的重叠
我还尝试了'mapboxMap.querySourceFeatures()',但无法从任何源检索任何数据
下面是我用来显示MapBox给出的邮政编码的代码

try mapboxMapView.mapboxMap.style.updateLayer(withId: MapConstants.symbolLayerIdentifier, type: SymbolLayer.self) { layer in

    layer.textField = .expression(Expression(.number) {
        Exp(.get) { "id" }
        zipCodes // Array of strings all with 'USP2' prefix
        Exp(.get) { "id" } 
        ""                  
    })
}

字符串
是否有某种方法可以删除前缀或从源points_postal_2查询源特性以获得邮政编码点?
我也不知道Exp(.get) { "id" }来自哪里。我最好的猜测是它来自这里https://docs.mapbox.com/data/boundaries/reference/feature-lookup-tables/。即使我从zipCodes字符串数组值中删除了'USP 2'前缀,该文档中的unit_code也不能代替“id”
如何在Map上显示邮政编码?

7nbnzgx9

7nbnzgx91#

没有文档的MapBox iOS SDK是一个棘手的库。
Slice是我所需要的,以及如何使用它,很好的问题,它没有文档,也没有任何例子似乎存在!
https://docs.mapbox.com/ios/maps/api/10.14.0/Structs/Expression/Operator.html#/s:10MapboxMaps10ExpressionV8OperatorO5sliceyA2EmF

try mapView.mapboxMap.style.updateLayer(withId: MyMapLayerName, type: SymbolLayer.self) { layer in
     layer.textField = .expression(Expression(.match) {
          Exp(.get) { "id" }
          myZipCodeStringArray
          Exp(.slice) { // Drop first 4 characters, the prefix
               Exp(.get) { "id" }
               4
          }
          "" //not available
     })

字符串

相关问题