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, содержащим все содержимое документа возможностей, поэтому можно получить доступ не только к именам слоев; просто вытащите то, что вам нужно. Кроме того, вероятно, лучше создавать отдельный анализатор, а не создавать новый при каждом вызове метода, но это другое упражнение;)

Другие вопросы по тегам