【问题标题】:GWT-OpenLayers and OpenLayers.Format.WMSCapabilitiesGWT-OpenLayers 和 OpenLayers.Format.WMSCapabilities
【发布时间】:2013-05-09 18:07:48
【问题描述】:

我正在使用用于 OpenLayers 的 Google Web Toolkit 包装器。我正在尝试将 WMS 图层添加到地图中,但我需要解析 Capabilities 文档以获取可用的图层名称。我看到 OpenLayers http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html 中有一个 WMSCapabilities 类可用,但我似乎无法在 GWT 中找到实现。此功能是否尚不可用,或者它是否隐藏、未记录在某处?提前致谢!

【问题讨论】:

    标签: gwt openlayers wms gwt-openlayers


    【解决方案1】:

    我仍然不知道 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 数组,因此可以访问的不仅仅是层名称;只需拉出你需要的东西。此外,创建一个解析器可能比每次调用该方法时都创建一个新解析器更好,但这是一个不同的练习;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      相关资源
      最近更新 更多