如何在不删除底图的情况下从叶中删除 Geojson 数据?

用户7500984

我正在尝试使用 ionic 3 创建天气预报应用程序。我需要显示各种预报,如雨、温度等,用户可以通过 fabicon 进行选择。到目前为止,当我转到页面时,从 geojson 添加的第一个数据正确显示在页面上,但是当我将晶圆厂从下雨更改为温度时,数据已绘制,但地图正在消失,如下图。我已经厌倦了 clearlayers 和 removelayer,但两者都给了我相同的结果。我需要能够在不删除地图的情况下显示新数据。以下是我的代码。

     updateFAB(fc, fab:FabContainer){
        fab.close();
        this.forecast = fc;
        console.log('forecast', this.forecast);
        console.log('forecast date', this.date);
        this.base_url = "";
        // geojsonLayer =  null;
        if(this.forecast == 'rainfall'){
            this.map.removeLayer(maingeojsonLayer);
            this.base_url = 'someurl';
        } else if (this.forecast == 'tmax'){
            this.map.removeLayer(maingeojsonLayer);
            this.base_url = 'someurl';
        } else if (this.forecast == 'tmin'){
            this.map.removeLayer(maingeojsonLayer);
            this.base_url = 'some url';
        }
        this.presentToast('Fetching new data....');
        this.updateForecast();
      }

    updateForecast(){
    geojsonLayer = new L.GeoJSON.AJAX(this.base_url,
    {
      style: function(feature){
        return {
          fillColor: feature.properties['fill'],
          fillOpacity: 0.7,
          color: feature.properties['stroke'],
          opacity: 0.7,
          weight: 0.0,
        }
      },
      onEachFeature: function(feature, layer){
        var title =  feature.properties.title;
        var fill_color = feature.properties.fill;
        var stroke_color = feature.properties.stroke;
        console.log('title', title);
        layer.on('click', (event) => {
          console.log("clicked");
          var value = feature.properties['title'] + 'mm';
          console.log("value", value);
          layer.bindPopup(value).openPopup();
        });
      }
    });
    // geojsonLayer.addTo(this.map);
    // geojsonLayer.addTo(maingeojsonLayer);     
    maingeojsonLayer.addTo(this.map);
    maingeojsonLayer.addLayer(geojsonLayer);
  }

geojson 层和 maingeojson 层是全局声明的

这是我在尝试删除层,clearlayers 后目前得到的

拉胡尔·马哈迪克

以下解决方案对我来说很好用:

var map = L.map('map', {
        layers: [googleStreets],
        .......
        .......
        zoomControl: false
    });

var forecastLayer;
updateForecast(){
forecastLayer= new L.GeoJSON.AJAX(this.base_url,
{
  style: function(feature){
    return {
      fillColor: feature.properties['fill'],
      fillOpacity: 0.7,
      color: feature.properties['stroke'],
      opacity: 0.7,
      weight: 0.0,
    }
  },
  onEachFeature: function(feature, layer){
    var title =  feature.properties.title;
    var fill_color = feature.properties.fill;
    var stroke_color = feature.properties.stroke;
    console.log('title', title);
    layer.on('click', (event) => {
      console.log("clicked");
      var value = feature.properties['title'] + 'mm';
      console.log("value", value);
      layer.bindPopup(value).openPopup();
    });
  }
});
 map.addLayer(forecastLayer);
}

对于删除任何图层:

 if (map.hasLayer(forecastLayer)) {
                map.removeLayer(forecastLayer);
}

希望这会帮助你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有日志的情况下删除SQL中的表大数据?

如何在不删除的情况下检查非阻塞匿名管道是否有数据

如何在不删除先前数据的情况下插入json文件?

如何在不删除(删除)数据库的情况下从所有表中删除所有行?

如何在不删除表单数据的情况下重置BootstrapValidator?

如何使用数据库中的数据创建LineString geoJson?

如何在保留最新数据的情况下从Spark数据框中删除重复项?

如何在不删除数据的情况下撤消ALTER TABLE ... ADD PARTITION

如何在不删除所有数据的情况下将列表转换为数据框?

如何在不删除数据库目录的情况下将数据库拖放到配置单元中?

Python:如何在不删除重复项的情况下将一个数据帧中的列值替换为另一个

如何在不删除数据和添加主键的情况下解决ORA-01758问题

如何在不删除现有数据的情况下找到ByIdAndUpdate()?

如何用猫鼬添加GeoJson数据?

如何在不删除Java中任何旧数据的情况下将新信息添加到.txt文件

如何在不删除先前数据的情况下将新数据附加到.csv文件中

在不删除旧数据的情况下更新Plist数据

如何在不删除先前数据的情况下重新索引到现有索引

滚动时如何在不删除数组中先前数据的情况下添加更多数据?

如何在不删除弹性搜索数据的情况下删除索引的默认映射

如何在不丢失数据的情况下从VG中删除PV?

如何在不删除C#中的当前数据的情况下从富文本框中编辑数据

如何在不删除左侧单元格中的数据的情况下将列向左移动?

在不删除旧数据的情况下向 FTP 服务器中的文件添加内容?

如何在不删除所有数据的情况下在php中写入文本文件

如何在不删除现有数据的情况下渲染 pug 视图?

如何在不删除表数据的情况下 INSERT INTO #TEMPTABLE

在不删除先前数据的情况下更新 reducer 对象中的单个值

Pandas 如何在不删除唯一值的情况下映射两个数据框?