首页 > 解决方案 > 如何从 mapbox 矢量平铺源中了解图层类型

问题描述

给定一个 Mapbox 瓦片源和一个图层名称,我怎么知道这个图层的类型是(点、线、多边形)?

在将图层添加到地图之前,我想提前知道要素类型(使用map.addLayer

if (layer-type 'point'){
    // for point only
    map.addLayer({
        type: circle
    }
} else {
    // for both lineString and polygon
    map.addLayer({
        type: line
    }
}

标签: gismapbox

解决方案


我想办法解决这个问题。

参考 https://docs.mapbox.com/mapbox-gl-js/example/multiple-geometries/

从一个 GeoJSON 源添加多个几何图形,

关键是:

您为点、线、多边形添加所有 3 层,每层具有 3 个不同的 layer-id,您仅对该类型使用过滤器

        map.addLayer(
                "type": fill
                "filter": ["==", "$type", "Polygon"]
                 )

         map.addLayer(
                "type": line
                "filter": ["==", "$type", "LingString"]
                 )

         map.addLayer(
                "type": Circle, // or symbol
                "filter": ["==", "$type", "Point"]
                 )

我有一个完整的代码: https ://github.com/hoogw/arcgis_viewer/blob/master/public/javascripts/pbf/mapbox_common_share.js


推荐阅读