GWT-OpenLayers和OpenLayers.Format.WMSCapabilities

时间:2013-05-09 18:07:49

标签: gwt openlayers wms gwt-openlayers

我正在使用适用于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中找到实现。这个功能尚未提供,还是隐藏在某个地方?提前谢谢!

1 个答案:

答案 0 :(得分: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数组,因此可以访问的不仅仅是图层名称;简单地拉出你需要的东西。此外,创建单个解析器可能更好,而不是每次调用方法时创建一个新解析器,但这是一个不同的练习;)