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