0

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 での実装。この機能はまだ利用できませんか、それともどこかに文書化されていない非表示になっていますか? 前もって感謝します!

4

1 に答える 1

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 配列であるため、レイヤー名以外にもアクセスできます。必要なものを引き出すだけです。また、メソッドが呼び出されるたびに新しいパーサーを作成するよりも、単一のパーサーを作成する方がおそらく良いでしょうが、それは別の演習です ;)

于 2013-05-22T19:55:52.953 に答える