我正在与装载机合作,要求WMS(Web Mapping Service)请求图像。一切都很好,很花花公子,带有有效的请求。

当向WMS提出不良请求时,通常返回标准异常文档(XML)。但是,当提出不良请求时,装载机不会发射任何事件(特别是完整或IOERROR事件)。

有人对我如何捕获任何可能返回的图像的东西有任何建议吗?

override protected function loadMapImage(loader:Loader):void
{
// update parameter values
_params = new URLVariables();
_params.request = "GetMap";
_params.format = "image/png";
_params.version = "1.1.1";
_params.layers = this.layers;
_params.styles = "";
_params.transparent = "TRUE";
_params.bbox = map.extent.xmin + "," + map.extent.ymin + "," + map.extent.xmax + "," + map.extent.ymax;
_params.srs = "EPSG:" + map.spatialReference.wkid;
_params.width = map.width;
_params.height = map.height;

_urlRequest = new URLRequest(this.url);
_urlRequest.data = _params;

configureListeners(loader.contentLoaderInfo);

loader.load(_urlRequest);
}

private function configureListeners(dispatcher:IEventDispatcher):void 
{
//dispatcher.addEventListener(Event.INIT, initHandler);
//dispatcher.addEventListener(Event.UNLOAD, unloadHandler);
dispatcher.addEventListener(Event.COMPLETE, completeHandler);
//dispatcher.addEventListener(Event.OPEN, openHandler);
//dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler);
//dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
//dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
//dispatcher.addEventListener(Event.ACTIVATE, activateHandler);
//dispatcher.addEventListener(Event.DEACTIVATE, deactivateHandler);
}

private function ioErrorHandler(event:IOErrorEvent):void
{
trace('ioErrorHandler event');
}

private function completeHandler(event:Event):void 
{
trace('completeHandler event');
} 
有帮助吗?

解决方案

您可以看到的一种可能性是将加载程序转换为Urlloader,以使您更加灵活地看到实际要求/接收的数据。

display.loader类有一些奇怪的怪癖,如果某些事件试图加载没有适当的入门类的对象(通常是从display.sprite派生的类),则根本不允许某些事件发射。

我认为Urlloader将是有益的,因为您可以将Urlloaderdataformat设置为二进制。这将捕获返回的所有内容并将其存储在bytearray对象中,如果它是有效的映像,则可以通过loader.loadbytes()加载到display.loader中,或者简单地转换urlloaderdata.tostring()以检索xml信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top