传单错误:clearLayers不是函数

时间:2017-03-22 09:49:21

标签: javascript reactjs leaflet

我正在使用带有React的Leaflet离线地图,我在世界上每个国家/地区手动加载countries.js GeoJSON文件。然后,我根据从this.props.data收到的数据有条件地为每个国家/地区着色,该数据最初有效。

然而,问题来自于新this.props.data进入时更新颜色。

我试过在这两个组件中管理它:

componentWillReceiveProps(nextProps) {
    if(this.props.data) {
        let map = this.map;
        console.log(map); // It shows the leaflet object!
        console.log(nextProps.data); // It's logged
        console.log(this.props.data); // Also logged
        if (nextProps.data !== this.props.data) {
            map.clearLayers(); // Error comes here?
            console.log("New data doesn't match old!"); // This logs correctly
        }
    }
},

componentDidUpdate(prevProps, prevState) {
    if(this.props.data){
        let map = this.map;
        if (prevProps.data !== this.props.data) {
            L.geoJson(this.countries, { // from import
            }).addTo(map);
         }
    }
},

我做错了什么?满足条件,如果旧数据与新数据不匹配,则地图应使用clearLayers();清除所有图层。如果无法找到地图,我可以理解这个错误;但是我使用this.map访问它,所以它似乎不是一个范围问题。

1 个答案:

答案 0 :(得分:4)

clearLayers()a method of L.LayerGroup不是 L.Map的方法。

存储您在运行L.GeoJson时创建的L.geoJson(...)实例,并对其在地图中添加/删除的时间进行更精细的控制。