lxl
2022-10-25 e5626382db6861bc6d73b33b4cfb40df3525dd5e
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 {