GWT-OpenLayers and OpenLayers.Format.WMSCapabilities



我正在使用OpenLayers的Google Web Toolkit包装器。我正在尝试向映射添加一个WMS层,但是我需要解析一个Capabilities文档以获得可用的层名。我看到一个WMSCapabilities类在OpenLayers http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html中可用,但我似乎找不到GWT中的实现。这个特性是还没有可用,还是隐藏在某个地方,没有记录?提前感谢!

我仍然不知道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数组,包含功能文档的全部内容,因此可以访问的不仅仅是层名;只要拿出你需要的东西。此外,创建单个解析器可能比每次调用该方法时创建一个新的解析器要好,但这是另一种练习;)

最新更新