2013-05-14 6 views
1

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

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

  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}} 

ответ

0

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

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

Он обсуждается здесь: How to get the features in the kind of vector layer which is created by using protocol?

Смежные вопросы