需要使用新数据重新绘制地图(与CartoDB.js结合使用)

Need to redraw a map with new data (in conjunction with CartoDB.js)

本文关键字:地图 CartoDB js 绘制 结合 新数据 数据 新绘制      更新时间:2023-09-26

我似乎在重新初始化传单地图对象时遇到了一些问题。我正在运行一个 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 时,"开始"和"地图制作"警报都有效,并且地图是根据数据制作的。任何进一步调用 init 只是使用"开始"和"地图制作"发出警报永远不会发出警报,所以我相信问题在于重新初始化传单地图。我应该怎么做才能解决这个问题?

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

if (map) {
  map.remove();
  // add in new map initialization here
} else {
  var map = ...
}