關於超圖WMS服務中getCapabilities的問題

來源:互聯網
上載者:User

本人在做WMS服務彙總的時候,遇到了一個問題,整個過程是這樣的:

1.先利用ArcServer發布了一個地圖的WMS服務,

2.然後利用超圖提供的 用戶端彙總範例-WMS 這個DEMO,把ArcGIS的WMS地址輸入到地址中,

3.然後點擊下一步,在顯示圖層名字中,中文名字的圖層都出現了亂碼現象。

查看了一下相關的頁面代碼和js,最後發現了估計是超圖提供的js方法中的SuperMap.Utility.getXmlHttpRequest();有問題。

超圖提供的原始碼如下:

/** * 擷取中繼資料資訊 */function getCapabilities(){hideElement("divWMSLayerSettings");var url = document.getElementById("txtWMSAddress").value;var msg = "正在擷取中繼資料資訊";msg += url;document.getElementById("divMsg").innerHTML = msg ;showElement("divMsg");var url = document.getElementById("txtWMSAddress").value; if( url && url.trim() != "" ) { if(url.indexOf("?") != -1 ){ url += "&"; }else{ url += "?"; } url += "SERVICE=WMS&VERSION=1.1.1&REQUEST=GetCapabilities"; //擷取服務的中繼資料 var xhr = SuperMap.Utility.getXmlHttpRequest(); url = getContextPath() + "ajaxhandler?url=" + escape(url); xhr.open("GET", url, true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=gb2312"); var handler = onGetCapabilitiesComplete; var errorHandler = onGetCapabilitiesError;   xhr.onreadystatechange = function () {   if(xhr.readyState==4){if(xhr.status==200){var xmldoc;if (window.ActiveXObject) {xmldoc = new ActiveXObject("microsoft.XMLDOM");} else if (document.implementation&&document.implementation.createDocument) {xmldoc = document.implementation.createDocument("","doc",null);}xmldoc.async = false;if(window.ActiveXObject) {xmldoc.loadXML(xhr.responseText);} else {var parser = new DOMParser();               xmldoc = parser.parseFromString(xhr.responseText, "text/xml");}handler(xhr.responseText);}else{errorHandler();}}   }   xhr.send(null); }else{ alert("WMS服務地址不可為空"); onPre(); }};

 後來,我自己添加了一個getXMLHttpRequest的方法,如下

function getXMLHttpRequest(){    var xhr = false;       if(window.XMLHttpRequest){        xhr = new XMLHttpRequest();    }    if(window.ActiveXObject){        xhr = new ActiveXObject("Microsoft.XMLHTTP");    }       return xhr;}

然後把原來代碼中,第20行的:var xhr = SuperMap.Utility.getXmlHttpRequest();  改為  var xhr = getXMLHttpRequest();
發現遇到是中文名字的圖層就不會亂碼了。如果大家也遇到類似的問題,不妨像我這樣做,試試看哦!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.