1

我正在尝试学习如何使用 Openlayers 和 SOS(传感器观察服务)服务。我在互联网上找到了几个例子,我研究了算法,但是由于我对 Openlayers 库不是很熟悉,而且我是 Javascript 的初学者,所以我有一些基本的问题。

我研究的例子是这样的:http: //ows.terrestris.de/examples/ol-sos-layer.html

在此示例中,他们向服务发出请求,如下所示(部分代码):

      OpenLayers.SOSClient = OpenLayers.Class({
               url: null,
               map: null,
               capsformat: new OpenLayers.Format.SOSCapabilities(),
               obsformat: new OpenLayers.Format.SOSGetObservation(),
               initialize: function (options) {
                  OpenLayers.Util.extend(this, options);
                  var params = {'service': 'SOS', 'request': 'GetCapabilities'};
                  var paramString = OpenLayers.Util.getParameterString(params);
                  url = OpenLayers.Util.urlAppend(this.url, paramString);
                  **OpenLayers.Request.GET({url: url,
                  success: this.parseSOSCaps, scope: this});**
                  } ...

成功时执行 parseSOSCaps 函数。此函数解析 XML 响应:

            parseSOSCaps: function(response) {
                 // cache capabilities for future use
                 this.SOSCapabilities = this.capsformat.read(response.responseXML || response.responseText);
                this.layer = new OpenLayers.Layer.Vector("Stations", {
                     strategies: [new OpenLayers.Strategy.Fixed()],
                      protocol: new OpenLayers.Protocol.SOS({
                       formatOptions: {internalProjection: map.getProjectionObject()},
                       url: this.url,
                       fois: this.getFois()
                    })

最后是 init() 函数,该函数在页面加载时执行。那里声明了我发送请求的服务的 url:

        function init(){
                 map = new OpenLayers.Map( 'map' );
                 var baseLayer = new OpenLayers.Layer.WMS("Test Layer", "http://labs.metacarta.com/wms/vmap0?", {
                 layers: "basic"}, {singleTile: true});


                 **var sos = new OpenLayers.SOSClient({map: map, url: 'http://cawa.gfz-potsdam.de:8080/SOS/sos'});**
               }

我的问题是,如何打印/显示请求的 XML 响应?有没有办法可以记录。写响应?甚至警告它?我知道我在问什么听起来很简单,但是当我尝试理解 Openlayers 库和 SOS 服务的概念时,我有点迷失了。谢谢。迪米特里斯

4

1 回答 1

1

我发现变量 response 是一个对象。我可以在parseSOSCaps()函数内部使用:

parseSOSCaps: function(response) {
    alert(response.toSource());
    ....
}

以查看 SOS 服务的响应。

于 2013-09-03T12:12:08.357 回答