管道基础大数据平台系统开发-【前端】-新系統界面
编辑 | blame | 历史 | 原始文档
function define(f) {
	JsonGMLParser = f();
}
importScripts('txml.js');
importScripts('JsonGMLParser.js');

self.addEventListener('message', function (e) {
	var gmlParser = new JsonGMLParser(true /*extractAttributes */,
		true  /*xy */,
		undefined /*gmlnsm*/,
		undefined /*wfsnsm*/,
		undefined /*featureName*/,
		e.data.geometryFieldName);
	var data = e.data;
	var json, features;
	if (data.format === 'JSON') {
		json = JSON.parse(data.text);
		features = json.features;
		features.forEach(feature => {
			feature.positions = [];
			feature.geometry.coordinates.forEach(coordinate => {
				if (Array.isArray(coordinate)) {
					let positions = [];
					coordinate.forEach(item => {
						if (Array.isArray(item[0])) {
							let pArr = [];
							item.forEach(p => {
								pArr.push(p[0], p[1], p[2])
							})
							positions.push(pArr);
						} else {
							positions.push(item[0], item[1], item[2])
						}
					});
					feature.positions.push(positions);
				}else{
					feature.positions.push(coordinate)
				}
			})
			feature.attributes = feature.properties;
			feature.fid = feature.id;
			feature.geometryType = feature.geometry.type.toLocaleLowerCase();
			feature.bounds = undefined;
			delete feature.geometry;
			delete feature.id;
			delete feature.properties;
			delete feature.geometry_name;
			delete feature.type;
		})
	} else {
		json = tXml(data.text, { simplify: true });
		features = gmlParser.read(json);
	}
	delete data.text;
	data.features = features;
	postMessage(data);
	/*
	load('data.json', function(xhr) {	
		var result = xhr.responseText;
		var features = gmlParser.read(data.document);
		postMessage({id: data.id, features: features});
	});
	*/
});
/*
//simple XHR request in pure JavaScript
function load(url, callback) {
	var xhr;

	if(typeof XMLHttpRequest !== 'undefined') xhr = new XMLHttpRequest();
	else {
		var versions = ["MSXML2.XmlHttp.5.0", 
				  "MSXML2.XmlHttp.4.0",
				  "MSXML2.XmlHttp.3.0", 
				  "MSXML2.XmlHttp.2.0",
				  "Microsoft.XmlHttp"]

		for(var i = 0, len = versions.length; i < len; i++) {
		try {
			xhr = new ActiveXObject(versions[i]);
			break;
		}
			catch(e){}
		} // end for
	}
		
	xhr.onreadystatechange = ensureReadiness;
		
	function ensureReadiness() {
		if(xhr.readyState < 4) {
			return;
		}
			
		if(xhr.status !== 200) {
			return;
		}

		// all is well	
		if(xhr.readyState === 4) {
			callback(xhr);
		}			
	}
		
	xhr.open('GET', url, true);
	xhr.send('');
}
*/