bytev-charts
Version:
基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;
94 lines (82 loc) • 2.87 kB
JavaScript
import "core-js/modules/es.array.iterator.js";
import "core-js/modules/es.object.to-string.js";
import "core-js/modules/es.string.iterator.js";
import "core-js/modules/web.dom-collections.iterator.js";
import "core-js/modules/web.url.js";
import "core-js/modules/web.url-search-params.js";
import "core-js/modules/es.regexp.exec.js";
import "core-js/modules/es.string.split.js";
import _Object$assign from "@babel/runtime-corejs2/core-js/object/assign";
import _Object$create from "@babel/runtime-corejs2/core-js/object/create";
import { FileLoader, Group, Loader, LoadingManager } from "../../../build/three.module.js";
import { ColladaLoader } from "../loaders/ColladaLoader.js";
import { JSZip } from "../libs/jszip.module.min.js";
var KMZLoader = function KMZLoader(manager) {
Loader.call(this, manager);
};
KMZLoader.prototype = _Object$assign(_Object$create(Loader.prototype), {
constructor: KMZLoader,
load: function load(url, onLoad, onProgress, onError) {
var scope = this;
var loader = new FileLoader(scope.manager);
loader.setPath(scope.path);
loader.setResponseType('arraybuffer');
loader.setRequestHeader(scope.requestHeader);
loader.load(url, function (text) {
try {
onLoad(scope.parse(text));
} catch (e) {
if (onError) {
onError(e);
} else {
console.error(e);
}
scope.manager.itemError(url);
}
}, onProgress, onError);
},
parse: function parse(data) {
function findFile(url) {
for (var path in zip.files) {
if (path.substr(-url.length) === url) {
return zip.files[path];
}
}
}
var manager = new LoadingManager();
manager.setURLModifier(function (url) {
var image = findFile(url);
if (image) {
console.log('Loading', url);
var blob = new Blob([image.asArrayBuffer()], {
type: 'application/octet-stream'
});
return URL.createObjectURL(blob);
}
return url;
}); //
var zip = new JSZip(data);
if (zip.files['doc.kml']) {
var xml = new DOMParser().parseFromString(zip.files['doc.kml'].asText(), 'application/xml');
var model = xml.querySelector('Placemark Model Link href');
if (model) {
var loader = new ColladaLoader(manager);
return loader.parse(zip.files[model.textContent].asText());
}
} else {
console.warn('KMZLoader: Missing doc.kml file.');
for (var path in zip.files) {
var extension = path.split('.').pop().toLowerCase();
if (extension === 'dae') {
var loader = new ColladaLoader(manager);
return loader.parse(zip.files[path].asText());
}
}
}
console.error('KMZLoader: Couldn\'t find .dae file.');
return {
scene: new Group()
};
}
});
export { KMZLoader };