如何在加载时为LeafletJS Popup动态加载额外数据

时间:2016-10-26 17:16:22

标签: javascript popup leaflet

我正在升级一个JSF页面,该页面显示了带有OSM底图的地图上的数据以及用于标记和功能的最新稳定的单张发布。

对于每个标记,我有一些基本信息,用于创建标记时加载的元素。但是,在用户实际点击弹出窗口之前,有些日子需要显示我不想加载的数据,因为我希望它可以创建比必要的更大的负载。

有没有办法使用承诺首先加载所需的额外数据,然后在用户点击它后打开弹出窗口?

1 个答案:

答案 0 :(得分:0)

这个问题的答案非常简单......

您可以通过执行以下操作开始创建标记:

function onMapClick(e){

    dataPromise = new Promise(function(resolve,reject){ /*grab your data here*/ });        

    dataPromise.then(function(result){
       popupPromise = new Promise(function(resolve,reject){
          e.target.closePopup();
          e.target.unbindPopup();
          newPopup = createPopupFromServerData(result);
          resolve(newPopup);
        });
   });

   popupPromise .then(function(result){
         e.target.bindPopup(result).openPopup();
   });
}


    marker.bindPopup("Loading element data, please wait..."); //this can include anything
    marker.on('click', onMapClick);

这是正确开放新Popup所需的第二个承诺,它让我逃脱了两天。