如何更新Mapbox中的图层

时间:2019-10-24 02:51:05

标签: mapbox mapbox-gl-js

我对mapbox有疑问-图层上的更新功能。

首先,我有一个初始的GeoJSON,它们可以显示在地图上 enter image description here

我们可以在控制台上看到变量“ user”,并在地图上看到两个点。

现在,我从本地数据库中查询数据,后端将GEOJSON传输到前端,变量“ user”已更新,正如我们从控制台中看到的那样。

enter image description here

因此,现在应该更新图层, 我编写了一个click函数,当我单击旧层(点)时,将显示新数据(点)。

map.on('load', function(){

        map.addSource('wifiData',{
            'type': "geojson",
            'data': {
                    "type": "FeatureCollection",
                    "features": user,
                }
        });

        map.addLayer({
            'id': 'test',
            'type': 'circle',
            'source' : 'wifiData',
            'paint':{
                'circle-color': '#00b7bf',
                'circle-radius': [
                    '/',['get','total'],50
                ],
                'circle-stroke-width': 1,
                'circle-stroke-color': '#333',
                'circle-opacity': 0.3,
            }
        });

map.on('click','test',function () {
                map.getSource('wifiData').setData(user);
            })

        });

但是控制台显示“错误{{message:“输入数据不是有效的GeoJSON对象。”“ 您能告诉我如何根据新数据更新地图上的图层吗?

1 个答案:

答案 0 :(得分:2)

那不是有效的GeoJSON。如果您有多个功能,则需要将它们包装在一个功能集中