From 0f0d87ffbe149d47342d2bf5d5e9ae6ce130c901 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期四, 20 十月 2022 09:44:05 +0800
Subject: [PATCH] 综合展示

---
 public/SmartEarthSDK/Workers/featurefetcherworker.js |   64 +++++++++++++++++++++++++-------
 1 files changed, 50 insertions(+), 14 deletions(-)

diff --git a/public/SmartEarthSDK/Workers/featurefetcherworker.js b/public/SmartEarthSDK/Workers/featurefetcherworker.js
index 80d8caf..58a24bd 100644
--- a/public/SmartEarthSDK/Workers/featurefetcherworker.js
+++ b/public/SmartEarthSDK/Workers/featurefetcherworker.js
@@ -1,20 +1,56 @@
-function define(f)
-{
+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 gmlParser = new JsonGMLParser(true /*extractAttributes */,
+		true  /*xy */,
+		undefined /*gmlnsm*/,
+		undefined /*wfsnsm*/,
+		undefined /*featureName*/,
+		e.data.geometryFieldName);
 	var data = e.data;
-	var json = tXml(data.text, {simplify:true});
-	var features = gmlParser.read(json);
+	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);
@@ -34,10 +70,10 @@
 	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"]
+				  "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 {

--
Gitblit v1.9.3