1

私のmapsAppは、マップ上のマーカーにopenLayersポップアップを使用しています。ポップアップを作成するときは、リンクとCSSスピナーを事前に入力します。次に、非同期URLリクエストを起動します。

次に、スピナーを削除し、後でURLリクエストから受け取った情報を追加します。ポップアップのhtml部分(finalString)を参照する方法がわかりません。

これが私が持っているコードです。

function showPopUp (markerID,itemID) {

// **Tested** this creates a spinner and works with CSS

wxString =   "<div class=\"spinner\" style=\"width: 34px; height: 34px\"><div class=\"bar1\"></div><div class=\"bar2\"></div><div class=\"bar3\"></div><div class=\"bar4\"></div><div class=\"bar5\"></div><div class=\"bar6\"></div><div class=\"bar7\"></div><div class=\"bar8\"></div><div class=\"bar9\"></div><div class=\"bar10\"></div><div class=\"bar11\"></div><div class=\"bar12\"></div></div>";
}

var markerString =   "<a title=\""+itemID+"\" href=\"http://www.mywebsite.com/item/"+itemID+"\" target=\"_blank\">"+itemID+"</a>";
var finalString = markerString + "</br>"+ wxString;

popup = new OpenLayers.Popup.FramedCloud(icaoID,
                     markerID.lonlat,
                     new OpenLayers.Size(200, 200),
                     finalString,
                     null, true);

map.addPopup(popup);
getWX(itemID,popup);        //asynch request that will remove the popup
}

getWx関数はXMLhttpリクエストを使用します

function getWX (item) {

if (window.XMLHttpRequest) {    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else {                          // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange=function() {

    if (xmlhttp.readyState==4 && xmlhttp.status==200) {     //If finished loading

        return xmlhttp.responseText; 
    }
}

xmlhttp.open("GET","getwx.php?q=" + item,true);
xmlhttp.send();

}
4

1 に答える 1

1

最初のステップであるポップアップオブジェクトへのアクセスをお手伝いします。しかし、コンストラクターを呼び出した後、テキストを変更する方法がわかりません。

編集 ポップアップオブジェクトには、クラスsetContentHTMLに継承される関数がありますFramedCloud。)

2つのパラメーターを使用して関数を呼び出してgetWXいますが、受け入れるのは1つだけです。次のようにポップアップオブジェクトを追加することから始めます。

function getWX (item, popup)

次に、呼び出しの準備ができたら(readyState == 4)、ポップアップテキストを変更します。

if (xmlhttp.readyState==4 && xmlhttp.status==200) {     //If finished loading

    popup.setContentHTML(xmlhttp.responseText); 
}

ポップアップを作成する前にテキストを待った方が簡単かもしれません。

次に、次のようになります。

マップオブジェクトへの参照を渡します。

function getWX (item, map)

テキストの準備ができたらポップアップを作成します。

if (xmlhttp.readyState==4 && xmlhttp.status==200) {     //If finished loading
     popup = new OpenLayers.Popup.FramedCloud(icaoID,
                 markerID.lonlat,
                 new OpenLayers.Size(200, 200),
                 finalString,
                 null, true);

    map.addPopup(popup);
}
于 2012-08-23T17:03:58.680 に答える