GWT-OpenLayers и OpenLayers.Format.WMSCapabilities
Я работаю с оболочкой Google Web Toolkit для OpenLayers. Я пытаюсь добавить слой WMS на карту, но мне нужно проанализировать документ Capabilities, чтобы получить доступные имена слоев. Я вижу, что класс WMSCapabilities доступен в OpenLayers http://dev.openlayers.org/releases/OpenLayers-2.12/doc/apidocs/files/OpenLayers/Format/WMSCapabilities-js.html, но я не могу найти реализация в GWT. Эта функция еще не доступна, или она где-то скрыта, недокументирована? Заранее спасибо!
1 ответ
Я до сих пор не знаю, доступна ли реализация GWT, но на самом деле довольно легко обернуть нативный код JavaScript в Java. Вот мое решение:
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, содержащим все содержимое документа возможностей, поэтому можно получить доступ не только к именам слоев; просто вытащите то, что вам нужно. Кроме того, вероятно, лучше создавать отдельный анализатор, а не создавать новый при каждом вызове метода, но это другое упражнение;)