2013-05-09 86 views
0

我正在使用OpenLayers的Google Web Toolkit包裝器。我正在嘗試將WMS圖層添加到地圖,但我需要解析一個能力文檔以獲取可用的圖層名稱。我看到一個WMSCapabilities類在OpenLayers http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html中可用,但我似乎無法在GWT中找到實現。這個功能還沒有提供,還是隱藏着,在某個地方沒有記錄?提前致謝!GWT-OpenLayers和OpenLayers.Format.WMSCapabilities

回答

0

我仍然不知道GWT實現是否可用,但在Java中封裝原生JavaScript代碼實際上相當容易。這裏是我的解決方案:

import com.google.gwt.core.client.JsArrayString; 

native JsArrayString getLayerNames(String capDoc) /*-{ 
    var toReturn = []; 
    var parser = new $wnd.OpenLayers.Format.WMSCapabilities(); 
    var doc = parser.read(capDoc); 
    for (var i in doc.capability["layers"]) { 
     toReturn.push(doc.capability["layers"][i].name); 
    } 
    return toReturn; 
}-*/; 

然後,您可以使用訪問它們:

JsArrayString layers = getLayerNames(getMyCapabilitiesDocumentAsString()); 
for (int i = 0; i < layers.length(); i++) { 
    Window.alert("A layer name is " + layers.get(i)); 
} 

變量doc是包含功能文件的全部內容JavaScript數組,所以它可以訪問不僅僅是圖層名稱;簡單地拿出你需要的東西。另外,創建單個解析器可能會更好,而不是每次調用該方法時創建一個新解析器,但這是不同的練習;)