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