这个问题是关于 IE到 Opera 12 浏览器的StackOverflow 问题的扩展。
根本问题是geoxml3处理kmz(压缩的kml)文件的问题。
二进制数据在 ZipFile.complete.js 的修改版本中使用 TypedArrays进行处理
传输二进制文件后,Opera 12 中的 Uint8Array 未正确填充,就好像数据被导入为 16 位元素一样。
请求配置如下:
this.req.responseType = 'arraybuffer';
this.req.overrideMimeType('text/plain; charset=x-user-defined');
返回的值是这样处理的:
var fileContents = binStream.req.response;
binStream.length = fileContents.byteLength;
binStream.array = new Uint8Array(fileContents);
在 Opera 12 中,前 8 个字节是这样填充的:
0x004B0050; 给出 4915280 的十进制值
但应该是:
0x4034B50; 十进制值 67324752。
这在 Firefox、Chrome 和 IE 中可以正常工作(有解决方法)。
有谁知道我如何说服 Opera 12 正确填充 Uint8Array?还是一种解决方法,以便它可以工作(某种方式将 16 位字节数组转换为 8 位字节数组,尽可能有效地丢弃不需要的高 8 位)?这是最近在 Opera 12 中实现 TypedArray/XmlHttpRequest 的已知错误吗?