Получить параметр от geoJson

Здравствуйте, я использую следующий код для загрузки файла geoJson из моего приложения Java-сервера. Он работает без проблем, и я могу отображать геоджсон как векторный слой в открытых слоях. Но на стороне сервера я также сохраняю некоторые параметры в файле geoJson, которые я хочу прочитать позже на стороне клиента javaScript (например, общая длина пути и общее время пути). Я не знаю, как получить к ним доступ .

Это то, что у меня есть и что работает:

            layer = new OpenLayers.Layer.Vector("Path", {
                style: style,
                strategies: [new OpenLayers.Strategy.Fixed()],
                projection: geographic,
                protocol: new OpenLayers.Protocol.HTTP({
                    url: "webresources/getJosmAspects?startLon=" + document.getElementById('startLon').value +
                            "&startLat=" + document.getElementById('startLat').value +
                            "&endLon=" + document.getElementById('endLon').value +
                            "&endLat=" + document.getElementById('endLat').value +
                            "&avgSpeed=" + document.getElementById('avgSpeed').value +
                            "&speedWeight=" + document.getElementById('speedInput').value +
                            "&comfortWeight=" + document.getElementById('comfortInput').value +
                            "&quietnessWeight=" + document.getElementById('quietInput').value +
                            "&avgSpeedWeight=" + document.getElementById('shortestInput').value,
                    format: new OpenLayers.Format.GeoJSON()
                })
            });

Я хотел бы получить некоторые параметры из ответа, не вызывая его еще раз. geojson с сервера выглядит так

    {"type":"Feature","geometry":{"type":"LineString","coordinates":[[14.420414,50.07352]......,[14.38296,50.077154],[14.382867,50.077228]]},"properties":{"total_length":3603.656606483625,"total_time":782.4648477846279,"total_elevationGain":130.9226633310318,"total_elevationDrop":-48.82620286941528}}

person Marcel    schedule 14.05.2013    source источник


Ответы (1)


На самом деле проблема заключалась в том, что я не смог прочитать характеристики слоя, потому что он еще не был полностью загружен (асинхронный вызов). Это можно решить, добавив прослушиватель событий в событие «loadend». Для этого работает:

layer.events.register("loadend", layer, function() {
                window.alert(layer.features[layer.features.length - 1].attributes.total_time);
            });

Это обсуждается здесь: by-using-pr">Как получить функции в виде векторного слоя, созданного с использованием протокола?

person Marcel    schedule 14.05.2013