2016-10-26 3 views
0

私は、OSMベースマップとマーカと機能のための最新の安定版リーフレットを備えたマップ上のデータを表示するJSFページをアップグレードしています。ロード時にLeafletJSポップアップのために余分なデータを読み込む方法

マーカーごとに、マーカーの作成時に読み込まれる要素の基本情報があります。しかし、ユーザーが実際にポップアップをクリックする前にロードしたくない日数のデータを表示する必要があるデータがあります。これは、必要なデータよりもはるかに大きな負荷を作成すると予想されるためです。

必要な余分なデータを最初に読み込んでから、ユーザーがクリックするとポップアップを開くという約束をする方法はありますか?

+0

あなたのタイトルには、負荷がかかると言います。あなたのテキストの中でポップアップをクリックするとあなたは約束を話します。あなたはどのような行動をしたいですか? – YaFred

+0

データはユーザーがクリックすると読み込まれるため、クリックするとデータが受信されるまでポップアップが開かないようにする必要があります。現時点では、マーカーのクリックでリクエストが行われていますが、ポップアップがロードされ、受信したデータが無駄になります。 – Spyros

+1

私はあなたが何を意味するかを見ていると思います。しかし、これが長さ操作であることを示すためにユーザがクリックすると(砂時計など)何かが発生しなければなりません。あなたが今持っているものを示す方法はありますか? – YaFred

答えて

0

この問題に対する答えはembarassingly簡単でした...

あなたが行うことによって、マーカーの作成時に起動します。

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); 

それが適切に新しいポップアップを開くために必要だった第二約束だった、とそれは2日間私を逃した。

関連する問題