0

我似乎在重新初始化 Leaflet 地图对象时遇到了一些麻烦。我正在运行一个 init() 函数,该函数首先初始化地图,添加一个切片图层和多边形图层,然后添加根据 ST_Intersects 查询为多边形着色的子图层。问题是此函数与由单击事件引起的 AJAX 调用相关联,但不会根据发送到地图的新参数更新数据。我不认为我解释得很好,所以这是我的一些代码:

success: function(data) {

                init(data);
}



function init(data){
  // initiate leaflet map
  alert("start");
  var map = L.map('cartodb-map').setView([40.750028, -73.926768], 11);
  alert("map made");

//create sublayers, etc
}

发生的情况是,第一次运行 init 时,'start' 和 'map made' 警报都起作用,并且地图是根据数据制作的。任何对 init 的进一步调用都只会通过“开始”和“制作地图”发出警报,因此我认为问题在于重新初始化传单地图。我应该怎么做才能解决这个问题?

4

1 回答 1

1

在没有看到更多代码的情况下不确定问题,但您可以尝试调用 map.remove(); 第二次。所以:

if (map) {
  map.remove();
  // add in new map initialization here
} else {
  var map = ...
}
于 2013-09-30T04:33:12.950 回答