123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648 |
- (function(a){function b(b){function e(a){if(a._containertype)return a._containertype;var b=g.findIndex(function(b){return!!b.find(function(b){return a instanceof b})});if(b!=-1)return b=f[b],a._containertype=b}if(c)return c(b);var f=Object.keys(a.Visuals),g=f.map(function(b){return Object.keys(a.Visuals[b]).map(function(c){return a.Visuals[b][c]})});c=e;return e(b)}if(!a)throw Error("\u8bf7\u5148\u5f15\u5165GeoGlobe\u6846\u67b6\uff01");var c=null;mapboxgl.FreeCRSMap.prototype._visualsContainers=[];
- mapboxgl.FreeCRSMap.prototype.addVisualLayer=function(c){var e=b(c);if(!e)throw"\u975e\u53ef\u89c6\u5316\u56fe\u5c42\uff01";this._visualsContainers[e]||(this._visualsContainers[e]=new a.Visuals[e],this._visualsContainers[e].addTo(this));c.addTo(this._visualsContainers[e]);this._visualsContainers[e].render()};mapboxgl.FreeCRSMap.prototype.removeVisualLayer=function(a){typeof a==="string"&&Object.values(this._visualsContainers).forEach(function(b){b.removeLayer(a)})}})(GeoGlobe||window.GeoGlobe);
- GeoGlobe.ElementContainer=GeoGlobe.Class4OL({id:null,map:null,initialize:function(a){this.id=GeoGlobe.Util.createUniqueID(this.CLASS_NAME+"_");GeoGlobe.Util.extend(this,a)},addTo:function(a){this.map=a;var b=a.getCanvasContainer();if(!a.eleContainer)b=GeoGlobe.DOM.create("div","geoglobe-element-container",b),b.style.width=a.getCanvas().style.width,b.style.height=a.getCanvas().style.height,b.style.position="absolute",a.eleContainer=b;this.container=GeoGlobe.DOM.create("div",null,a.eleContainer);this.container.style.width=
- a.getCanvas().style.width;this.container.style.height=a.getCanvas().style.height;this.container.style.position="absolute";this._resize=GeoGlobe.Function.bind(this._resize,this);a.on("resize",this._resize)},_resize:function(){var a=this.map;a.eleContainer.style.width=a.getCanvas().style.width;a.eleContainer.style.height=a.getCanvas().style.height;this.container.style.width=a.getCanvas().style.width;this.container.style.height=a.getCanvas().style.height},getElMap:function(){return this.elmap},remove:function(){this.map.off("resize",
- this._resize)},CLASS_NAME:"GeoGlobe.ElementContainer"});
- GeoGlobe.MaptalksEle=GeoGlobe.Class4OL(GeoGlobe.ElementContainer,{map:null,container:null,elmap:null,elmapOptions:null,initialize:function(){GeoGlobe.ElementContainer.prototype.initialize.apply(this,arguments)},addTo:function(){GeoGlobe.ElementContainer.prototype.addTo.apply(this,arguments);this.container.id=this.id;this.container.className="geoglobe-maptalks-container";if(window.maptalks&&window.maptalks.Map){GeoGlobe.MaptalksEle.overrideMapTalksFunc();var a=this.map.getCenter(),a=GeoGlobe.Util.extend({zoom:this.map.getZoom()+
- 1,center:[a.lng,a.lat]},this.elmapOptions);this.elmap=new maptalks.Map(this.container.id,a);this._bindEvent()}else console.log("\u4f7f\u7528\u524d\u7f6emaptalks\u5bb9\u5668\uff0c\u9700\u5f15\u5165maptalks\u5730\u56fe\u5e93\u3002")},_bindEvent:function(){var a=this.map;this._movestart=GeoGlobe.Function.bind(function(){if(this._zooming)this._zooming=!1,this._iszoomend=!0},this);this._move=GeoGlobe.Function.bind(function(){if(!(this._zooming==!0||this._rotating==!0))this.elmap._moving=!0,this.syncElmapCenter()},
- this);this._moveend=GeoGlobe.Function.bind(function(a){this.elmap._moving=!1;this._rotating=this._zooming=this.elmap._dragRotating=!1;var c=this.map.getZoom();if(!this.map.isIntScrollZoom&&this._latelyZoom&&this._latelyZoom!=c)this._latelyZoom=c=this._latelyZoom<c?Math.ceil(c):Math.floor(c),this.map.setZoom(c);if(this._iszoomend){this._iszoomend=!1;var c=this.map.getZoom()+1,d=a.target.scrollZoom._pos?a.target.scrollZoom._pos:a.point;if(!d)d=a.target.scrollZoom._aroundPoint,a=new maptalks.Point(d.x,
- d.y),this.elmap._zoomTo(c,a),this.elmap._zooming=!1,this.elmap._getRenderer().onZoomEnd(),this.elmap._fireEvent("zoomend",{from:this.elmap._startZoomVal,to:c}),this.syncElmapCenter()}else c=this.map.getCenter(),this.elmap.setCenter([c.lng,c.lat])},this);this._rotatestart=GeoGlobe.Function.bind(function(){this._rotating=!0;this.elmap._dragRotating=!0},this);this._rotate=GeoGlobe.Function.bind(function(){this.syncElmapRotate()},this);this._zoomstart=GeoGlobe.Function.bind(function(a){this._zooming=
- !0;this._latelyZoom=this.map.getZoom();this.elmap._moving=!1;var c=this.map.getZoom()+1,d=a.target.scrollZoom._pos?a.target.scrollZoom._pos:a.point;if(!d&&a.originalEvent)d=GeoGlobe.DOM.mousePos(a.target.scrollZoom._el,a.originalEvent),a=new maptalks.Point(d.x,d.y),this.origin_lnglat=this.map.unproject(d),this.elmap.onZoomStart(c,a)},this);this._zoom=GeoGlobe.Function.bind(function(a){var c=this.map.getCenter(),d=this.map.getZoom()+1;if(this.elmap._zoomLevel!==d){var e=a.target.scrollZoom._pos?a.target.scrollZoom._pos:
- a.point;if(!e&&a.originalEvent)e=(e=a.target.scrollZoom._aroundPoint)?e:GeoGlobe.DOM.mousePos(a.target.scrollZoom._el,a.originalEvent);else return;a=this.map.project(this.origin_lnglat);if(e.x!==Math.round(a.x)||e.y!==Math.round(a.y))this.elmap._zooming=!1;e=new maptalks.Point(e.x,e.y);this.elmap.onZooming(d,e)}d=this.elmap.getCenter();(c.lng-d.x>2||c.lng-d.x<-2)&&this.syncElmapCenter()},this);this._zoomend=GeoGlobe.Function.bind(function(){this._zooming=!1;this._iszoomend=!0},this);a.on("movestart",
- this._movestart);a.on("move",this._move);a.on("moveend",this._moveend);a.on("rotatestart",this._rotatestart);a.on("rotate",this._rotate);a.on("zoomstart",this._zoomstart);a.on("zoom",this._zoom);a.on("zoomend",this._zoomend)},_resize:function(){GeoGlobe.ElementContainer.prototype._resize.apply(this,arguments);this.elmap.checkSize()},syncElmapCenter:function(){var a=this.map.getCenter(),a=[a.lng,a.lat];if(!a)return!1;a=new maptalks.Coordinate(a);this.elmap._setPrjCenter(this.elmap.getProjection().project(a))},
- syncElmapRotate:function(){var a=this.map;this.elmap&&(a.getBearing(),a.getPitch(),this.elmap.setView({bearing:a.getBearing(),pitch:a.getPitch()}))},_syncElmap:function(){var a=this.map;if(this.elmap){var b=a.getCenter();a.getZoom();a.getBearing();a.getPitch();this.elmap.setView({center:[b.lng,b.lat],zoom:a.getZoom()+1,bearing:a.getBearing(),pitch:a.getPitch()})}},remove:function(){GeoGlobe.ElementContainer.prototype.remove.apply(this,arguments);var a=this.map;a.off("movestart",this._movestart);a.off("move",
- this._move);a.off("moveend",this._moveend);a.off("rotatestart",this._rotatestart);a.off("rotate",this._rotate);a.off("zoomstart",this._zoomstart);a.off("zoom",this._zoom);a.off("zoomend",this._zoomend);this.container.parentNode.removeChild(this.container);this.container=null;this.elmap.remove();this.map=this.elmap=null},CLASS_NAME:"GeoGlobe.MaptalksEle"});
- GeoGlobe.MaptalksEle.overrideMapTalksFunc=function(){if(window.maptalks&&window.maptalks.Map)maptalks.Map.prototype.addHandler=function(a,b){if(a==="draggable"||a==="touchZoom"||a==="boxZoom"||a==="doubleClickZoom"||a==="scrollWheelZoom")return this;if(!b)return this;if(!this._handlers)this._handlers=[];if(this[a])return this[a].enable(),this;var c=this[a]=new b(this);this._handlers.push(c);this.options[a]&&c.enable();return this}};
- GeoGlobe.Visuals=GeoGlobe.Class4OL(GeoGlobe.ElementContainer,{initialize:function(){GeoGlobe.ElementContainer.prototype.initialize.apply(this,arguments)},addTo:function(a){a._visuals=a._visuals||[];a._visuals.push(this);GeoGlobe.ElementContainer.prototype.addTo.apply(this,arguments)},remove:function(){var a=this.map;a._visuals.splice(a._visuals.indexOf(this),1);a.eleContainer.removeChild(this.container);GeoGlobe.ElementContainer.prototype.remove.apply(this,arguments)}});
- GeoGlobe.Visuals=GeoGlobe.Class4OL(GeoGlobe.Visuals,mapboxgl.Evented);
- GeoGlobe.Visuals.Three=GeoGlobe.Class4OL(GeoGlobe.Visuals,{type:"three",map:null,container:null,layers:[],_threebox:null,_raycaster:null,_raycAsix:null,initialize:function(){GeoGlobe.Visuals.prototype.initialize.apply(this,arguments);this.layers=[];!window.THREE||!window.Threebox?console.error("\u4f7f\u7528three\u53ef\u89c6\u5316\u56fe\u5c42\u524d\uff0c\u9700\u5f15\u5165threejs\u5e93\uff01"):(this._raycaster=new THREE.Raycaster,this._raycAsix=new THREE.Vector2)},addTo:function(a,b){GeoGlobe.Visuals.prototype.addTo.apply(this,
- arguments);this.container.className="geoglobe-three-container";this._threebox=new Threebox(this.map,b?b:this.container);this._threebox.setupDefaultLights();this._bindEvent()},render:function(){if(this._order)for(var a=0;a<this._order.length;a++)for(var b=0;b<this.layers.length;b++)this.layers[b].id===this._order[a]&&this.layers[b].render();else for(b=0;b<this.layers.length;b++)this.layers[b].render();this._render()},_render:function(){this._threebox.mapContext&&this._threebox.mapContext instanceof
- WebGLRenderingContext?this.map.triggerRepaint():this._threebox.render()},addLayer:function(a){a.id?this.map.getLayer(a.id)?console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u91cd\u590d\uff01"):this.layers.push(a):console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u4e3a\u7a7a\uff01")},removeLayer:function(a){for(var b=[],c=0;c<this.layers.length;c++)a===this.layers[c].id?this._removeInnerLayer(this.layers[c]):b.push(this.layers[c]);this.layers=b;this._render()},moveLayer:function(a,b){this._order=
- this.layers.map(function(a){return a.id});this._order.splice(this._order.indexOf(a),1);this._order.splice(b?this._order.indexOf(b):this._order.length,0,a);this.render()},_removeInnerLayer:function(a){if(a._meshes&&a._meshes instanceof Array&&a._meshes.length>0)for(var b=0;b<a._meshes.length;b++){for(var c=0;c<this._threebox.world.children.length;c++)if(this._threebox.world.children[c].children.length!==0&&this._threebox.world.children[c].children[0].uuid===a._meshes[b].uuid){this._threebox.world.remove(a._meshes[b].parent);
- break}for(c=0;c<this._threebox.world2.children.length;c++)if(this._threebox.world2.children[c].children.length!==0&&this._threebox.world2.children[c].children[0].uuid===a._meshes[b].uuid){this._threebox.world2.remove(a._meshes[b].parent);break}}},getLayer:function(a){for(var b=0;b<this.layers.length;b++)if(a===this.layers[b].id)return this.layers[b]},unprojectFromWorld:function(a){var b=new THREE.Matrix4;b.getInverse(this._threebox.world.matrixWorld);return this._threebox.unprojectFromWorld(a.applyMatrix4(b))},
- _bindEvent:function(){var a=this;this.map.on("click",function(b){a._onClick(b)});this.map.on("mousemove",function(b){a._onMouseMove(b)})},_unbindEvent:function(){for(var a=0;a<this.map._listeners.click.length;a++)this.map._listeners.click[a].name&&this.map._listeners.click[a].name==="THREE_CLICK_EVENT"&&this.map._listeners.click.splice(a,1);for(a=0;a<this.map._listeners.mousemove.length;a++)this.map._listeners.mousemove[a].name&&this.map._listeners.mousemove[a].name==="THREE_MOUSEMOVE_EVENT"&&this.map._listeners.mousemove.splice(a,
- 1)},_onMouseMove:function(a){var b=this._computerIntersect(a);b.length>0&&this.fire("overlayerhover",{param:{info:this._getSymbolObject(b[0].object),pickedInfos:b,event:a}})},_onClick:function(a){var b=this._computerIntersect(a);b.length>0&&this.fire("overlayerclick",{param:{info:this._getSymbolObject(b[0].object),pickedInfos:b,event:a}})},_computerIntersect:function(a){this._raycAsix.x=(a.originalEvent.pageX-this.container.offsetLeft)/this.container.offsetWidth*2-1;this._raycAsix.y=-((a.originalEvent.pageY-
- this.container.offsetTop)/this.container.offsetHeight)*2+1;this._raycaster.setFromCamera(this._raycAsix,this._threebox.camera);return this._raycaster.intersectObjects(this._threebox.scene.children,!0)},_getSymbolObject:function(a){if(!a||!a.userData)return a;return a.userData.attributes?a:this._getSymbolObject(a.parent)},remove:function(){if(this.container){for(;this.layers.length;)this.removeLayer(this.layers[this.layers.length-1].id);GeoGlobe.Visuals.prototype.remove.apply(this);for(var a in this._listeners)this._listeners.hasOwnProperty(a)&&
- (this.off(a,this._listeners[a]),delete this._listeners[a]);this._unbindEvent();this.container=this.map=null;this.layers=[];this._order=[];this._raycAsix=this._raycaster=this._threebox=null}}});
- GeoGlobe.Visuals.Three.Base=GeoGlobe.Class({id:null,_three:null,_meshes:null,initialize:function(a){this.id=a.id||"three"+GeoGlobe.Util.randomStr(6);this._meshes=[]},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){throw"\u8bf7\u5b9e\u73b0\u8be5\u65b9\u6cd5";}});
- GeoGlobe.Visuals.Three.ModelLayer=GeoGlobe.Class4OL(GeoGlobe.Visuals.Three.Base,{url:null,coordinate:null,scale:1,ratation:null,initialize:function(a){GeoGlobe.Visuals.Three.Base.prototype.initialize.apply(this,arguments);GeoGlobe.Util.extend(this,GeoGlobe.Util.pick(a,["url","coordinate","scale","ratation"]))},render:function(){var a=this,b=this._three._threebox;this.url&&this.coordinate?(new THREE.GLTFLoader).load(this.url,function(c){c=c.scene.clone();console.log(c);if(a.ratation)for(var d in a.ratation){var e=
- a.ratation[d],e=e/360*2*Math.PI;c.rotation[d]=e}a._meshes=[b.addAtCoordinate(c,a.coordinate,{scaleToLatitude:!0,preScale:a.scale})];b.render();d={exposure:1,bloomStrength:1.5,bloomThreshold:0,bloomRadius:0};c=new THREE.RenderPass(c,b.camera);e=new THREE.UnrealBloomPass(new THREE.Vector2(window.innerWidth,window.innerHeight),1.5,0.4,0.85);e.threshold=d.bloomThreshold;e.strength=d.bloomStrength;e.radius=d.bloomRadius;composer=new THREE.EffectComposer(b.renderer);composer.addPass(c);composer.addPass(e);
- composer.render()}):console.error("modelLayer: \u52a0\u8f7d\u6a21\u578b\u9519\u8bef\uff01")}});
- GeoGlobe.Visuals.Three.PointLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,data:[],getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getTexture:function(a){return a.properties.texture?a.properties.texture:""},getPoint:function(a){return a.geometry.type==="Point"?a.geometry.coordinates:null},getSize:function(a){return a.properties.size?a.properties.size:1},_three:null,_meshes:[],_textureCache:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==
- void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.data=a.data?a.data:this.data;this.getColor=a.getColor?a.getColor:this.getColor;this.getTexture=a.getTexture?a.getTexture:this.getTexture;this.getPoint=a.getPoint?a.getPoint:this.getPoint;this.getSize=a.getSize?a.getSize:this.getSize},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){var a=this;a._three._removeInnerLayer(a);a._meshes=[];for(var b=
- 0;b<a.data.length;b++){var c=a.data[b],d=null;if(d=a.getTexture(c)){var e=a._getTextureCacheByURL(d);e?(e=e.clone(),e.needsUpdate=!0):(e=(new THREE.TextureLoader).load(d,function(){a._three._render()}),a._addTextureInToCache({key:d,value:e}));d=new THREE.MeshPhongMaterial({map:e,transparent:!0,opacity:a.opacity})}else d=new THREE.MeshPhongMaterial({color:new THREE.Color(a.getColor(c)),transparent:!0,opacity:a.opacity});e=a.getSize(c);e=new THREE.CircleBufferGeometry(Threebox.ThreeboxConstants.PROJECTION_WORLD_SIZE*
- e/2,20);d=new THREE.Mesh(e,d);e=a._three._threebox.projectToWorld(a.data[b].geometry.coordinates);d.position.set(e.x,e.y,e.z);d.visible=a.visible;d.name=(a.id?a.id:"threelayer")+"-"+b;d.userData.attributes={OriginalData:c,Layer:a};a._three._threebox.addGeoreferencedMesh(d);a._meshes.push(d);a._three._render()}},_getTextureCacheByURL:function(a){if(a)for(var b=0;b<this._textureCache.length;b++)if(this._textureCache[b].key===a&&this._textureCache[b].value.image)return this._textureCache[b].value;return null},
- _addTextureInToCache:function(a){for(var b=!1,c=0;c<this._textureCache.length;c++)if(this._textureCache[c].key===a.key){b=!0;break}b||this._textureCache.push(a)}});
- GeoGlobe.Visuals.Three.LineLayer=GeoGlobe.Class4OL({id:"1",visible:!0,data:[],getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getTexture:function(a){return a.properties.texture?a.properties.texture:""},getLineString:function(a){return a.geometry.type==="LineString"?a.geometry.coordinates:null},getWidth:function(a){return a.properties.width?a.properties.width:1},_three:null,_meshes:[],_textureCache:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=
- a.visible!==void 0?a.visible:this.visible;this.data=a.data?a.data:this.data;this.getColor=a.getColor?a.getColor:this.getColor;this.getTexture=a.getTexture?a.getTexture:this.getTexture;this.getLineString=a.getLineString?a.getLineString:this.getLineString;this.getWidth=a.getWidth?a.getWidth:this.getWidth},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){this._three._removeInnerLayer(this);this._meshes=[];for(var a=0;a<
- this.data.length;a++){for(var b=this.data[a],c=new THREE.LineMaterial({color:new THREE.Color(this.getColor(b)),linewidth:5.0E-4*this.getWidth(b)}),d=[],e=this.data[a].geometry.coordinates,f=0;f<e.length;f++){var g=this._three._threebox.projectToWorld(e[f]);d.push(g.x,g.y,g.z)}e=new THREE.LineGeometry;e.setPositions(d);c=new THREE.Line2(e,c);c.computeLineDistances();c.visible=this.visible;c.name=(this.id?this.id:"threelayer")+"-"+a;c.userData.attributes={OriginalData:b,Layer:this};this._three._threebox.addGeoreferencedMesh(c);
- this._meshes.push(c);this._three._render()}}});
- GeoGlobe.Visuals.Three.PolygonLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,data:[],getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getTexture:function(a){return a.properties.texture?a.properties.texture:""},getPolygon:function(a){return a.geometry.type==="Polygon"?a.geometry.coordinates:null},_three:null,_meshes:[],_textureCache:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==void 0?a.visible:this.visible;this.opacity=a.opacity?
- a.opacity:this.opacity;this.data=a.data?a.data:this.data;this.getColor=a.getColor?a.getColor:this.getColor;this.getTexture=a.getTexture?a.getTexture:this.getTexture;this.getPolygon=a.getPolygon?a.getPolygon:this.getPolygon},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){var a=this;a._three._removeInnerLayer(a);a._meshes=[];for(var b=0;b<a.data.length;b++){var c=a.data[b],d=null;if(d=a.getTexture(c)){var e=a._getTextureCacheByURL(d);
- e?(e=e.clone(),e.needsUpdate=!0):(e=(new THREE.TextureLoader).load(d,function(){a._three._render()}),a._addTextureInToCache({key:d,value:e}));d=new THREE.MeshPhongMaterial({map:e,transparent:!0,opacity:a.opacity})}else d=new THREE.MeshPhongMaterial({color:new THREE.Color(a.getColor(c)),transparent:!0,opacity:a.opacity});for(var e=new THREE.Shape,f=a.data[b].geometry.coordinates,g=0;g<f.length;g++){var h=a._three._threebox.projectToWorld(f[g][0]);e.moveTo(h.x,h.y);for(h=1;h<f[g].length;h++){var j=
- a._three._threebox.projectToWorld(f[g][h]);e.lineTo(j.x,j.y)}}e=new THREE.ShapeBufferGeometry(e);d=new THREE.Mesh(e,d);d.visible=a.visible;d.name=(a.id?a.id:"threelayer")+"-"+b;d.userData.attributes={OriginalData:c,Layer:a};a._three._threebox.addGeoreferencedMesh(d);a._meshes.push(d);a._three._render()}},_getTextureCacheByURL:function(a){if(a)for(var b=0;b<this._textureCache.length;b++)if(this._textureCache[b].key===a&&this._textureCache[b].value.image)return this._textureCache[b].value;return null},
- _addTextureInToCache:function(a){for(var b=!1,c=0;c<this._textureCache.length;c++)if(this._textureCache[c].key===a.key){b=!0;break}b||this._textureCache.push(a)}});
- GeoGlobe.Visuals.Three.SymbolLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,data:[],scale:1,modelURL:"",autoplay:!1,getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getPosition:function(a){if(a.geometry.type==="Point"){var b=a.geometry.coordinates;a.properties.height?b.push(a.properties.height):b.push(0);return b}else return null},getGeometry:function(a){return a},getLoader:function(){return new THREE.JSONLoader},_three:null,_meshes:[],_clock:null,_mixer:null,
- _modelCache:null,initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.data=a.data?a.data:this.data;this.scale=a.scale?a.scale:this.scale;this.modelURL=a.modelURL?a.modelURL:this.modelURL;this.autoplay=a.autoplay?a.autoplay:this.autoplay;this.getColor=a.getColor?a.getColor:this.getColor;this.getPosition=a.getPosition?a.getPosition:this.getPosition;this.getGeometry=a.getGeometry?a.getGeometry:this.getGeometry;
- this.getLoader=a.getLoader?a.getLoader:this.getLoader;this._clock=new THREE.Clock;this.timer=null},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){var a=this;a._modelCache=null;a.getLoader().load(a.modelURL,function(b){a._modelCache=b;a._draw()},function(a){console.log(a.loaded/a.total*100+"% loaded")},function(a){console.error(a)})},redraw:function(){this._modelCache?this._draw():this.render()},_draw:function(){this._three._removeInnerLayer(this);
- this._meshes=[];if(this.timer)cancelAnimationFrame(this.timer),this.timer=null;for(var a=this._modelCache,b=0;b<this.data.length;b++){if(a.scene)if(this.autoplay){symbol=a.scene;symbol=this.getGeometry(symbol,this.data[b]);var c=a.animations;if(c&&c.length){for(var d=new THREE.AnimationMixer(symbol),e=0;e<c.length;e++)d.clipAction(c[e]).play();this._mixer=d}}else symbol=a.scene.clone(),symbol=this.getGeometry(symbol,this.data[b]);else a instanceof THREE.Group?(symbol=a.clone(),symbol=this.getGeometry(symbol,
- this.data[b])):(c=this.getGeometry(a.clone(),this.data[b]),d=new THREE.MeshLambertMaterial({color:new THREE.Color(this.getColor(this.data[b])),side:THREE.DoubleSide,transparent:!0,opacity:this.opacity}),symbol=(new THREE.Mesh(c,d)).clone());symbol.visible=this.visible;symbol.name=(this.id?this.id:"threelayer")+"-"+b;symbol.userData.attributes={OriginalData:this.data[b],Layer:this};c=this.scale?this.scale:1;d=this.getPosition(this.data[b]);Array.isArray(d)&&(d.length<3&&d.push(0),this._three._threebox.addAtCoordinate(symbol,
- d,{scaleToLatitude:!0,preScale:c}));this._meshes.push(symbol)}this._three._render();this._animate()},_animate:function(){var a=this;if(a.autoplay)a._mixer&&a._mixer.update(a._clock.getDelta()),a._three._render(),a.timer=requestAnimationFrame(function(){a._animate()})}});
- GeoGlobe.Visuals.Three.BuildingLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,drawMode:{high:{minZoom:14,maxZoom:15},middle:{minZoom:16,maxZoom:17},low:{minZoom:18,maxZoom:20}},data:[],getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getFaceTexture:function(a){return a.properties.face_texture?a.properties.face_texture:""},getFaceTextureRepeat:function(a){return a.properties.face_texture_repeat?a.properties.face_texture_repeat:"10,10"},getSideTexture:function(a){return a.properties.side_texture?
- a.properties.side_texture:""},getSideTextureRepeat:function(a){return a.properties.side_texture_repeat?a.properties.side_texture_repeat:"30,30"},getPolygon:function(a){return a.geometry.type==="Polygon"?a.geometry.coordinates:null},getElevation:function(a){return a.properties.height?a.properties.height:0},getBaseElevation:function(a){return a.properties.base_height?a.properties.base_height:0},_three:null,_meshes:[],_textureCache:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==
- void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.drawMode=a.drawMode?a.drawMode:this.drawMode;this.data=a.data?a.data:this.data;this.scale=a.scale?a.scale:this.scale;this.getColor=a.getColor?a.getColor:this.getColor;this.getFaceTexture=a.getFaceTexture?a.getFaceTexture:this.getFaceTexture;this.getFaceTextureRepeat=a.getFaceTextureRepeat?a.getFaceTextureRepeat:this.getFaceTextureRepeat;this.getSideTexture=a.getSideTexture?a.getSideTexture:this.getSideTexture;this.getSideTextureRepeat=
- a.getSideTextureRepeat?a.getSideTextureRepeat:this.getSideTextureRepeat;this.getPolygon=a.getPolygon?a.getPolygon:this.getPolygon;this.getElevation=a.getElevation?a.getElevation:this.getElevation;this.getBaseElevation=a.getBaseElevation?a.getBaseElevation:this.getBaseElevation;this.wrapmode=a.wrapmode||"repeat";(!this.drawMode||!this.drawMode.high||!this.drawMode.middle||!this.drawMode.low||this.drawMode.high.maxZoom==void 0||this.drawMode.high.minZoom==void 0||this.drawMode.high.maxZoom<this.drawMode.high.minZoom)&&
- console.error("option\u4e2d\u7684drawMode\u683c\u5f0f\u4e0d\u6b63\u786e\uff01")},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){this._three._removeInnerLayer(this);this._meshes=[];switch(this._getDrawMode()){case "high":this._highDraw();break;case "middle":this._middleDraw();break;case "low":this._lowDraw();break;default:this._highDraw()}this._three._render()},_getDrawMode:function(){var a=this._three.map.getZoom();
- if(this.drawMode.high.minZoom<a&&this.drawMode.high.maxZoom>=a)return"high";if(this.drawMode.middle.minZoom<a&&this.drawMode.middle.maxZoom>=a)return"middle";if(this.drawMode.low.minZoom<a&&this.drawMode.low.maxZoom>=a)return"low";return null},_highDraw:function(){for(var a=new THREE.Geometry,b=this.data.length>0?this.getColor(this.data[0]):"rgb(255, 0, 0)",b=new THREE.MeshPhongMaterial({color:new THREE.Color(b),opacity:this.opacity,transparent:!0}),c=0;c<this.data.length;c++){var d=this._createGeometry(this.data[c]);
- a.merge(d)}a=new THREE.Mesh(a,b);a.visible=this.visible;a.name=(this.id?this.id:"threelayer")+"-merge";a.userData.attributes={OriginalData:this.data,Layer:this};this._three._threebox.addGeoreferencedMesh(a);this._meshes.push(a)},_middleDraw:function(){for(var a=0;a<this.data.length;a++){var b=this.data[a],c=this.getFaceTexture(b),d=this.getSideTexture(b),e=new THREE.MeshPhongMaterial({color:new THREE.Color(this.getColor(b)),opacity:this.opacity,transparent:!0});if(c){c=this._createTexture(c);if(this.wrapmode===
- "repeat"){c.wrapS=c.wrapT=THREE.RepeatWrapping;var f=this.getFaceTextureRepeat(b).split(",");c.repeat.set(f[0],f[1])}else c.wrapS=c.wrapT=THREE.ClampToEdgeWrapping;c=new THREE.MeshPhongMaterial({map:c,opacity:this.opacity,transparent:!0})}else c=e.clone();d?(d=this._createTexture(d),this.wrapmode==="repeat"?(d.wrapS=d.wrapT=THREE.RepeatWrapping,f=this.getFaceTextureRepeat(b).split(","),d.repeat.set(f[0],f[1])):d.wrapS=d.wrapT=THREE.ClampToEdgeWrapping,d=new THREE.MeshPhongMaterial({map:d,opacity:this.opacity,
- transparent:!0})):d=e.clone();e=this._createGeometry(b);e=this._createUvs(e);c=new THREE.Mesh(e,[c,d]);c.visible=this.visible;c.name=(this.id?this.id:"threelayer")+"-"+a;c.userData.attributes={OriginalData:b,Layer:this};this._three._threebox.addGeoreferencedMesh(c);this._meshes.push(c)}},_lowDraw:function(){for(var a=0;a<this.data.length;a++){var b=this.data[a],c=this.getFaceTexture(b),d=this.getSideTexture(b),e=new THREE.MeshPhongMaterial({color:new THREE.Color(this.getColor(b)),opacity:this.opacity,
- transparent:!0});if(c){c=this._createTexture(c);if(this.wrapmode==="repeat"){c.wrapS=c.wrapT=THREE.RepeatWrapping;var f=this.getFaceTextureRepeat(b).split(",");c.repeat.set(f[0],f[1])}else c.wrapS=c.wrapT=THREE.ClampToEdgeWrapping;c=new THREE.MeshPhongMaterial({map:c,opacity:this.opacity,transparent:!0})}else c=e.clone();d?(d=this._createTexture(d),this.wrapmode==="repeat"?(d.wrapS=d.wrapT=THREE.RepeatWrapping,f=this.getFaceTextureRepeat(b).split(","),d.repeat.set(f[0],f[1])):d.wrapS=d.wrapT=THREE.ClampToEdgeWrapping,
- d=new THREE.MeshPhongMaterial({map:d,opacity:this.opacity,transparent:!0})):d=e.clone();e=this._createGeometry(b);e=this._createUvs(e);c=new THREE.Mesh(e,[c,d]);c.visible=this.visible;c.name=(this.id?this.id:"threelayer")+"-"+a;c.userData.attributes={OriginalData:b,Layer:this};this._three._threebox.addGeoreferencedMeshToWorld2(c);this._meshes.push(c)}},_createGeometry:function(a){var b=a.geometry.coordinates[0],c=new THREE.Shape,d=this._three._threebox.projectToWorld(b[0]);c.moveTo(d.x,d.y);for(d=
- 1;d<b.length;d++){var e=this._three._threebox.projectToWorld(b[d]);c.lineTo(e.x,e.y)}b={depth:this._three._threebox.distaneToWorld(this.getElevation(a)),bevelEnabled:!1,material:0,extrudeMaterial:1};c=new THREE.ExtrudeGeometry(c,b);if((a=this.getBaseElevation(a))&&a>0)a=this._three._threebox.distaneToWorld(a),c.translate(0,0,a);return c},_createUvs:function(a){a.faceVertexUvs=[[]];for(var b=[new THREE.Vector2(1,0),new THREE.Vector2(0,0),new THREE.Vector2(0,1),new THREE.Vector2(1,1)],c=a.faces.length,
- d=0;d<c;d+=2)if(a.faces[d].normal.z==0)a.faceVertexUvs[0][d]=[b[1],b[0],b[2]],a.faceVertexUvs[0][d+1]=[b[0],b[3],b[2]];else{var e=a.vertices[a.faces[d].a],f=a.vertices[a.faces[d].b],g=a.vertices[a.faces[d].c];a.faceVertexUvs[0][d]=[new THREE.Vector2(e.x,e.y),new THREE.Vector2(f.x,f.y),new THREE.Vector2(g.x,g.y)];e=a.vertices[a.faces[d+1].a];f=a.vertices[a.faces[d+1].b];g=a.vertices[a.faces[d+1].c];a.faceVertexUvs[0][d+1]=[new THREE.Vector2(e.x,e.y),new THREE.Vector2(f.x,f.y),new THREE.Vector2(g.x,
- g.y)]}return a},_createTexture:function(a){var b=this,c=b._getTextureCacheByURL(a);c?(c=c.clone(),c.needsUpdate=!0):(c=(new THREE.TextureLoader).load(a,function(){b._three._render()}),b._addTextureInToCache({key:a,value:c}));return c},_getTextureCacheByURL:function(a){if(a)for(;0<this._textureCache.length;)return this._textureCache[0].key===a&&this._textureCache[0].value.image?this._textureCache[0].value:null;else return null},_addTextureInToCache:function(a){for(var b=!1,c=0;c<this._textureCache.length;c++)if(this._textureCache[c].key===
- a.key){b=!0;break}b||this._textureCache.push(a)}});
- GeoGlobe.Visuals.Three.VideoLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,autoplay:!0,data:[],getVideoTexture:function(a){return a.properties.video_texture?a.properties.video_texture:""},getLine:function(a){return a.geometry.type==="LineString"?a.geometry.coordinates:null},getElevation:function(a){return a.properties.height?a.properties.height:0},getBaseElevation:function(a){return a.properties.base_height?a.properties.base_height:0},_three:null,_meshes:[],_frameId:null,initialize:function(a){this.id=
- a.id?a.id:this.id;this.visible=a.visible!==void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.autoplay=a.autoplay?a.autoplay:this.autoplay;this.data=a.data?a.data:this.data;this.getVideoTexture=a.getVideoTexture?a.getVideoTexture:this.getVideoTexture;this.getLine=a.getLine?a.getLine:this.getLine;this.getElevation=a.getElevation?a.getElevation:this.getElevation;this.getBaseElevation=a.getBaseElevation?a.getBaseElevation:this.getBaseElevation},addTo:function(a){this._three=
- a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){this._three._removeInnerLayer(this);this._meshes=[];if(this._frameId)cancelAnimationFrame(this._frameId),this._frameId=null;for(var a=[new THREE.Vector2(1,0),new THREE.Vector2(0,0),new THREE.Vector2(0,1),new THREE.Vector2(1,1)],b=0;b<this.data.length;b++){var c=this.data[b],d=this.getVideoTexture(c);if(d){var e=document.createElement("video");e.setAttribute("class","geoglobe-three-video");e.setAttribute("src",
- d);e.setAttribute("autoplay","autoplay");e.setAttribute("loop","loop");e.style.display="none";document.body.appendChild(e);d=new THREE.VideoTexture(e);d.minFilter=THREE.LinearFilter;d.magFilter=THREE.LinearFilter;d.format=THREE.RGBFormat;var d=new THREE.MeshPhongMaterial({map:d,side:THREE.DoubleSide,transparent:!0,opacity:this.opacity}),f=this.getBaseElevation(c),e=this._three._threebox.distaneToWorld(f),g=this.getElevation(c),f=this._three._threebox.distaneToWorld(f+g),h=this.getLine(c),g=this._three._threebox.projectToWorld(h[0]),
- h=this._three._threebox.projectToWorld(h[1]),j=h.clone(),l=g.clone();g.z=e;h.z=e;j.z=f;l.z=f;e=[g,h,j,l];f=[new THREE.Face3(0,1,2),new THREE.Face3(0,2,3)];g=new THREE.Geometry;g.vertices=e;g.faces=f;g.computeFaceNormals();g.faceVertexUvs=[[]];g.faceVertexUvs[0][0]=[a[0],a[1],a[2]];g.faceVertexUvs[0][1]=[a[0],a[2],a[3]];g.translate(g.faces[0].normal.x*1.0E-5,g.faces[0].normal.y*1.0E-5,g.faces[0].normal.z*1.0E-5);d=new THREE.Mesh(g,d);d.visible=this.visible;d.name=(this.id?this.id:"threelayer")+"-"+
- b;d.userData.attributes={OriginalData:c,Layer:this};this._three._threebox.addGeoreferencedMeshToWorld2(d);this._meshes.push(d)}else console.warn("\u89c6\u9891\u7eb9\u7406\u4e3a\u5fc5\u8981\u5c5e\u6027\uff01")}this._three._render();this._animate()},play:function(){this.autoplay=!0;if(this._frameId)cancelAnimationFrame(this._frameId),this._frameId=null;this._animate()},stop:function(){this.autoplay=!1;window.cancelAnimationFrame(this._frameId)},_animate:function(){var a=this;if(a.autoplay)a._three._render(),
- a._frameId=window.requestAnimationFrame(function(){a._animate()})}});
- GeoGlobe.Visuals.Three.TextLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,scale:1,data:[],fontURL:"",size:100,thickness:50,curveSegments:12,getPosition:function(a){if(a.geometry.type==="Point"){var b=a.geometry.coordinates;a.properties.height?b.push(a.properties.height):b.push(0);return b}else return null},getText:function(a){return a.properties.text?a.properties.text:"\u672a\u77e5\u6587\u672c"},getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getGeometry:function(a){return a},
- _three:null,_meshes:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.scale=a.scale?a.scale:this.scale;this.size=a.size?a.size:this.size;this.thickness=a.thickness?a.thickness:this.thickness;this.curveSegments=a.curveSegments?a.curveSegments:this.curveSegments;this.data=a.data?a.data:this.data;this.fontURL=a.fontURL?a.fontURL:this.fontURL;this.getPosition=a.getPosition?a.getPosition:this.getPosition;
- this.getText=a.getText?a.getText:this.getText;this.getColor=a.getColor?a.getColor:this.getColor;this.getGeometry=a.getGeometry?a.getGeometry:this.getGeometry},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){var a=this;a.fontURL?(this._three._removeInnerLayer(this),this._meshes=[],(new THREE.FontLoader).load(a.fontURL,function(b){for(var c=0;c<a.data.length;c++){var d=a.data[c],e=a.getText(d),e=new THREE.TextGeometry(e,
- {font:b,size:a.size,height:a.thickness,curveSegments:a.curveSegments});e.computeBoundingBox();e.computeVertexNormals();e=a.getGeometry(e,d);materials=[new THREE.MeshPhongMaterial({color:new THREE.Color(a.getColor(d)),flatShading:!0,transparent:!0,opacity:a.opacity}),new THREE.MeshPhongMaterial({color:new THREE.Color(a.getColor(d)),transparent:!0,opacity:a.opacity})];textMesh=new THREE.Mesh(e,materials);var e=a.getPosition(d),f=a.scale?a.scale:1;textMesh.visible=a.visible;textMesh.name=(a.id?a.id:
- "threelayer")+"-"+c;textMesh.userData.attributes={OriginalData:d,Layer:a};a._three._threebox.addAtCoordinate(textMesh,e,{scaleToLatitude:!0,preScale:f});a._meshes.push(textMesh)}a._three._render()})):console.error("\u5b57\u4f53\u8d44\u6e90\u662f\u5fc5\u987b\u7684\u5c5e\u6027\uff01")}});
- GeoGlobe.Visuals.Three.CurveLayer=GeoGlobe.Class4OL({id:"1",visible:!0,data:[],getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getTexture:function(a){return a.properties.texture?a.properties.texture:""},getLineString:function(a){return a.geometry.type==="LineString"?a.geometry.coordinates:null},getWidth:function(a){return a.properties.width?a.properties.width:1},getCurveness:function(a){return a.properties.curveness?a.properties.curveness:0.2},_three:null,_meshes:[],
- _textureCache:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==void 0?a.visible:this.visible;this.texture=a.texture?a.texture:this.texture;this.data=a.data?a.data:this.data;this.getColor=a.getColor?a.getColor:this.getColor;this.getTexture=a.getTexture?a.getTexture:this.getTexture;this.getLineString=a.getLineString?a.getLineString:this.getLineString;this.getWidth=a.getWidth?a.getWidth:this.getWidth;this.getCurveness=a.getCurveness?a.getCurveness:this.getCurveness;this.timer=
- null},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},render:function(){var a=this;this._three._removeInnerLayer(this);this._meshes=[];if(a.timer)cancelAnimationFrame(a.timer),a.timer=null;for(var b=[],c=[],d=[],e=[],f=0;f<this.data.length;f++){var g=this.data[f],h=this.getWidth(g),j=new THREE.Color(this.getColor(g)),l=new THREE.LineMaterial({linewidth:5.0E-4*h,color:j,opacity:1,transparent:!0}),m=[],n=[],o=[],v=this.data[f].geometry.coordinates;
- if(v.length>1)var k=this._three._threebox.projectToWorld(v[0]),p=this._three._threebox.projectToWorld(v[v.length-1]),p=Math.sqrt(Math.pow(p.x-k.x,2)+Math.pow(p.y-k.y,2)+Math.pow(p.z-k.z,2));for(var u=0;u<v.length-1;u++){var m=this._three._threebox.projectToWorld(v[u]),s=this._three._threebox.projectToWorld(v[u+1]),q={x:(m.x+s.x)/2,y:(m.y+s.y)/2,z:Math.sqrt(Math.pow(s.x-m.x,2)+Math.pow(s.y-m.y,2))/2*Math.tan(Math.PI/2*this.getCurveness(g))},q=new THREE.QuadraticBezierCurve3(new THREE.Vector3(m.x,m.y,
- m.z),new THREE.Vector3(q.x,q.y,q.z),new THREE.Vector3(s.x,s.y,s.z));if(v.length>1)q.rate1=Math.sqrt(Math.pow(m.x-k.x,2)+Math.pow(m.y-k.y,2)+Math.pow(m.z-k.z,2))/p,q.rate2=Math.sqrt(Math.pow(s.x-m.x,2)+Math.pow(s.y-m.y,2)+Math.pow(s.z-m.z,2))/p;o.push(q);m=q.getPoints(50);for(s=0;s<m.length;s++)n.push(m[s].x,m[s].y,m[s].z)}v=new THREE.LineGeometry;v.setPositions(n);l=new THREE.Line2(v,l);l.computeLineDistances();l.visible=this.visible;l.name=(this.id?this.id:"threelayer")+"-"+f;l.userData.attributes=
- {OriginalData:g,Layer:this};this._three._threebox.addGeoreferencedMesh(l);this._meshes.push(l);b.push(n[0]);b.push(n[1]);b.push(n[2]);c.push(j.r,j.g,j.b);d.push(10+h*h);e.push(o)}var r=new THREE.BufferGeometry,f=new THREE.ShaderMaterial({uniforms:{texture:{value:(new THREE.TextureLoader).load(this.texture)}},vertexShader:"attribute float size;varying vec3 vColor;void main() {vColor = color;vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );gl_PointSize = size;gl_Position = projectionMatrix * mvPosition;}",
- fragmentShader:"varying vec3 vColor;uniform sampler2D texture;void main() {gl_FragColor = vec4( vColor, 1.0 );gl_FragColor = gl_FragColor * texture2D( texture, gl_PointCoord );}",blending:THREE.AdditiveBlending,depthTest:!1,transparent:!0,vertexColors:!0});r.addAttribute("position",(new THREE.Float32BufferAttribute(b,3)).setDynamic(!0));r.addAttribute("color",new THREE.Float32BufferAttribute(c,3));r.addAttribute("size",new THREE.Float32BufferAttribute(d,1));b=new THREE.Points(r,f);b.visible=this.visible;
- b.name="particles";b.userData.attributes={OriginalData:g,Layer:this};this._three._threebox.addGeoreferencedMesh(b);this._meshes.push(b);this._three._render();var t=0,x;(function B(){a.timer=requestAnimationFrame(B);t+=0.005;t>1&&(t=0);for(var b=r.attributes.position.array,c=0;c<e.length;c++){if(e[c].length===1)x=e[c][0].getPoint(t);else for(var d=0;d<e[c].length;d++)if(t>=e[c][d].rate1&&t<=e[c][d].rate1+e[c][d].rate2){x=e[c][d].getPoint((t-e[c][d].rate1)/e[c][d].rate2);break}b[c*3]=x.x;b[c*3+1]=x.y;
- b[c*3+2]=x.z}r.attributes.position.needsUpdate=!0;a._three._render()})()}});
- GeoGlobe.Visuals.Three.SingleBuildingLayer=GeoGlobe.Class4OL({id:"1",visible:!0,isCirclesVisible:!0,lightShown:!0,lightColor:"rgb(255, 255, 0)",floorColor:"white",wallColor:"yellow",movingFloorColor:"rgb(135, 135, 135)",specificFloorColor:"#00FFFF",specificWallColor:"rgb(32, 178, 170)",floorColorOpacity:0.6,wallColorOpacity:0.3,movingFloorColorOpacity:0.2,specificFloorColorOpacity:0.6,specificWallColorOpacity:0.3,isFloorLinesVisible:!0,floorLinesColor:"#627BC1",floorLinesOpacity:0.5,topLineColor:"#ffffff",
- topLineOpacity:1,isPillarVisible:!0,pillarColor:"#ffffff",pillarOpacity:0.5,originalFloorColor:"#627BC1",originalFloorOpacity:0.1,originalWallColor:"#627BC1",originalWallOpacity:0.05,isRoofVisible:!0,roofColor:"#627BC1",roofOpacity:0.8,data:{},getColor:function(a){return a.properties.color?a.properties.color:"rgb(255, 0, 0)"},getPolygon:function(a){return a.geometry.type==="Polygon"?a.geometry.coordinates:null},getElevation:function(a){if(a.properties.levels){var b=0;(typeof a.properties.levels===
- "string"?JSON.parse(a.properties.levels):a.properties.levels).forEach(function(a){b+=a});return b}else return 0},_three:null,_meshes:[],_textureCache:[],_HOVER_FLOOR:null,_CLICK_ITEM:null,_SELECT_ITEMS:null,initialize:function(a){if(window.turf){this.id=a.id?a.id:this.id;if(a.visible!==void 0)this.visible=a.visible;if(a.isCirclesVisible!==void 0)this.isCirclesVisible=a.isCirclesVisible;if(a.isFloorLinesVisible!==void 0)this.isFloorLinesVisible=a.isFloorLinesVisible;if(a.isPillarVisible!==void 0)this.isPillarVisible=
- a.isPillarVisible;if(a.lightShown!==void 0)this.lightShown=a.lightShown;if(a.isRoofVisible!==void 0)this.isRoofVisible=a.isRoofVisible;this.lightColor=a.lightColor?a.lightColor:this.lightColor;this.floorColor=a.floorColor?a.floorColor:this.floorColor;this.wallColor=a.wallColor?a.wallColor:this.wallColor;this.movingFloorColor=a.movingFloorColor?a.movingFloorColor:this.movingFloorColor;this.floorColorOpacity=a.floorColorOpacity?a.floorColorOpacity:this.floorColorOpacity;this.wallColorOpacity=a.wallColorOpacity?
- a.wallColorOpacity:this.wallColorOpacity;this.movingFloorColorOpacity=a.movingFloorColorOpacity?a.movingFloorColorOpacity:this.movingFloorColorOpacity;this.specificFloorColor=a.specificFloorColor?a.specificFloorColor:this.specificFloorColor;this.specificWallColor=a.specificWallColor?a.specificWallColor:this.specificWallColor;this.specificFloorColorOpacity=a.specificFloorColorOpacity?a.specificFloorColorOpacity:this.specificFloorColorOpacity;this.specificWallColorOpacity=a.specificWallColorOpacity?
- a.specificWallColorOpacity:this.specificWallColorOpacity;this.floorLinesColor=a.floorLinesColor?a.floorLinesColor:this.floorLinesColor;this.floorLinesOpacity=a.floorLinesOpacity?a.floorLinesOpacity:this.floorLinesOpacity;this.topLineColor=a.topLineColor?a.topLineColor:this.topLineColor;this.topLineOpacity=a.topLineOpacity?a.topLineOpacity:this.topLineOpacity;this.pillarColor=a.pillarColor?a.pillarColor:this.pillarColor;this.pillarOpacity=a.pillarOpacity?a.pillarOpacity:this.pillarOpacity;this.originalFloorColor=
- a.originalFloorColor?a.originalFloorColor:this.originalFloorColor;this.originalFloorOpacity=a.originalFloorOpacity?a.originalFloorOpacity:this.originalFloorOpacity;this.originalWallColor=a.originalWallColor?a.originalWallColor:this.originalWallColor;this.originalWallOpacity=a.originalWallOpacity?a.originalWallOpacity:this.originalWallOpacity;this.roofColor=a.roofColor?a.roofColor:this.roofColor;this.roofOpacity=a.roofOpacity?a.roofOpacity:this.roofOpacity;this.data=a.data?a.data:this.data;this.isClicked=
- !0;this.getColor=a.getColor?a.getColor:this.getColor;this.getPolygon=a.getPolygon?a.getPolygon:this.getPolygon;this.getElevation=a.getElevation?a.getElevation:this.getElevation;this.getBaseElevation=a.getBaseElevation?a.getBaseElevation:this.getBaseElevation;this.timer=null}else console.error("\u672a\u5f15\u5165turf.js\u5e93\uff01")},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},_createLineGeometry:function(a){var b=new THREE.Geometry;
- a.forEach(function(a){b.vertices.push(a)});return b},_createGeoExtrudeGeometry:function(a,b){var c=new THREE.Shape(a),c=new THREE.GeoExtrudeGeometry(c,b),d=new THREE.Geometry;d.faceVertexUvs=c.faceVertexUvs.concat();d.faces=c.faces.concat();d.vertices=c.vertices.concat();return d},_createSideGeometry:function(a,b){var c=new THREE.Shape(a),c=new THREE.GeoExtrudeGeometry(c,b),d=0;c.faces.forEach(function(a){a.normal.z!=0&&d++});c.faces.splice(0,d);var e=new THREE.Geometry;e.faceVertexUvs=c.faceVertexUvs.concat();
- e.faces=c.faces.concat();e.vertices=c.vertices.concat();return e},_createPillarMesh:function(a,b,c){var d=this,e=new THREE.Geometry;a.forEach(function(a){var g=[];a.geometry.coordinates[0].forEach(function(a){g.push(d._three._threebox.projectToWorld(a))});var a=new THREE.Shape(g),a=new THREE.GeoExtrudeGeometry(a,b),h=new THREE.Geometry;h.faceVertexUvs=a.faceVertexUvs.concat();h.faces=a.faces.concat();h.vertices=a.vertices.concat();a=new THREE.Mesh(h,c);e.merge(a.geometry,a.matrix)});return new THREE.Mesh(e,
- c)},_changeColor:function(a,b){a&&b&&(a instanceof Array||(a=[a]),b instanceof Array||(b=[b]),a.length&&b.length&&a.forEach(function(a,d){var e=b[d]||b[0];Object.keys(e).forEach(function(b){var d=e[b];switch(b){case "color":d instanceof THREE.Color||(d=new THREE.Color(d))}a.material[b]=d})}))},_reRender:function(){var a=this;this._SELECT_ITEMS&&this._SELECT_ITEMS.forEach(function(b){a._changeColor(b,[{color:a.specificFloorColor,opacity:a.specificFloorColorOpacity},{color:a.specificWallColor,opacity:a.specificWallColorOpacity}])});
- this._changeColor(this._CLICK_ITEM,[{color:this.floorColor,opacity:this.floorColorOpacity},{color:this.wallColor,opacity:this.wallColorOpacity}]);this._changeColor(this._HOVER_FLOOR,{color:this.movingFloorColor,opacity:this.movingFloorColorOpacity});this._three._render()},clear:function(){this._changeColor(this._HOVER_FLOOR,{color:this.originalFloorColor,opacity:this.originalFloorOpacity});this._HOVER_FLOOR=null;this._changeColor(this._CLICK_ITEM,[{color:this.originalFloorColor,opacity:this.originalFloorOpacity},
- {color:this.originalWallColor,opacity:this.originalWallOpacity}]);this._CLICK_ITEM=null;var a=this;this._SELECT_ITEMS&&this._SELECT_ITEMS.forEach(function(b){a._changeColor(b,[{color:a.originalFloorColor,opacity:a.originalFloorOpacity},{color:a.originalWallColor,opacity:a.originalWallOpacity}])});this._SELECT_ITEMS=null;this._reRender()},highlightFloor:function(a){this._changeColor(this._HOVER_FLOOR,{color:this.originalFloorColor,opacity:this.originalFloorOpacity});var b=this._HOVER_FLOOR=null;if(a.length>
- 0){for(var c=0;c<a.length;c++)if(a[c].object.userData.tag=="__floor__"){b=a[c].object;break}if(b)this._HOVER_FLOOR=b}this._reRender();return b},highlightFloor_Wall:function(a){this._changeColor(this._CLICK_ITEM,[{color:this.originalFloorColor,opacity:this.originalFloorOpacity},{color:this.originalWallColor,opacity:this.originalWallOpacity}]);var b=this._CLICK_ITEM=null,c=null;if(a.length>0){for(var d=0;d<a.length;d++){if(a[d].object.userData.tag=="__wall__")c=a[d].object;if(a[d].object.userData.tag==
- "__floor__"){b=a[d].object;break}}if(b&&c)this._CLICK_ITEM=[b,c]}this._reRender();return b},locateToSpecificFloor:function(a){var b=this;this._SELECT_ITEMS&&this._SELECT_ITEMS.forEach(function(a){b._changeColor(a,[{color:b.originalFloorColor,opacity:b.originalFloorOpacity},{color:b.originalWallColor,opacity:b.originalWallOpacity}])});var c=this._SELECT_ITEMS=null;if(a instanceof Array)this._SELECT_ITEMS=a=a.map(function(a){var c=b._three._threebox.world2.getObjectByName("this is "+a+" floor"),a=b._three._threebox.world2.getObjectByName("this is "+
- a+" wall");if(c)return[c,a];return null}).filter(function(a){return!!a}),c=a.map(function(a){return a[0]});else if(c=this._three._threebox.world2.getObjectByName("this is "+a+" floor"),a=this._three._threebox.world2.getObjectByName("this is "+a+" wall"),c&&a)this._SELECT_ITEMS=[[c,a]];this._reRender();return c},getSelectedFloor:function(a){var b=null;if(a.length>0)for(var c=0;c<a.length;c++)if(a[c].object.userData.tag=="__floor__"){b=a[c].object;break}return b},render:function(){function a(c,d){d>
- 1E3/60&&(z<1?(A.position.copy(B.getPointAt(z)),z+=0.01):z=0,b._three._render(),d=0);b.timer=window.requestAnimationFrame(function(b){return a(b,d+b-c)})}this.clear();var b=this;b._three._removeInnerLayer(b);b._meshes=[];if(b.timer)cancelAnimationFrame(b.timer),b.timer=null;var c=new THREE.Group;c.visible=this.visible;c.name="main part";c.userData.attributes={OriginalData:b.data,Layer:b};var d=new THREE.Group;d.visible=this.visible;d.name="extra part";d.userData.attributes={OriginalData:b.data,Layer:b};
- if(b.data.geometry){var e=turf.centroid(b.data).geometry.coordinates;if(b.isCirclesVisible){var f=new THREE.MeshBasicMaterial({color:7372944,transparent:!0,opacity:0.3});[0.01,0.015,0.02,0.025,0.03,0.035,0.04,0.045,0.05,0.055].forEach(function(a){var a=turf.circle(e,a,{steps:50,units:"kilometers",properties:{}}),d=new THREE.Geometry;a.geometry.coordinates[0].forEach(function(a){d.vertices.push(b._three._threebox.projectToWorld([a[0],a[1],-1]))});a=new THREE.Line(d,f);c.add(a)})}for(var g=b.data.geometry.coordinates[0],
- h=typeof b.data.properties.levels==="string"?JSON.parse(b.data.properties.levels):b.data.properties.levels,j=h.reduce(function(a,b){return a+b}),l=b._three._threebox.distaneToWorld(j),m={steps:10,units:"kilometers",properties:{}},n=[],o=[],v=[],k=[],p=[],u=[],s=[],q=0;q<g.length;q++){var r=[],t=b._three._threebox.projectToWorld(g[q]);o.push(t.clone());var x=t.clone();x.z=l;v.push(x.clone());r.push(t.clone());r.push(x.clone());k.push(r);p.push(t.clone());u.push(t.clone());s.push(t.clone());r=turf.circle(g[q],
- 2.0E-4,m);n.push(r)}g=b._createGeoExtrudeGeometry(s,{amount:1.0E-12,bevelEnabled:!1});m=new THREE.MeshPhongMaterial({color:new THREE.Color(this.roofColor),transparent:!0,opacity:this.roofOpacity});g.translate(0,0,l+1.0E-6);g=new THREE.Mesh(g,m);this.isRoofVisible&&c.add(g);m=new THREE.MeshPhongMaterial({color:this.topLineColor,transparent:!0,opacity:this.topLineOpacity});g=new THREE.MeshPhongMaterial({color:this.pillarColor,transparent:!0,opacity:this.pillarOpacity});o=b._createLineGeometry(o);k=
- b._createLineGeometry(v);v=o.clone();(new THREE.Line(o,m)).name="linebase";o=new THREE.Line(k,m);o.name="lineUp";c.add(o);l={pillar:{amount:l,bevelEnabled:!1},floor:{amount:1.0E-12,bevelEnabled:!1}};n=b._createPillarMesh(n,l.pillar,g);n.name="pillar";this.isPillarVisible&&c.add(n);n=new THREE.MeshPhongMaterial({color:this.floorLinesColor,transparent:!0,opacity:this.floorLinesOpacity});p=b._createGeoExtrudeGeometry(p,l.floor);for(o=l=0;o<h.length;o++)g=b._three._threebox.distaneToWorld(l),k=new THREE.MeshPhongMaterial({color:b.originalFloorColor,
- transparent:!0,opacity:b.originalFloorOpacity,specular:6454209,shininess:100}),m=new THREE.MeshPhongMaterial({color:b.originalWallColor,transparent:!0,opacity:b.originalWallOpacity,specular:16776960,shininess:100,side:THREE.DoubleSide}),s=p.clone(),s.translate(0,0,g),k=new THREE.Mesh(s,k),k.userData.attributes={OriginalData:b.data,Layer:b,level:o+1,tag:"__floor__"},k.userData.tag="__floor__",k.name="this is "+(o+1)+" floor",c.add(k),b.isFloorLinesVisible&&(k=v.clone(),k.translate(0,0,g),k=new THREE.Line(k,
- n),c.add(k)),k={amount:b._three._threebox.distaneToWorld(h[o]),bevelEnabled:!1},k=b._createSideGeometry(u,k),k.translate(0,0,g),g=new THREE.Mesh(k,m),g.userData.attributes={OriginalData:b.data,Layer:b,level:o+1,tag:"__wall__"},g.userData.tag="__wall__",g.name="this is "+(o+1)+" wall",c.add(g),l+=h[o];var h=new THREE.MeshBasicMaterial({color:16777215,transparent:!0,opacity:1}),u=new THREE.SphereBufferGeometry(0.001,32,16),A=new THREE.Mesh(u,h);A.position.copy(b._three._threebox.projectToWorld([e[0],
- e[1],0]));A.name="sphereTarget";A.scale.copy((new THREE.Vector3(1,1,1)).multiplyScalar(b._three._threebox.projectedUnitsPerMeterInScale(e[1])));b.lightShown&&d.add(A);h=new THREE.PointLight(new THREE.Color(b.lightColor),200,0);h.matrixWorldNeedsUpdate=!0;A.add(h);b._three._threebox.addGeoreferencedMeshToWorld2(c);b._meshes.push(c);b._three._threebox.addGeoreferencedMesh(d);b._meshes.push(d);var d=b._three._threebox.projectToWorld([e[0],e[1],j]),j=b._three._threebox.projectToWorld([e[0],e[1],0]),B=
- new THREE.LineCurve3(j,d),z=0;b.lightShown&&window.requestAnimationFrame(function(b){return a(b,0)})}}});
- GeoGlobe.Visuals.Three.RainLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,options:{},getTexture:function(a){return a.texture?a.texture:""},getSize:function(a){return a.size?a.size:10},_three:null,_meshes:[],_textureCache:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.getTexture=a.getTexture?a.getTexture:this.getTexture;this.getSize=a.getSize?a.getSize:this.getSize;this.options=a?a:
- this.options;this.timer=null},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},setVisible:function(a){this.visible=this.rain.visible=a},getVisible:function(){return this.visible},createRainSprites:function(a){var b=this,c=new THREE.Geometry;for(i=0;i<2E4;i++){var d=new THREE.Vector3;d.x=Math.random()*8E3-4E3;d.y=Math.random()*8E3-4E3;d.z=Math.random()*4E3;d.velocityZ=6;d.velocityX=(Math.random()-0.5)/3;c.vertices.push(d)}c.verticesNeedUpdate=
- !0;var d=b.getSize(a),e=null;(a=b.getTexture(a))?((e=b._getTextureCacheByURL(a))?(e=e.clone(),e.needsUpdate=!0):(e=(new THREE.TextureLoader).load(a,function(){b._three._render()}),b._addTextureInToCache({key:a,value:e})),e=new THREE.PointsMaterial({size:d,map:e,blending:THREE.AdditiveBlending,depthTest:!1,transparent:!0,sizeAttenuation:!0,opacity:b.opacity})):console.error("\u672a\u8bbe\u7f6e\u7eb9\u7406\u56fe\u7247\u8d44\u6e90\u8def\u5f84\uff01");return new THREE.Points(c,e)},render:function(){var a=
- this;a._three._removeInnerLayer(a);a._meshes=[];if(a.timer)cancelAnimationFrame(a.timer),a.timer=null;var b=a.options;a.rain=a.createRainSprites(b);a.rain.visible=a.visible;a.rain.name=a.id?a.id:"threelayer";a.rain.userData.attributes={OriginalData:b,Layer:a};b=a._three.map.getCenter();a._three._threebox.addAtCoordinate(a.rain,[b.lng,b.lat,0],{scaleToLatitude:!0,preScale:1});a._meshes.push(a.rain);a._three._render();(function d(){a.timer=requestAnimationFrame(d);a.rain.geometry.vertices.forEach(function(a){a.z-=
- a.velocityZ;a.x-=a.velocityX*0.5;if(a.z<0)a.z=4E3});a.rain.geometry.verticesNeedUpdate=!0;a._three._render()})();a._three.map.on("zoom",function(){if(a.getVisible())a.rain.visible=a._three.map.getZoom()<15?!1:!0});a._three.map.on("dragend",function(){if(a.rain.visible){var b=a._three.map.getCenter();a.rain.parent.position.copy(a._three._threebox.projectToWorld([b.lng,b.lat,0]))}})},_getTextureCacheByURL:function(a){if(a)for(var b=0;b<this._textureCache.length;b++)if(this._textureCache[b].key===a&&
- this._textureCache[b].value.image)return this._textureCache[b].value;return null},_addTextureInToCache:function(a){for(var b=!1,c=0;c<this._textureCache.length;c++)if(this._textureCache[c].key===a.key){b=!0;break}b||this._textureCache.push(a)}});
- GeoGlobe.Visuals.Three.SnowLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,options:{},getTexture:function(a){return a.texture?a.texture:""},getSize:function(a){return a.size?a.size:10},_three:null,_meshes:[],_textureCache:[],initialize:function(a){this.id=a.id?a.id:this.id;this.visible=a.visible!==void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.getTexture=a.getTexture?a.getTexture:this.getTexture;this.getSize=a.getSize?a.getSize:this.getSize;this.options=a?a:
- this.options;this.timer=null},addTo:function(a){this._three=a;this._three.addLayer(this)},remove:function(){this._three.removeLayer(this.id)},setVisible:function(a){this.visible=this.snow.visible=a},getVisible:function(){return this.visible},createSnowSprites:function(a){var b=this,c=new THREE.Geometry;for(i=0;i<2E4;i++){var d=new THREE.Vector3;d.x=Math.random()*8E3-4E3;d.y=Math.random()*8E3-4E3;d.z=Math.random()*4E3;d.velocityZ=2;d.velocityX=(Math.random()-0.5)/3;c.vertices.push(d)}c.verticesNeedUpdate=
- !0;var d=b.getSize(a),e=null;(a=b.getTexture(a))?((e=b._getTextureCacheByURL(a))?(e=e.clone(),e.needsUpdate=!0):(e=(new THREE.TextureLoader).load(a,function(){b._three._render()}),b._addTextureInToCache({key:a,value:e})),e=new THREE.PointsMaterial({size:d,map:e,blending:THREE.AdditiveBlending,depthTest:!1,transparent:!0,sizeAttenuation:!0,opacity:b.opacity})):console.error("\u672a\u8bbe\u7f6e\u7eb9\u7406\u56fe\u7247\u8d44\u6e90\u8def\u5f84\uff01");return new THREE.Points(c,e)},render:function(){var a=
- this;a._three._removeInnerLayer(a);a._meshes=[];if(a.timer)cancelAnimationFrame(a.timer),a.timer=null;var b=a.options;a.snow=a.createSnowSprites(b);a.snow.visible=a.visible;a.snow.name=a.id?a.id:"threelayer";a.snow.userData.attributes={OriginalData:b,Layer:a};b=a._three.map.getCenter();a._three._threebox.addAtCoordinate(a.snow,[b.lng,b.lat,0],{scaleToLatitude:!0,preScale:1});a._meshes.push(a.snow);a._three._render();(function d(){a.timer=requestAnimationFrame(d);a.snow.geometry.vertices.forEach(function(a){a.z-=
- a.velocityZ;a.x-=a.velocityX*0.5;if(a.z<0)a.z=4E3});a.snow.geometry.verticesNeedUpdate=!0;a._three._render()})();a._three.map.on("zoom",function(){if(a.getVisible())a.snow.visible=a._three.map.getZoom()<15?!1:!0});a._three.map.on("dragend",function(){if(a.snow.visible){var b=a._three.map.getCenter();a.snow.parent.position.copy(a._three._threebox.projectToWorld([b.lng,b.lat,0]))}})},_getTextureCacheByURL:function(a){if(a)for(var b=0;b<this._textureCache.length;b++)if(this._textureCache[b].key===a&&
- this._textureCache[b].value.image)return this._textureCache[b].value;return null},_addTextureInToCache:function(a){for(var b=!1,c=0;c<this._textureCache.length;c++)if(this._textureCache[c].key===a.key){b=!0;break}b||this._textureCache.push(a)}});
- GeoGlobe.Visuals.Three.BrightkiteLayer=GeoGlobe.Class4OL({id:"1",visible:!0,opacity:1,name:"\u5b9e\u65f6\u6570\u636e\u670d\u52a1",version:"1.0.0",format:"json",levelPrecision:[8,8,8],requestArgs:{},rendererOptions:{},options:{},service:"RTDS",tileSize:256,_three:null,_meshes:[],_textureCache:[],initialize:function(a){this.options=a?a:this.options;this.textureCoord=[new THREE.Vector2(1,0),new THREE.Vector2(0,0),new THREE.Vector2(0,1),new THREE.Vector2(1,1)];this.id=a.id?a.id:this.id;this.visible=a.visible!==
- void 0?a.visible:this.visible;this.opacity=a.opacity?a.opacity:this.opacity;this.name=a.name?a.name:this.name;this.service=a.service?a.service:this.service;this.tileSize=a.tileSize?a.tileSize:this.tileSize;this.version=a.version?a.version:this.version;this.format=a.format?a.format:this.format;this.levelPrecision=a.levelPrecision?a.levelPrecision:this.levelPrecision;this.requestArgs=a.requestArgs?a.requestArgs:this.requestArgs;this.rendererOptions=a.rendererOptions?a.rendererOptions:this.rendererOptions;
- this.getService=a.getService?a.getService:this.getService;this.projMatrix=new Float64Array(16);this.alignedProjMatrix=new Float64Array(16);this.pixelMatrix=new Float64Array(16);this.pixelMatrixInverse=new Float64Array(16);this._initMat4();this._initCalculator();this.mat4=new this.mat4;this.calculator=new this.calculator;"OffscreenCanvas"in window&&this._initWorker()},_initWorker:function(){var a=this,b,c="\n// debugger\n'use strict';\n\nfunction transformMat4(out, a, m){\n var x = a[0], y = a[1], z = a[2], w = a[3];\n out[0] = m[0] * x + m[4] * y + m[8] * z + m[12] * w;\n out[1] = m[1] * x + m[5] * y + m[9] * z + m[13] * w;\n out[2] = m[2] * x + m[6] * y + m[10] * z + m[14] * w;\n out[3] = m[3] * x + m[7] * y + m[11] * z + m[15] * w;\n return out;\n}\n\nfunction zoomTo(column, row, zoom, tileZoom){\n var scale = Math.pow(2, tileZoom - zoom);\n column *= scale;\n row *= scale;\n zoom = tileZoom;\n\n return {\n column: column,\n row: row,\n zoom: zoom,\n };\n}\n\nfunction lngX(lng, transform) {\n\tif(transform._mapCRS) {\n\t\tvar tileExtent = transform._mapCRS.topTileExtent;\n\t\tvar extentWidth = tileExtent[2] - tileExtent[0];\n\t\treturn (lng - tileExtent[0]) * transform.worldSize / extentWidth;\n\t}else{\n\t\treturn (180 + lng) * transform.worldSize / 360;\n\t}\n}\nfunction latY(lat, transform) {\n\tif(transform._mapCRS) {\n\t\tvar tileExtent = transform._mapCRS.topTileExtent;\n\t\tvar extentHeight = tileExtent[3] - tileExtent[1];\n\t\treturn (tileExtent[3] - lat) * transform.worldSize / extentHeight;\n\t}else{\n\t\tvar y = 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360));\n\t\treturn (180 - y) * transform.worldSize / 360;\n\t}\n}\n\nfunction locationCoordinate(lnglat, transform){\n // var column = (180 + lnglat[0]) * transform.worldSize / 360 / transform.tileSize;\n // var row = (180 - (180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lnglat[1] * Math.PI / 360)))) * transform.worldSize / 360 / transform.tileSize;\n var column = lngX(lnglat[0], transform) / transform.tileSize;\n\tvar row = latY(lnglat[1], transform) / transform.tileSize;\n var zoom = transform.zoom;\n\n return zoomTo(column, row, zoom, transform.tileZoom);\n}\n\nfunction coordinatePoint(coord, transform){\n var zoomedCoord = zoomTo(coord.column, coord.row, coord.zoom, transform.zoom);\n var p = [zoomedCoord.column * transform.tileSize, zoomedCoord.row * transform.tileSize, 0, 1];\n transformMat4(p, p, transform.pixelMatrix);\n return {\n x: p[0] / p[3],\n y: p[1] / p[3]\n };\n}\n\nfunction locationPoint(lnglat, transform){\n return coordinatePoint(locationCoordinate(lnglat, transform), transform);\n}\n\nfunction project(lnglat, transform){\n return locationPoint(lnglat, transform);\n}\n\n/**\n * \u6839\u636e\u5355\u4e2a\u74e6\u7247URL\u8bf7\u6c42\u77e2\u91cf\u6570\u636e\uff0c\u5e76\u53d1\u8d77\u56de\u8c03\n * @param {Object} requestArgs \u5355\u4e2a\u74e6\u7247\u7684\u5b9e\u65f6\u6570\u636e\u7684\u8bf7\u6c42\u53c2\u6570\n * @param {Function} callback \u8bf7\u6c42\u5b8c\u6210\u540e\u56de\u8c03\u51fd\u6570\n */\nfunction getCanvas(requestArgs, callback) {\n\tvar formData = new FormData();\n formData.append('SERVICE', 'RTDS');\n formData.append('VERSION', '".concat(a.version,
- "');\n formData.append('REQUEST', 'FeatureAggs');\n formData.append('FORMAT', '").concat(a.format,"');\n for(var arg in requestArgs){\n if(requestArgs.hasOwnProperty(arg)){\n formData.append(arg.toUpperCase(), requestArgs[arg]);\n }\n }\n\n var url = proxyHost + '").concat(a.service,"?'\n formData.forEach(function(value, arg) {\n url += arg + '=' + value + '&';\n });\n url = url.slice(0, -1);\n\n\tvar xhr = new XMLHttpRequest();\n\txhr.open('GET', encodeURI(url), true);\n xhr.responseType = 'json';\n xhr.send(null);\n\txhr.onreadystatechange = function (e) {\n\t\tif (this.status === 200 && this.readyState === 4) {\n\t\t callback(this.response);\n\t\t}\n\t};\n}\n\n/**\n * \u5c06\u8bf7\u6c42\u83b7\u5f97\u7684\u5355\u4e2a\u74e6\u7247\u77e2\u91cf\u6570\u636e\u6e32\u67d3\u6210\u6805\u683c\u56fe\u50cf\n * @param {Object} data \u8bf7\u6c42\u5355\u4e2a\u74e6\u7247\u77e2\u91cf\u6570\u636e\u8fd4\u56de\u7684\u7ed3\u679c\n * @param {Object} coordinate \u5355\u4e2a\u74e6\u7247\u884c\u5217\u53f7\n * @param {Object} transform \u5730\u56fe\u53c2\u6570\n * @param {Function} callback \u8bf7\u6c42\u5b8c\u6210\u540e\u56de\u8c03\u51fd\u6570\n*/\nfunction renderToCanvas(data, coordinate, transform, callback) {\n //\u74e6\u7247\u79bb\u5c4f\u753b\u5e03\uff08266*266\uff09\n var tileOffscreen = new OffscreenCanvas(").concat(a.tileSize,
- " + 10, ").concat(a.tileSize,' + 10);\n var tileOffscreenContext = tileOffscreen.getContext(\'2d\');\n tileOffscreenContext.globalCompositeOperation = \'lighter\';\n\n\tvar features = [];\n\tdata.forEach(function (elt, i) {\n\t\tfeatures.push({\n\t\t\t"type": "Feature",\n\t\t\t"properties": {name: i, value: elt.value},\n\t\t\t"geometry": {\n\t\t\t\t"type": "Point",\n\t\t\t\t"coordinates": [elt.location.X, elt.location.Y]\n\t\t\t}\n\t\t});\n\t});\n\n\t// \u6c42\u6781\u503c\n\tvar minValue = Number.MAX_VALUE;\n\tvar maxValue = Number.MIN_VALUE;\n\tfor (var k = 0; k < features.length; k++) {\n\t\tif (features[k].properties.value < minValue) minValue = features[k].properties.value;\n\t\tif (features[k].properties.value > maxValue) maxValue = features[k].properties.value;\n\t}\n\t//\u6807\u6ce8\u53c2\u6570\u8ba1\u7b97\n\tfor (var j = 0; j < features.length; j++) {\n\t\t//\u74e6\u7247\u4e0a\u7684\u70b9\u76f8\u5bf9\u4e8e\u753b\u5e03\u7684\u5750\u6807\n\t\tvar point = project([features[j].geometry.coordinates[0], features[j].geometry.coordinates[1]], transform);\n\t\tvar canvasCord = coordinatePoint(coordinate, transform);\n\t\tvar X = point.x - (canvasCord.x-5);\n\t\tvar Y = point.y - (canvasCord.y-5);\n\n\t\t//\u7ed8\u5236\n\t\ttileOffscreenContext.save();\n\t\ttileOffscreenContext.translate(X, Y);\n\t\ttileOffscreenContext.drawImage(spriteOffscreen, -spriteOffscreen.width / 2, -spriteOffscreen.width / 2);\n\t\ttileOffscreenContext.restore();\n\t}\n\n\tvar imgData = tileOffscreenContext.getImageData(5, 5, ').concat(a.tileSize,
- ", ").concat(a.tileSize,");\n\ttileOffscreen.width = ").concat(a.tileSize,";\n\ttileOffscreen.height = ").concat(a.tileSize,";\n\ttileOffscreenContext.putImageData(imgData, 0, 0);\n\tcallback(tileOffscreen);\n}\n\nvar proxyHost;\nvar spriteOffscreen, spriteOffscreenContext;\nself.onmessage = function(e) {\n if(!e.data.key){\n proxyHost = e.data.proxyHost;\n\n //\u5c0f\u7cbe\u7075\u79bb\u5c4f\u753b\u5e03\uff0810*10\uff09\n spriteOffscreen = new OffscreenCanvas(e.data.size, e.data.size);\n spriteOffscreenContext = spriteOffscreen.getContext('2d');\n\n //\u5c0f\u7cbe\u7075\u6807\u6ce8\u989c\u8272\u914d\u7f6e\u6682\u65f6\u53ea\u652f\u6301\u5355\u8272\n var gradient = spriteOffscreenContext.createRadialGradient(e.data.size / 2, e.data.size / 2, 0, e.data.size / 2, e.data.size / 2, e.data.size / 2);\n gradient.addColorStop(0.15, e.data.color);\n gradient.addColorStop(0.5, 'rgba' + e.data.rgbColor.slice(3).split(')')[0] + ',0.15)');\n gradient.addColorStop(1, 'rgba' + e.data.rgbColor.slice(3).split(')')[0] + ',0)');\n spriteOffscreenContext.fillStyle = gradient;\n spriteOffscreenContext.fillRect(0, 0, e.data.size, e.data.size);\n } else {\n getCanvas(e.data.requestArgs, function(response){\n renderToCanvas(response, e.data.coordinate, e.data.transform, function(canvas){\n var bitmap = canvas.transferToImageBitmap();\n postMessage({\n key: e.data.key,\n bitmap: bitmap\n }, [bitmap]);\n });\n });\n }\n};"),
- c=new Blob([c],{type:"text/javascript"});this.workerObjectURL=URL.createObjectURL(c);this.worker=new Worker(this.workerObjectURL);this.worker.onmessage=function(c){var e=document.createElement("canvas");e.width=a.tileSize;e.height=a.tileSize;e.getContext("bitmaprenderer").transferFromImageBitmap(c.data.bitmap);b=new THREE.CanvasTexture(e);a._addTextureInToCache({key:c.data.key,value:b});a._render()};this.worker.postMessage({size:this.rendererOptions.markPoint.symbolMaxSize,color:this.rendererOptions.markPoint.color,
- rgbColor:GeoGlobe.Util.getRgbColor(this.rendererOptions.markPoint.color),proxyHost:location.origin+"/"+location.pathname.split("/")[1]+"/proxy?url="});URL.revokeObjectURL(this.workerObjectURL)},addTo:function(a){this._three=a;this._three.addLayer(this);this._bindEvent()},remove:function(){this._three.removeLayer(this.id)},_bindEvent:function(){var a=this;this._three.map.on("moveend",function(){a._reDraw()})},_reDraw:function(){this.update()},reDraw:function(){this._clearTextureFromCache();this.update()},
- _unbindEvent:function(){for(var a=0;a<this._three.map._listeners.moveend.length;a++)this._three.map._listeners.moveend[a].name&&this._three.map._listeners.moveend[a].name==="BRIGHTKITE_MOVEEND_EVENT"&&this._three.map._listeners.moveend.splice(a,1)},getTileMesh:function(a,b,c){var d=this._three._threebox.projectToWorld(a[0]),e=this._three._threebox.projectToWorld(a[1]),f=this._three._threebox.projectToWorld(a[2]),a=this._three._threebox.projectToWorld(a[3]),e=[d,e,f,a],f=[new THREE.Face3(0,1,2),new THREE.Face3(0,
- 2,3)],d=new THREE.Geometry;d.vertices=e;d.faces=f;d.computeFaceNormals();d.faceVertexUvs=[[]];d.faceVertexUvs[0][0]=[c[2],c[1],c[0]];d.faceVertexUvs[0][1]=[c[2],c[0],c[3]];b=new THREE.MeshBasicMaterial({map:b,blending:THREE.AdditiveBlending,depthTest:!1,transparent:!0,opacity:this.opacity});return new THREE.Mesh(d,b)},getTileBBox:function(a,b,c){if(this._three.map._mapCRS){var c=Math.pow(2,c),b=c-b-1,d=this._three.map._mapCRS.topTileExtent[2]-this._three.map._mapCRS.topTileExtent[0],e=this._three.map._mapCRS.topTileExtent[3]-
- this._three.map._mapCRS.topTileExtent[1],f=this._three.map._mapCRS.topTileExtent[0]+d*a/c,g=this._three.map._mapCRS.topTileExtent[1]+e*b/c,d=this._three.map._mapCRS.topTileExtent[0]+d*(a+1)/c,e=this._three.map._mapCRS.topTileExtent[1]+e*(b+1)/c;return[f,g,d,e]}else return c=Math.pow(2,c),b=c-b-1,d=-2.00375083427892E7+4.00750166855784E7*(a+1)/c,e=-2.00375083427892E7+4.00750166855784E7*(b+1)/c,a=GeoGlobe.Util.transferToLonLat([-2.00375083427892E7+4.00750166855784E7*a/c,-2.00375083427892E7+4.00750166855784E7*
- b/c]),b=GeoGlobe.Util.transferToLonLat([d,e]),[a[0],a[1],b[0],b[1]]},getBiggerTileBBox:function(a,b,c,d){if(this._three.map._mapCRS)var c=Math.pow(2,c),b=c-b-1,e=this._three.map._mapCRS.topTileExtent[2]-this._three.map._mapCRS.topTileExtent[0],f=this._three.map._mapCRS.topTileExtent[3]-this._three.map._mapCRS.topTileExtent[1],g=this._three.map._mapCRS.topTileExtent[0]+e*a/c,h=this._three.map._mapCRS.topTileExtent[1]+f*b/c,e=this._three.map._mapCRS.topTileExtent[0]+e*(a+1)/c,f=this._three.map._mapCRS.topTileExtent[1]+
- f*(b+1)/c,a=[g,h],b=[e,f];else c=Math.pow(2,c),b=c-b-1,e=-2.00375083427892E7+4.00750166855784E7*(a+1)/c,f=-2.00375083427892E7+4.00750166855784E7*(b+1)/c,a=GeoGlobe.Util.transferToLonLat([-2.00375083427892E7+4.00750166855784E7*a/c,-2.00375083427892E7+4.00750166855784E7*b/c]),b=GeoGlobe.Util.transferToLonLat([e,f]);a=this.calculator.project(a,d);a.x-=5;a.y=a.y+this.tileSize+5;b=this.calculator.project(b,d);b.x=b.x+this.tileSize+5;b.y-=5;a=this.calculator.unproject(a,d);b=this.calculator.unproject(b,
- d);return[a.lng,a.lat,b.lng,b.lat]},getCanvas:function(a,b,c,d,e){var f=this;(new GeoGlobe.Service.RTDS(this.name,this.service,{version:this.version,format:this.format,coordinate:b,key:c,transform:d})).featureAggs(a,function(a,b){var c=f.renderToCanvas(this,a,b.coordinate,b.transform);e(c,b.key)},function(){})},renderToCanvas:function(a,b,c,d){console.time("renderToCanvas");if(!this.markPointCacheCanvas){a=this.rendererOptions.markPoint.symbolMaxSize;this.markPointCacheCanvas=document.createElement("canvas");
- this.markPointCacheCanvas.width=a;this.markPointCacheCanvas.height=a;var e=this.markPointCacheCanvas.getContext("2d"),f=GeoGlobe.Util.getRgbColor(this.rendererOptions.markPoint.color),g=e.createRadialGradient(a/2,a/2,0,a/2,a/2,a/2);g.addColorStop(0.15,this.rendererOptions.markPoint.color);g.addColorStop(0.5,"rgba"+f.slice(3).split(")")[0]+",0.15)");g.addColorStop(1,"rgba"+f.slice(3).split(")")[0]+",0)");e.fillStyle=g;e.fillRect(0,0,a,a)}a=document.createElement("canvas");a.width=this.tileSize+10;
- a.height=this.tileSize+10;a=a.getContext("2d");a.globalCompositeOperation="lighter";var h=[];b.forEach(function(a,b){h.push({type:"Feature",properties:{name:b,value:a.value},geometry:{type:"Point",coordinates:[a.location.X,a.location.Y]}})});b=Number.MAX_VALUE;e=Number.MIN_VALUE;for(f=0;f<h.length;f++){if(h[f].properties.value<b)b=h[f].properties.value;if(h[f].properties.value>e)e=h[f].properties.value}for(b=0;b<h.length;b++)f=this.calculator.project([h[b].geometry.coordinates[0],h[b].geometry.coordinates[1]],
- d),g=this.calculator.coordinatePoint(c,d),e=f.x-(g.x-5),f=f.y-(g.y-5),a.save(),a.translate(e,f),a.drawImage(this.markPointCacheCanvas,-this.markPointCacheCanvas.width/2,-this.markPointCacheCanvas.height/2),a.restore();c=document.createElement("canvas");c.width=this.tileSize;c.height=this.tileSize;d=c.getContext("2d");a=a.getImageData(5,5,this.tileSize,this.tileSize);d.putImageData(a,0,0);console.timeEnd("renderToCanvas");return c},createTexture:function(a){var b=document.createElement("canvas");b.height=
- 256;b.width=256;b.getContext("2d").drawImage(a,0,0);return new THREE.CanvasTexture(b)},url:function(a,b,c,d){return a.replace("{z}",String(b)).replace("{x}",String(c)).replace("{y}",String(d))},_calcMatrices:function(a){a=a.transform;if(a.height){var b=0.5/Math.tan(a.fov/2)*a.height,c=a.fov/2,d=a.x,e=a.y,f=(Math.cos(Math.PI/2)*(Math.sin(c)*b/Math.sin(Math.PI-Math.PI/2-c))+b)*1.01,c=new Float64Array(16);this.mat4.perspective(c,a.fov,a.width/a.height,1,f);this.mat4.scale(c,c,[1,-1,1]);this.mat4.translate(c,
- c,[0,0,-b]);this.mat4.rotateX(c,c,0);this.mat4.rotateZ(c,c,0);this.mat4.translate(c,c,[-d,-e,0]);b=a.worldSize/(Math.PI*12756274*Math.abs(Math.cos(a.center.lat*(Math.PI/180))));a.units==="m"&&(b=a.worldSize/(a.latRange[1]-a.latRange[0]));this.mat4.scale(c,c,[1,1,b,1]);this.projMatrix=c;var b=a.width%2/2,f=a.height%2/2,g=Math.cos(a.angle),h=Math.sin(a.angle),d=d-Math.round(d)+g*b+h*f,e=e-Math.round(e)+g*f+h*b,c=new Float64Array(c);this.mat4.translate(c,c,[d>0.5?d-1:d,e>0.5?e-1:e,0]);this.alignedProjMatrix=
- c;c=this.mat4.create();this.mat4.scale(c,c,[a.width/2,-a.height/2,1]);this.mat4.translate(c,c,[1,-1,0]);this.pixelMatrix=this.mat4.multiply(new Float64Array(16),c,this.projMatrix);c=this.mat4.invert(new Float64Array(16),this.pixelMatrix);if(!c)throw Error("failed to invert matrix");this.pixelMatrixInverse=c}},update:function(){var a=this,b=a._three.map.transform.coveringTiles({tileSize:a.tileSize,minzoom:0,maxzoom:22,roundZoom:!0});this._calcMatrices(a._three.map);var c={pixelMatrix:a.pixelMatrix,
- pixelMatrixInverse:a.pixelMatrixInverse,worldSize:a._three.map.transform.worldSize,tileSize:a._three.map.transform.tileSize,tileZoom:a._three.map.transform.tileZoom,zoom:a._three.map.transform.zoom};if(this._three.map._mapCRS)c._mapCRS=this._three.map._mapCRS;for(var d=0;d<b.length;d++){var e=a.getBiggerTileBBox(b[d].canonical.x,b[d].canonical.y,b[d].canonical.z,c),f=8;a.levelPrecision[b[d].canonical.z-1]&&(f=a.levelPrecision[b[d].canonical.z-1]);a.requestArgs.precision=f;a.requestArgs.bbox=JSON.stringify(e);
- e=b[d].toCoordinate();e.column-=1;var f=b[d].key,g=a._getTextureCacheByTileId(f);g||("OffscreenCanvas"in window?a.worker.postMessage({key:f,coordinate:e,requestArgs:a.requestArgs,transform:c}):a.getCanvas(a.requestArgs,e,f,c,function(b,c){g=new THREE.CanvasTexture(b);a._addTextureInToCache({key:c,value:g});a._render()}))}a._render()},_render:function(){this._three._removeInnerLayer(this);this._meshes=[];for(var a=this._three.map.transform.coveringTiles({tileSize:this.tileSize,minzoom:0,maxzoom:22,
- roundZoom:!0}),b=0;b<a.length;b++){var c=this.getTileBBox(a[b].canonical.x,a[b].canonical.y,a[b].canonical.z),c=[c[0],c[1],c[2],c[3]],c=[[c[0],c[3]],[c[0],c[1]],[c[2],c[1]],[c[2],c[3]]],d=this._getTextureCacheByTileId(a[b].key);if(d)c=this.getTileMesh(c,d,this.textureCoord),c.visible=this.visible,c.name=this.id?this.id:"BrightkiteLayer",c.userData.attributes={OriginalData:this.options,Layer:this},this._three._threebox.addGeoreferencedMeshToWorld2(c),this._meshes.push(c)}this._three._render()},render:function(){this.update()},
- setVisibility:function(a){a==void 0&&(a=!1);if(this.visible!==a)this.visible=a,this.visible===!0?(this._bindEvent(),this.render()):(this._unbindEvent(),this._render())},_getTextureCacheByTileId:function(a){if(a)for(var b=0;b<this._textureCache.length;b++)if(this._textureCache[b].key===a&&this._textureCache[b].value.image)return this._textureCache[b].value;return null},_addTextureInToCache:function(a){for(var b=!1,c=0;c<this._textureCache.length;c++)if(this._textureCache[c].key===a.key){b=!0;break}b||
- this._textureCache.push(a);this._textureCache.length>1E3&&this._textureCache.splice(0,this._textureCache.length-1E3)},_clearTextureFromCache:function(){this._textureCache=[]},_initCalculator:function(){this.calculator=function(){};this.calculator.prototype={project:function(a,b){return this.locationPoint(a,b)},unproject:function(a,b){return this.pointLocation(a,b)},pointLocation:function(a,b){return this.coordinateLocation(this.pointCoordinate(a,b),b)},coordinateLocation:function(a,b){var c=this.zoomTo(a.column,
- a.row,a.zoom,b.zoom),d=this.xLng(c.column*b.tileSize,b),c=this.yLat(c.row*b.tileSize,b);return{lng:d,lat:c}},xLng:function(a,b){if(b._mapCRS){var c=b._mapCRS.topTileExtent;return a*(c[2]-c[0])/b.worldSize+c[0]}else return a*360/b.worldSize-180},yLat:function(a,b){if(b._mapCRS){var c=b._mapCRS.topTileExtent;return c[3]-a*(c[3]-c[1])/b.worldSize}else return 360/Math.PI*Math.atan(Math.exp((180-a*360/b.worldSize)*Math.PI/180))-90},lngX:function(a,b){if(b._mapCRS){var c=b._mapCRS.topTileExtent;return(a-
- c[0])*b.worldSize/(c[2]-c[0])}else return(180+a)*b.worldSize/360},latY:function(a,b){if(b._mapCRS){var c=b._mapCRS.topTileExtent;return(c[3]-a)*b.worldSize/(c[3]-c[1])}else return(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+a*Math.PI/360)))*b.worldSize/360},pointCoordinate:function(a,b){var c=b.tileZoom,d=[a.x,a.y,0,1],e=[a.x,a.y,1,1];this.transformMat4(d,d,b.pixelMatrixInverse);this.transformMat4(e,e,b.pixelMatrixInverse);var f=d[3],g=e[3],h=d[1]/f,j=e[1]/g,l=d[2]/f,m=e[2]/g,l=l===m?0:(0-l)/(m-l),
- d={column:this.interp(d[0]/f,e[0]/g,l)/b.tileSize,row:this.interp(h,j,l)/b.tileSize,zoom:b.zoom};return this.zoomTo(d.column,d.row,d.zoom,c)},interp:function(a,b,c){return a*(1-c)+b*c},locationPoint:function(a,b){return this.coordinatePoint(this.locationCoordinate(a,b),b)},coordinatePoint:function(a,b){var c=this.zoomTo(a.column,a.row,a.zoom,b.zoom),c=[c.column*b.tileSize,c.row*b.tileSize,0,1];this.transformMat4(c,c,b.pixelMatrix);return{x:c[0]/c[3],y:c[1]/c[3]}},locationCoordinate:function(a,b){var c=
- this.lngX(a[0],b)/b.tileSize,d=this.latY(a[1],b)/b.tileSize;return this.zoomTo(c,d,b.zoom,b.tileZoom)},zoomTo:function(a,b,c,d){c=Math.pow(2,d-c);a*=c;b*=c;return{column:a,row:b,zoom:d}},transformMat4:function(a,b,c){var d=b[0],e=b[1],f=b[2],b=b[3];a[0]=c[0]*d+c[4]*e+c[8]*f+c[12]*b;a[1]=c[1]*d+c[5]*e+c[9]*f+c[13]*b;a[2]=c[2]*d+c[6]*e+c[10]*f+c[14]*b;a[3]=c[3]*d+c[7]*e+c[11]*f+c[15]*b;return a}}},_initMat4:function(){this.mat4=function(){};this.mat4.prototype={create:function(){var a=new Float32Array(16);
- a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},identity:function(a){a[0]=1;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=1;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=1;a[11]=0;a[12]=0;a[13]=0;a[14]=0;a[15]=1;return a},translate:function(a,b,c){var d=c[0],e=c[1],c=c[2],f,g,h,j,l,m,n,o,v,k,p,u;b===a?(a[12]=b[0]*d+b[4]*e+b[8]*c+b[12],a[13]=b[1]*d+b[5]*e+b[9]*c+b[13],a[14]=b[2]*d+b[6]*e+b[10]*c+b[14],a[15]=b[3]*d+b[7]*e+b[11]*c+b[15]):(f=b[0],
- g=b[1],h=b[2],j=b[3],l=b[4],m=b[5],n=b[6],o=b[7],v=b[8],k=b[9],p=b[10],u=b[11],a[0]=f,a[1]=g,a[2]=h,a[3]=j,a[4]=l,a[5]=m,a[6]=n,a[7]=o,a[8]=v,a[9]=k,a[10]=p,a[11]=u,a[12]=f*d+l*e+v*c+b[12],a[13]=g*d+m*e+k*c+b[13],a[14]=h*d+n*e+p*c+b[14],a[15]=j*d+o*e+u*c+b[15]);return a},scale:function(a,b,c){var d=c[0],e=c[1],c=c[2];a[0]=b[0]*d;a[1]=b[1]*d;a[2]=b[2]*d;a[3]=b[3]*d;a[4]=b[4]*e;a[5]=b[5]*e;a[6]=b[6]*e;a[7]=b[7]*e;a[8]=b[8]*c;a[9]=b[9]*c;a[10]=b[10]*c;a[11]=b[11]*c;a[12]=b[12];a[13]=b[13];a[14]=b[14];
- a[15]=b[15];return a},multiply:function(a,b,c){var d=b[0],e=b[1],f=b[2],g=b[3],h=b[4],j=b[5],l=b[6],m=b[7],n=b[8],o=b[9],v=b[10],k=b[11],p=b[12],u=b[13],s=b[14],b=b[15],q=c[0],r=c[1],t=c[2],x=c[3];a[0]=q*d+r*h+t*n+x*p;a[1]=q*e+r*j+t*o+x*u;a[2]=q*f+r*l+t*v+x*s;a[3]=q*g+r*m+t*k+x*b;q=c[4];r=c[5];t=c[6];x=c[7];a[4]=q*d+r*h+t*n+x*p;a[5]=q*e+r*j+t*o+x*u;a[6]=q*f+r*l+t*v+x*s;a[7]=q*g+r*m+t*k+x*b;q=c[8];r=c[9];t=c[10];x=c[11];a[8]=q*d+r*h+t*n+x*p;a[9]=q*e+r*j+t*o+x*u;a[10]=q*f+r*l+t*v+x*s;a[11]=q*g+r*m+
- t*k+x*b;q=c[12];r=c[13];t=c[14];x=c[15];a[12]=q*d+r*h+t*n+x*p;a[13]=q*e+r*j+t*o+x*u;a[14]=q*f+r*l+t*v+x*s;a[15]=q*g+r*m+t*k+x*b;return a},perspective:function(a,b,c,d,e){var b=1/Math.tan(b/2),f=1/(d-e);a[0]=b/c;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=b;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=(e+d)*f;a[11]=-1;a[12]=0;a[13]=0;a[14]=2*e*d*f;a[15]=0;return a},rotateX:function(a,b,c){var d=Math.sin(c),c=Math.cos(c),e=b[4],f=b[5],g=b[6],h=b[7],j=b[8],l=b[9],m=b[10],n=b[11];b!==a&&(a[0]=b[0],a[1]=b[1],a[2]=b[2],a[3]=
- b[3],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]);a[4]=e*c+j*d;a[5]=f*c+l*d;a[6]=g*c+m*d;a[7]=h*c+n*d;a[8]=j*c-e*d;a[9]=l*c-f*d;a[10]=m*c-g*d;a[11]=n*c-h*d;return a},rotateZ:function(a,b,c){var d=Math.sin(c),c=Math.cos(c),e=b[0],f=b[1],g=b[2],h=b[3],j=b[4],l=b[5],m=b[6],n=b[7];b!==a&&(a[8]=b[8],a[9]=b[9],a[10]=b[10],a[11]=b[11],a[12]=b[12],a[13]=b[13],a[14]=b[14],a[15]=b[15]);a[0]=e*c+j*d;a[1]=f*c+l*d;a[2]=g*c+m*d;a[3]=h*c+n*d;a[4]=j*c-e*d;a[5]=l*c-f*d;a[6]=m*c-g*d;a[7]=n*c-h*d;return a},invert:function(a,
- b){var c=b[0],d=b[1],e=b[2],f=b[3],g=b[4],h=b[5],j=b[6],l=b[7],m=b[8],n=b[9],o=b[10],v=b[11],k=b[12],p=b[13],u=b[14],s=b[15],q=c*h-d*g,r=c*j-e*g,t=c*l-f*g,x=d*j-e*h,A=d*l-f*h,B=e*l-f*j,z=m*p-n*k,y=m*u-o*k,w=m*s-v*k,D=n*u-o*p,E=n*s-v*p,F=o*s-v*u,C=q*F-r*E+t*D+x*w-A*y+B*z;if(!C)return null;C=1/C;a[0]=(h*F-j*E+l*D)*C;a[1]=(e*E-d*F-f*D)*C;a[2]=(p*B-u*A+s*x)*C;a[3]=(o*A-n*B-v*x)*C;a[4]=(j*w-g*F-l*y)*C;a[5]=(c*F-e*w+f*y)*C;a[6]=(u*t-k*B-s*r)*C;a[7]=(m*B-o*t+v*r)*C;a[8]=(g*E-h*w+l*z)*C;a[9]=(d*w-c*E-f*z)*
- C;a[10]=(k*A-p*t+s*q)*C;a[11]=(n*t-m*A-v*q)*C;a[12]=(h*y-g*D-j*z)*C;a[13]=(c*D-d*y+e*z)*C;a[14]=(p*r-k*x-u*q)*C;a[15]=(m*x-n*r+o*q)*C;return a},ortho:function(a,b,c,d,e,f,g){var h=1/(b-c),j=1/(d-e),l=1/(f-g);a[0]=-2*h;a[1]=0;a[2]=0;a[3]=0;a[4]=0;a[5]=-2*j;a[6]=0;a[7]=0;a[8]=0;a[9]=0;a[10]=2*l;a[11]=0;a[12]=(b+c)*h;a[13]=(e+d)*j;a[14]=(g+f)*l;a[15]=1;return a}}}});
- GeoGlobe.Visuals.EchartsGL=GeoGlobe.Class4OL(GeoGlobe.Visuals,{type:"echartsgl",map:null,container:null,layers:[],visualMap:null,mapbox3D:{boxHeight:10,boxWidth:100,altitudeScale:1},_echartsgl:null,initialize:function(a){GeoGlobe.Visuals.prototype.initialize.apply(this,arguments);this.layers=[];window.echarts?(this.visualMap=a.visualMap?a.visualMap:this.visualMap,this.mapbox3D=a.mapbox3D?a.mapbox3D:this.mapbox3D,console.warn("EchartsGL 1.1 \u6682\u672a\u652f\u6301\u9f20\u6807\u62fe\u53d6\u4e8b\u4ef6\uff01")):
- console.error("\u4f7f\u7528EchartsGL\u53ef\u89c6\u5316\u56fe\u5c42\u524d\uff0c\u9700\u5f15\u5165echarts\u548cechartsgl\u5e93\uff01")},addTo:function(){GeoGlobe.Visuals.prototype.addTo.apply(this,arguments);this.container.className="geoglobe-echartsgl-container";this._init()},_init:function(){this._echartsgl=echarts.init(this.container);this._echartsgl._mapbox=this.map;this.mapbox3D.center=this.map.getCenter().toArray();this.mapbox3D.zoom=this.map.getZoom();this.mapbox3D.pitch=this.map.getPitch();
- this.mapbox3D.bearing=this.map.getBearing();this._bindEvent()},render:function(){this._echartsgl.getOption()&&this.clear(this._init.bind(this));this.option={};this.visualMap&&(this.option.visualMap=this.visualMap);this.option.mapbox3D=this.mapbox3D;this.option.series=[];this.option.units=this.map.units;this.option.topTileExtent=this.map._tileExtent||this.map.projection.getExtent();if(this._order)for(var a=0;a<this._order.length;a++)for(var b=0;b<this.layers.length;b++)this.layers[b].id===this._order[a]&&
- this.option.series.push(this.layers[b].getRenderOption());else for(b=0;b<this.layers.length;b++)this.option.series.push(this.layers[b].getRenderOption());this._echartsgl.setOption(this.option)},clear:function(a){try{this._echartsgl.clear(),!a&&this._echartsgl.dispose()}catch(b){try{a&&this._echartsgl.dispose()}catch(c){}this._unbindEvent();a&&a()}},addLayer:function(a){a.id?this.map.getLayer(a.id)?console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u91cd\u590d\uff01"):this.layers.push(a):console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u4e3a\u7a7a\uff01")},
- removeLayer:function(a){for(var b=[],c=0;c<this.layers.length;c++)a!==this.layers[c].id&&b.push(this.layers[c]);this.layers=b},moveLayer:function(a,b){this._order=this.layers.map(function(a){return a.id});this._order.splice(this._order.indexOf(a),1);this._order.splice(b?this._order.indexOf(b):this._order.length,0,a);this.render()},getLayer:function(a){for(var b=0;b<this.layers.length;b++)if(a===this.layers[b].id)return this.layers[b]},_bindEvent:function(){var a=this;this.map.on("click",function(b){a._onClick(b)});
- this.map.on("mousemove",function(b){a._onMouseMove(b)});this.map.on("resize",function(){a._echartsgl.resize()})},_unbindEvent:function(){for(var a=0;a<this.map._listeners.click.length;a++)this.map._listeners.click[a].name&&this.map._listeners.click[a].name==="ECHARTSGL_CLICK_EVENT"&&this.map._listeners.click.splice(a,1);for(a=0;a<this.map._listeners.mousemove.length;a++)this.map._listeners.mousemove[a].name&&this.map._listeners.mousemove[a].name==="ECHARTSGL_MOUSEMOVE_EVENT"&&this.map._listeners.mousemove.splice(a,
- 1);for(a=0;a<this.map._listeners.resize.length;a++)this.map._listeners.resize[a].name&&this.map._listeners.resize[a].name==="ECHARTSGL_RESIZE_EVENT"&&this.map._listeners.resize.splice(a,1)},_onMouseMove:function(a){this.fire("overlayerhover",{param:{info:null,pickedInfos:[],event:a}})},_onClick:function(a){this.fire("overlayerclick",{param:{info:null,pickedInfos:[],event:a}})},remove:function(){if(this.container){GeoGlobe.Visuals.prototype.remove.apply(this);this.layers=[];this.clear();for(var a in this._listeners)this._listeners.hasOwnProperty(a)&&
- (this.off(a,this._listeners[a]),delete this._listeners[a]);this._unbindEvent();this.container=this.map=null;this.layers=[];this._order=[];this._echartsgl=this.mapbox3D=this.visualMap=null}}});
- GeoGlobe.Visuals.EchartsGL.BarLayer=GeoGlobe.Class4OL({id:"1",name:"",type:"bar3D",coordinateSystem:"mapbox3D",bevelSize:0,bevelSmoothness:2,stack:"",minHeight:0,itemStyle:null,data:[],label:null,emphasis:null,shading:null,realisticMaterial:null,lambertMaterial:null,colorMaterial:null,zlevel:-10,silent:!1,animation:!0,animationDurationUpdate:500,animationEasingUpdate:"cubicOut ",_parent:null,initialize:function(a){this.id=a.id?a.id:this.id;this.name=a.name?a.name:this.name;this.bevelSize=a.bevelSize?
- a.bevelSize:this.bevelSize;this.bevelSmoothness=a.bevelSmoothness?a.bevelSmoothness:this.bevelSmoothness;this.stack=a.stack?a.stack:this.stack;this.minHeight=a.minHeight?a.minHeight:this.minHeight;this.itemStyle=a.itemStyle?a.itemStyle:this.itemStyle;this.label=a.label?a.label:this.label;this.emphasis=a.emphasis?a.emphasis:this.emphasis;this.data=a.data?a.data:this.data;this.shading=a.shading?a.shading:this.shading;this.realisticMaterial=a.realisticMaterial?a.realisticMaterial:this.realisticMaterial;
- this.lambertMaterial=a.lambertMaterial?a.lambertMaterial:this.lambertMaterial;this.colorMaterial=a.colorMaterial?a.colorMaterial:this.colorMaterial;this.zlevel=a.zlevel?a.zlevel:this.zlevel;this.silent=a.silent?a.silent:this.silent;this.animation=a.animation?a.animation:this.animation;this.animationDurationUpdate=a.animationDurationUpdate?a.animationDurationUpdate:this.animationDurationUpdate;this.animationEasingUpdate=a.animationEasingUpdate?a.animationEasingUpdate:this.animationEasingUpdate},addTo:function(a){this._parent=
- a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getRenderOption:function(){var a={};this.id&&(a.id=this.id);this.name&&(a.name=this.name);this.bevelSize&&(a.bevelSize=this.bevelSize);this.bevelSmoothness&&(a.bevelSmoothness=this.bevelSmoothness);this.stack&&(a.stack=this.stack);this.minHeight&&(a.minHeight=this.minHeight);this.itemStyle&&(a.itemStyle=this.itemStyle);this.label&&(a.label=this.label);this.emphasis&&(a.emphasis=
- this.emphasis);this.shading&&(a.shading=this.shading);this.realisticMaterial&&(a.realisticMaterial=this.realisticMaterial);this.lambertMaterial&&(a.lambertMaterial=this.lambertMaterial);this.colorMaterial&&(a.colorMaterial=this.colorMaterial);this.zlevel&&(a.zlevel=this.zlevel);this.silent&&(a.silent=this.silent);this.animation&&(a.animation=this.animation);this.animationDurationUpdate&&(a.animationDurationUpdate=this.animationDurationUpdate);this.animationEasingUpdate&&(a.animationEasingUpdate=this.animationEasingUpdate);
- a.type="bar3D";a.coordinateSystem="mapbox3D";if(this.data&&this.data instanceof Array){a.data=[];for(var b=0;b<this.data.length;b++)if(!this.data[b].properties||!this.data[b].geometry)console.warn("BarLayer\u4f7f\u7528\u7684\u6570\u636e\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u8bf7\u786e\u8ba4\u4e3ageojson\u683c\u5f0f\uff01");else if(this.data[b].geometry.type!="Point")console.warn("BarLayer\u4f7f\u7528\u7684\u5fc5\u987b\u662fPoint\u51e0\u4f55\u5f62\u72b6\uff01");else{var c={};c.name=this.data[b].properties.name;
- c.value=[this.data[b].geometry.coordinates[0],this.data[b].geometry.coordinates[1],this.data[b].properties.height?this.data[b].properties.height:0];this.data[b].itemStyle&&(c.itemStyle=this.data[b].itemStyle);this.data[b].label&&(c.label=this.data[b].label);this.data[b].emphasis&&(c.emphasis=this.data[b].emphasis);a.data.push(c)}}return a}});
- GeoGlobe.Visuals.EchartsGL.ScatterLayer=GeoGlobe.Class4OL({id:"1",name:"",type:"scatter3D",coordinateSystem:"mapbox3D",symbol:"circle",symbolSize:10,blendMode:"source-over",itemStyle:null,data:[],label:null,emphasis:null,zlevel:-10,silent:!0,animation:!0,animationDurationUpdate:500,animationEasingUpdate:"cubicOut ",_parent:null,initialize:function(a){this.id=a.id?a.id:this.id;this.name=a.name?a.name:this.name;this.symbol=a.symbol?a.symbol:this.symbol;this.symbolSize=a.symbolSize?a.symbolSize:this.symbolSize;
- this.blendMode=a.blendMode?a.blendMode:this.blendMode;this.itemStyle=a.itemStyle?a.itemStyle:this.itemStyle;this.label=a.label?a.label:this.label;this.emphasis=a.emphasis?a.emphasis:this.emphasis;this.data=a.data?a.data:this.data;this.zlevel=a.zlevel?a.zlevel:this.zlevel;this.silent=a.silent?a.silent:this.silent;this.animation=a.animation?a.animation:this.animation;this.animationDurationUpdate=a.animationDurationUpdate?a.animationDurationUpdate:this.animationDurationUpdate;this.animationEasingUpdate=
- a.animationEasingUpdate?a.animationEasingUpdate:this.animationEasingUpdate},addTo:function(a){this._parent=a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getRenderOption:function(){var a={};this.id&&(a.id=this.id);this.name&&(a.name=this.name);this.symbol&&(a.symbol=this.symbol);this.symbolSize&&(a.symbolSize=this.symbolSize);this.blendMode&&(a.blendMode=this.blendMode);this.itemStyle&&(a.itemStyle=this.itemStyle);this.label&&
- (a.label=this.label);this.emphasis&&(a.emphasis=this.emphasis);this.zlevel&&(a.zlevel=this.zlevel);this.silent&&(a.silent=this.silent);this.animation&&(a.animation=this.animation);this.animationDurationUpdate&&(a.animationDurationUpdate=this.animationDurationUpdate);this.animationEasingUpdate&&(a.animationEasingUpdate=this.animationEasingUpdate);a.type="scatter3D";a.coordinateSystem="mapbox3D";if(this.data&&this.data instanceof Array){a.data=[];for(var b=0;b<this.data.length;b++)if(!this.data[b].properties||
- !this.data[b].geometry)console.warn("ScatterLayer\u4f7f\u7528\u7684\u6570\u636e\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u8bf7\u786e\u8ba4\u4e3ageojson\u683c\u5f0f\uff01");else if(this.data[b].geometry.type!=="Point")console.warn("ScatterLayer\u4f7f\u7528\u7684\u5fc5\u987b\u662fPoint\u51e0\u4f55\u5f62\u72b6\uff01");else{var c={};c.name=this.data[b].properties.name;c.value=[this.data[b].geometry.coordinates[0],this.data[b].geometry.coordinates[1],this.data[b].properties.height?this.data[b].properties.height:
- 0];a.data.push(c)}}return a}});
- GeoGlobe.Visuals.EchartsGL.LinesLayer=GeoGlobe.Class4OL({id:"1",name:"",type:"lines3D",coordinateSystem:"mapbox3D",polyline:!1,blendMode:"source-over",effect:null,lineStyle:null,data:[],zlevel:-10,silent:!1,_parent:null,initialize:function(a){this.id=a.id?a.id:this.id;this.name=a.name?a.name:this.name;this.polyline=a.polyline?a.polyline:this.polyline;this.blendMode=a.blendMode?a.blendMode:this.blendMode;this.effect=a.effect?a.effect:this.effect;this.lineStyle=a.lineStyle?a.lineStyle:this.lineStyle;
- this.data=a.data?a.data:this.data;this.zlevel=a.zlevel?a.zlevel:this.zlevel;this.silent=a.silent?a.silent:this.silent},addTo:function(a){this._parent=a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getRenderOption:function(){var a={};this.id&&(a.id=this.id);this.name&&(a.name=this.name);this.polyline&&(a.polyline=this.polyline);this.blendMode&&(a.blendMode=this.blendMode);this.effect&&(a.effect=this.effect);this.lineStyle&&
- (a.lineStyle=this.lineStyle);this.zlevel&&(a.zlevel=this.zlevel);this.silent&&(a.silent=this.silent);a.type="lines3D";a.coordinateSystem="mapbox3D";if(this.data&&this.data instanceof Array){a.data=[];for(var b=0;b<this.data.length;b++)if(!this.data[b].properties||!this.data[b].geometry)console.warn("LinesLayer\u4f7f\u7528\u7684\u6570\u636e\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u8bf7\u786e\u8ba4\u4e3ageojson\u683c\u5f0f\uff01");else if(this.data[b].geometry.type!=="LineString")console.warn("LinesLayer\u4f7f\u7528\u7684\u5fc5\u987b\u662fLineString\u51e0\u4f55\u5f62\u72b6\uff01");
- else{var c={};c.name=this.data[b].properties.name;c.value=this.data[b].properties.value;c.lineStyle=this.data[b].properties.lineStyle;c.coords=this.data[b].geometry.coordinates;a.data.push(c)}}return a}});
- GeoGlobe.Visuals.EchartsGL.MapLayer=GeoGlobe.Class4OL({id:"1",name:"",type:"map3D",coordinateSystem:"mapbox3D",map:"",instancing:!1,label:null,emphasis:null,itemStyle:null,data:[],shading:null,realisticMaterial:null,lambertMaterial:null,colorMaterial:null,light:null,postEffect:null,temporalSuperSampling:null,zlevel:-10,_parent:null,initialize:function(a){this.id=a.id?a.id:this.id;this.name=a.name?a.name:this.name;this.map=a.map?a.map:this.map;this.instancing=a.instancing?a.instancing:this.instancing;
- this.label=a.label?a.label:this.label;this.emphasis=a.emphasis?a.emphasis:this.emphasis;this.itemStyle=a.itemStyle?a.itemStyle:this.itemStyle;this.data=a.data?a.data:this.data;this.shading=a.shading?a.shading:this.shading;this.realisticMaterial=a.realisticMaterial?a.realisticMaterial:this.realisticMaterial;this.lambertMaterial=a.lambertMaterial?a.lambertMaterial:this.lambertMaterial;this.colorMaterial=a.colorMaterial?a.colorMaterial:this.colorMaterial;this.light=a.light?a.light:this.light;this.postEffect=
- a.postEffect?a.postEffect:this.postEffect;this.temporalSuperSampling=a.temporalSuperSampling?a.temporalSuperSampling:this.temporalSuperSampling;this.zlevel=a.zlevel?a.zlevel:this.zlevel},addTo:function(a){this._parent=a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getRenderOption:function(){var a={};this.id&&(a.id=this.id);this.name&&(a.name=this.name);this.map&&(a.map=this.map);this.instancing&&(a.instancing=this.instancing);
- this.label&&(a.label=this.label);this.emphasis&&(a.emphasis=this.emphasis);this.itemStyle&&(a.itemStyle=this.itemStyle);this.shading&&(a.shading=this.shading);this.realisticMaterial&&(a.realisticMaterial=this.realisticMaterial);this.lambertMaterial&&(a.lambertMaterial=this.lambertMaterial);this.colorMaterial&&(a.colorMaterial=this.colorMaterial);this.light&&(a.light=this.light);this.postEffect&&(a.postEffect=this.postEffect);this.temporalSuperSampling&&(a.temporalSuperSampling=this.temporalSuperSampling);
- this.zlevel&&(a.zlevel=this.zlevel);a.type="map3D";a.coordinateSystem="mapbox3D";if(this.data&&this.data instanceof Array){a.data=[];for(var b=0;b<this.data.length;b++)if(!this.data[b].properties||!this.data[b].geometry)console.warn("MapLayer\u4f7f\u7528\u7684\u6570\u636e\u683c\u5f0f\u4e0d\u6b63\u786e\uff0c\u8bf7\u786e\u8ba4\u4e3ageojson\u683c\u5f0f\uff01");else if(this.data[b].geometry.type!=="Polygon")console.warn("MapLayer\u4f7f\u7528\u7684\u5fc5\u987b\u662fPolygon\u51e0\u4f55\u5f62\u72b6\uff01");
- else{var c={};c.name=this.data[b].properties.name;c.height=this.data[b].properties.height;c.value=this.data[b].properties.value;a.data.push(c)}}return a}});
- GeoGlobe.Visuals.Custom=GeoGlobe.Class4OL(GeoGlobe.Visuals,{type:"custom",map:null,container:null,layers:[],_order:[],initialize:function(){GeoGlobe.Visuals.prototype.initialize.apply(this,arguments);this.layers=[];this._order=[]},addTo:function(){GeoGlobe.Visuals.prototype.addTo.apply(this,arguments);this.container.className="geoglobe-custom-container";this._bindEvent()},render:function(){for(var a=0;a<this.layers.length;a++)this.layers[a].render()},addLayer:function(a){a.id?this.map.getLayer(a.id)?
- console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u91cd\u590d\uff01"):this.layers.push(a):console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u4e3a\u7a7a\uff01")},moveLayer:function(a,b){this._order=this.layers.map(function(a){return a.id});this._order.splice(this._order.indexOf(a),1);this._order.splice(b?this._order.indexOf(b):this._order.length,0,a);for(var c=0;c<this._order.length;c++)for(var d=0;d<this.layers.length;d++)if(this._order[c]===this.layers[d].id)this.layers[d].div.style.zIndex=
- c},removeLayer:function(a){for(var b=[],c=0;c<this.layers.length;c++)a===this.layers[c].id?this.layers[c].destroy&&this.layers[c].destroy():b.push(this.layers[c]);this.layers=b},getLayer:function(a){for(var b=0;b<this.layers.length;b++)if(a===this.layers[b].id)return this.layers[b]},getBounds:function(a){var a=a||0,b=this.map.unproject([-a,-a]),c=this.map.unproject([this.map.transform.width+a,-a]),d=this.map.unproject([-a,this.map.transform.height+a]),a=this.map.unproject([this.map.transform.width+
- a,this.map.transform.height+a]);return[[Math.min(b.lng,c.lng,d.lng,a.lng),Math.min(b.lat,c.lat,d.lat,a.lat)],[Math.max(b.lng,c.lng,d.lng,a.lng),Math.max(b.lat,c.lat,d.lat,a.lat)]]},_bindEvent:function(){var a=this;this.map.on("dragstart",function(){if(this.getPitch()===0)a.lastCenter=this.getCenter()});this.map.on("zoomstart",function(){a.layers.forEach(function(a){a.visibility&&a.onZoomStart&&a.onZoomStart()})});this.map.on("move",function(){a.lastCenter&&(a.lastCenterPixel=this.project(a.lastCenter));
- a.layers.forEach(function(a){a.visibility&&a.onMove&&a.onMove()})});this.map.on("zoomend",function(){a.layers.forEach(function(a){a.visibility&&a.onZoomEnd&&a.onZoomEnd()})});this.map.on("moveend",function(){a.lastCenter=void 0;a.layers.forEach(function(a){a.visibility&&a.onMoveEnd&&a.onMoveEnd()})});this.map.on("click",function(b){a._onClick(b)});this.map.on("mousemove",function(b){a._onMouseMove(b)});this.map.on("resize",function(){a._onResize()})},_unbindEvent:function(){for(var a=0;a<this.map._listeners.dragstart.length;a++)this.map._listeners.dragstart[a].name&&
- this.map._listeners.dragstart[a].name==="CUSTOM_DRAGSTART_EVENT"&&this.map._listeners.dragstart.splice(a,1);for(a=0;a<this.map._listeners.zoomstart.length;a++)this.map._listeners.zoomstart[a].name&&this.map._listeners.zoomstart[a].name==="CUSTOM_ZOOMSTART_EVENT"&&this.map._listeners.zoomstart.splice(a,1);for(a=0;a<this.map._listeners.move.length;a++)this.map._listeners.move[a].name&&this.map._listeners.move[a].name==="CUSTOM_MOVE_EVENT"&&this.map._listeners.move.splice(a,1);for(a=0;a<this.map._listeners.zoomend.length;a++)this.map._listeners.zoomend[a].name&&
- this.map._listeners.zoomend[a].name==="CUSTOM_ZOOMEND_EVENT"&&this.map._listeners.zoomend.splice(a,1);for(a=0;a<this.map._listeners.moveend.length;a++)this.map._listeners.moveend[a].name&&this.map._listeners.moveend[a].name==="CUSTOM_MOVEEND_EVENT"&&this.map._listeners.moveend.splice(a,1);for(a=0;a<this.map._listeners.click.length;a++)this.map._listeners.click[a].name&&this.map._listeners.click[a].name==="CUSTOM_CLICK_EVENT"&&this.map._listeners.click.splice(a,1);for(a=0;a<this.map._listeners.mousemove.length;a++)this.map._listeners.mousemove[a].name&&
- this.map._listeners.mousemove[a].name==="CUSTOM_MOUSEMOVE_EVENT"&&this.map._listeners.mousemove.splice(a,1);for(a=0;a<this.map._listeners.resize.length;a++)this.map._listeners.resize[a].name&&this.map._listeners.resize[a].name==="CUSTOM_RESIZE_EVENT"&&this.map._listeners.resize.splice(a,1)},_onClick:function(a){for(var b=0;b<this.layers.length;b++)this.layers[b].onClick&&this.layers[b].onClick(a)},_onMouseMove:function(a){for(var b=0;b<this.layers.length;b++)this.layers[b].onMouseMove&&this.layers[b].onMouseMove(a)},
- _onResize:function(){for(var a=0;a<this.layers.length;a++)this.layers[a].onResize&&this.layers[a].onResize()},remove:function(){if(this.container){for(;this.layers.length;)this.removeLayer(this.layers[this.layers.length-1].id);GeoGlobe.Visuals.prototype.remove.apply(this);for(var a in this._listeners)this._listeners.hasOwnProperty(a)&&(this.off(a,this._listeners[a]),delete this._listeners[a]);this._unbindEvent();this.container=this.map=null;this.layers=[];this._order=[]}}});
- GeoGlobe.Visuals.Custom.Bubble=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPoint:null,markPoints:[],visibility:!0,dragdrawing:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_RendererOptions:function(){this._rendererOptions=
- GeoGlobe.Util.deepExtend({},{markPoint:{nameField:"name",valueField:"value",hoverable:!0,clickable:!0,symbol:"bubble",symbolMinSize:20,symbolMaxSize:40,symbolNumber:Number.MAX_VALUE,symbolValueRangeScale:1,symbolSrc:"",symbolWidth:24,symbolHeight:30,effect:{show:!0,period:10,scaleSize:2,ringNumber:2,circleNumber:3},itemStyle:{flat:!0,color:"rgba(255,0,0,0.7)",lineWidth:1,shadowColor:"#000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0},label:{show:!0,color:"#fff",align:"center",baseline:"middle",fontFamily:"serif",
- fontSize:12,fontStyle:"normal",fontWeight:"normal"}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},this.rendererOptions)},_initMarkPoint:function(){var a=this,b=this._rendererOptions.markPoint,c=b.effect,d=b.itemStyle,e=b.label;this.MarkPoint=function(c,e,h,j,l,m){this.index=c;this.name=e;this.value=h;this.lon=j;this.lat=l;this.attributes=m;this.init();
- this.weight=(this.value-a.minValue)/(a.maxValue-a.minValue);if(isNaN(this.weight))this.weight=1;if(this.weight>1)this.weight=1;if(this.weight<0)this.weight=0;this.size=b.symbolMinSize+(b.symbolMaxSize-b.symbolMinSize)*this.weight;this.radius=this.size/2;if(d.flat)this.color=GeoGlobe.Util.getType(d.color)==="object"?"rgba("+a.gradientImageData[~~(this.weight*255+0.5)*4]+","+a.gradientImageData[~~(this.weight*255+0.5)*4+1]+","+a.gradientImageData[~~(this.weight*255+0.5)*4+2]+","+a.gradientImageData[3]/
- 255+")":d.color;else{if(GeoGlobe.Util.getType(d.color)!=="object"){console.error("\u975e\u6241\u5e73\u6837\u5f0f\u4e0b\u8bf7\u4f7f\u7528\u6e10\u53d8\u8272\uff01");return}var c=0,n;for(n in d.color)+n>c&&(c=+n);this.color=d.color[c]}this.rgbColor=GeoGlobe.Util.getRgbColor(this.color);this.tmpColor=this.color;this.alpha=this.color.indexOf("a(")!==-1?+this.color.split(",")[3].split(")")[0]:1;if(b.valueFilter)for(n=0;n<b.valueFilter.length;n++)if(this.value===b.valueFilter[n])this.tmpColor=this.rgbColor=
- b.filterColor[n],this.size=b.filterSize[n],this.increment=b.filterIncrement[n];if(b.threshold)for(n=0;n<b.threshold.length;n++)if(b.threshold[n+1]&&b.threshold[n]<this.value&&this.value<b.threshold[n+1])this.tmpColor=this.rgbColor=b.thresholdColor[n],this.size=b.thresholdSize[n],this.increment=b.thresholdIncrement[n];switch(b.symbol){case "fire":this.fires=[];for(n=0;n<150;n++)this.fires.push(new a.Fire(this.size));break;case "water":this.waveLength=0.1;this.waveSize=this.size*0.8;this.attenuations=
- [3,2];this.noises=[0.6*(this.waveSize/2-4),0.3*(this.waveSize/2-4)];this.Fs=[10,10];break;case "heatmap":this.scale=this.size/b.symbolMaxSize;break;case "sprite":this.scale=this.size/b.symbolMaxSize;this.factor=1;break;case "simple":this.factor=1}};this.MarkPoint.prototype.init=function(){switch(b.symbol){case "simple":case "bubble":case "ellipse":this.energy=c.show?Math.random()*c.scaleSize:c.scaleSize;b.increment!=void 0&&(b.increment>1||b.increment<0)&&console.error("increment must be between 0 and 1");
- if(b.increment!=void 0&&b.increment==0)this.energy=1;this.increment=b.increment!=void 0?b.increment:Math.max(0.1*c.scaleSize/c.period+Math.random()*(Math.random()>0.5?1:-1)*0.002,0.001);break;case "circle":this.energy=[];for(var a=0;a<c.circleNumber;a++)this.energy.push(a/c.circleNumber);this.increment=b.increment?b.increment:Math.max(0.1*c.scaleSize/c.period+Math.random()*(Math.random()>0.5?1:-1)*0.002,0.001);break;case "ring":this.energy=[];for(a=0;a<c.ringNumber;a++)this.energy.push(a/c.ringNumber);
- this.increment=b.increment?b.increment:Math.max(0.1*c.scaleSize/c.period+Math.random()*(Math.random()>0.5?1:-1)*0.002,0.001);break;case "water":this.energy=0;this.increment=b.increment?b.increment:0.1+Math.random()*(Math.random()>0.5?1:-1)*0.02;break;case "sprite":this.energy=c.show?Math.random()*c.scaleSize:c.scaleSize,this.increment=b.increment?b.increment:Math.max(0.1*c.scaleSize/c.period+Math.random()*(Math.random()>0.5?1:-1)*0.002,0.001)}};this.MarkPoint.prototype.updateXY=function(){var c=a._parent.map.project([this.lon,
- this.lat]);this.x=c.x;this.y=c.y;if(b.symbol==="fire")for(c=0;c<this.fires.length;c++)this.fires[c].x=this.x,this.fires[c].y=this.y};this.MarkPoint.prototype.update=function(){var d;switch(b.symbol){case "simple":if(this.energy<=1)this.factor=1;else if(this.energy>=c.scaleSize)this.factor=-1;this.energy+=this.factor*this.increment;break;case "bubble":case "ellipse":this.energy+=this.increment;if(this.energy>c.scaleSize)this.energy=0;break;case "circle":for(d=0;d<c.circleNumber;d++)this.energy[d]+=
- this.increment,this.energy[d]>1&&(this.energy[d]=0);break;case "ring":for(d=0;d<c.ringNumber;d++)this.energy[d]+=this.increment,this.energy[d]>1&&(this.energy[d]=0);break;case "fire":var e;for(d=0;d<this.fires.length;d++)e=this.fires[d],e.x+=e.speedX,e.y+=e.speedY,e.opacity-=e.increment,e.radius++,e.opacity<0&&(this.fires[d]=new a.Fire(this.size,this.x,this.y));break;case "water":this.energy=(this.energy+this.increment)%(Math.PI*64);break;case "sprite":if(this.energy<=0.15)this.factor=1;else if(this.energy>=
- c.scaleSize)this.factor=-1;this.energy+=this.factor*this.increment}};this.MarkPoint.prototype.isPointInPath=function(c,d,h){c.beginPath();switch(b.symbol){case "simple":case "bubble":case "circle":case "ring":case "round":case "water":case "ellipse":case "heatmap":case "sprite":c.arc(this.x,this.y,this.radius,0,Math.PI*2,!0);break;case "pin":c.moveTo(this.x-0.5,this.y);c.quadraticCurveTo(this.x,this.y-this.radius/2,this.x-this.radius*Math.sin(Math.PI/3),this.y-this.radius-this.radius*Math.sin(Math.PI/
- 6));c.arc(this.x,this.y-this.radius*2,this.radius,0,Math.PI*5/6,!0);c.arc(this.x,this.y-this.radius*2,this.radius,0,Math.PI/6,!1);c.quadraticCurveTo(this.x,this.y-this.radius/2,this.x+0.5,this.y);break;case "rmb":c.font=e.fontStyle+" "+e.fontWeight+" "+this.size+"px "+e.fontFamily;if(GeoGlobe.String.isNumeric(this.value)){var j=0,l=this.size;if(b.formatter)for(var m=GeoGlobe.Util.getFormattedString({a:this.name,b:"\u7edf\u8ba1\u6570",c:this.value},b.formatter).split("<br/>"),n=m.length,o=0;o<n;o++){var v=
- c.measureText(m[o]).width;v>j&&(j=v);c.fillText(m[o],this.x,this.y-((n-1)/2-o)*(this.radius*2+5))}else j=c.measureText("\uffe5"+this.value).width;c.rect(this.x-j/2,this.y-l/2,j,l)}break;case "fire":c.rect(this.x-this.size/2,this.y-this.size/2,this.size,this.size);break;case "icon":c.rect(this.x-b.symbolWidth/2,this.y-b.symbolHeight/2,b.symbolWidth,b.symbolHeight)}if(c.isPointInPath(d,h))a.hoveredMarkPoint=this};this.MarkPoint.prototype.draw1=function(f){a.hoveredMarkPoint===this?(this.radius=this.size/
- 2*1.1,this.color=GeoGlobe.Util.getShadeColor(this.tmpColor,20)):(this.radius=this.size/2,this.color=this.tmpColor);this.rgbColor=GeoGlobe.Util.getRgbColor(this.color);f.shadowColor=d.shadowColor;f.shadowBlur=d.shadowBlur;f.shadowOffsetX=d.shadowOffsetX;f.shadowOffsetY=d.shadowOffsetY;switch(b.symbol){case "bubble":if(a.hoveredMarkPoint===this)f.beginPath(),f.arc(this.x,this.y,this.radius*c.scaleSize/2,0,Math.PI*2,!0),f.lineWidth=~~(this.radius/5+0.5)<2?2:~~(this.radius/5+0.5),f.strokeStyle=this.color,
- f.stroke();break;case "circle":case "ring":case "round":if(!d.flat)for(var g in this.color=f.createRadialGradient(this.x,this.y,0,this.x,this.y,this.radius),d.color)d.color.hasOwnProperty(g)&&(a.hoveredMarkPoint===this?this.color.addColorStop(+g,GeoGlobe.Util.getShadeColor(d.color[g],20)):this.color.addColorStop(+g,d.color[g]));f.beginPath();f.arc(this.x,this.y,this.radius,0,Math.PI*2,!0);f.fillStyle=this.color;f.fill();break;case "pin":f.beginPath();f.moveTo(this.x+this.radius/3,this.y);f.quadraticCurveTo(this.x+
- this.radius/3,this.y+this.radius/10,this.x,this.y+this.radius/10);f.quadraticCurveTo(this.x-this.radius/3,this.y+this.radius/10,this.x-this.radius/3,this.y);f.quadraticCurveTo(this.x-this.radius/3,this.y-this.radius/10,this.x,this.y-this.radius/10);f.quadraticCurveTo(this.x+this.radius/3,this.y-this.radius/10,this.x+this.radius/3,this.y);f.fillStyle="rgba(0,0,0,0.3)";f.fill();f.beginPath();f.moveTo(this.x+this.radius*2/3,this.y);f.quadraticCurveTo(this.x+this.radius*2/3,this.y+this.radius/6,this.x,
- this.y+this.radius/6);f.quadraticCurveTo(this.x-this.radius*2/3,this.y+this.radius/6,this.x-this.radius*2/3,this.y);f.quadraticCurveTo(this.x-this.radius*2/3,this.y-this.radius/6,this.x,this.y-this.radius/6);f.quadraticCurveTo(this.x+this.radius*2/3,this.y-this.radius/6,this.x+this.radius*2/3,this.y);f.fillStyle="rgba(0,0,0,0.2)";f.fill();f.beginPath();f.moveTo(this.x-0.5,this.y);f.quadraticCurveTo(this.x,this.y-this.radius/2,this.x-this.radius*Math.sin(Math.PI/3),this.y-this.radius-this.radius*Math.sin(Math.PI/
- 6));f.arc(this.x,this.y-this.radius*2,this.radius,0,Math.PI*5/6,!0);f.arc(this.x,this.y-this.radius*2,this.radius,0,Math.PI/6,!1);f.quadraticCurveTo(this.x,this.y-this.radius/2,this.x+0.5,this.y);f.fillStyle=this.color;f.fill();break;case "rmb":f.font=e.fontStyle+" "+e.fontWeight+" "+this.radius*2+"px "+e.fontFamily;f.textAlign="center";f.textBaseline="middle";f.fillStyle=this.color;if(GeoGlobe.String.isNumeric(this.value))if(b.formatter){g=GeoGlobe.Util.getFormattedString({a:this.name,b:"\u7edf\u8ba1\u6570",
- c:this.value},b.formatter).split("<br/>");for(var h=g.length,j=0;j<h;j++)f.fillText(g[j],this.x,this.y-((h-1)/2-j)*(this.radius*2+5))}else f.fillText("\uffe5"+this.value,this.x,this.y);break;case "water":g=f.createRadialGradient(this.x,this.y,0,this.x,this.y,this.radius);g.addColorStop(0.8,"rgba(255,255,255,0)");g.addColorStop(1,"rgba(255,255,255,1)");f.beginPath();f.arc(this.x,this.y,this.radius,0,Math.PI*2,!1);f.fillStyle=g;f.fill();break;case "heatmap":f.save();f.translate(this.x,this.y);f.scale(this.scale,
- this.scale);f.drawImage(a.markPointCacheCanvas,-a.markPointCacheCanvasSize/2,-a.markPointCacheCanvasSize/2);f.restore();break;case "icon":f.save(),f.translate(this.x,this.y),f.rotate(Math.PI/180*(this.attributes.azimuth-a._parent.map.getBearing())),f.drawImage(a.markPointCacheImage,-b.symbolWidth/2,-b.symbolHeight/2,b.symbolWidth,b.symbolHeight),f.restore()}switch(b.symbol){case "bubble":case "circle":case "ring":case "round":case "water":case "ellipse":if(e.show)f.font=e.fontStyle+" "+e.fontWeight+
- " "+e.fontSize+"px "+e.fontFamily,f.textAlign=e.align,f.textBaseline=e.baseline,f.fillStyle=e.color,f.fillText(this.value,this.x,this.y);break;case "pin":if(e.show)f.beginPath(),f.arc(this.x,this.y-this.radius*2,this.radius/3,0,Math.PI*2,!0),f.shadowBlur=0,f.shadowOffsetX=0,f.shadowOffsetY=0,f.fillStyle=e.color,f.fill()}};this.MarkPoint.prototype.draw2=function(e){var g;switch(b.symbol){case "simple":if(!d.flat)for(g in this.color=e.createRadialGradient(this.x,this.y,0,this.x,this.y,this.radius*this.energy),
- d.color)d.color.hasOwnProperty(g)&&(a.hoveredMarkPoint===this?this.color.addColorStop(+g,GeoGlobe.Util.getShadeColor(d.color[g],20)):this.color.addColorStop(+g,d.color[g]));e.beginPath();e.arc(this.x,this.y,this.radius*this.energy,0,Math.PI*2,!0);e.fillStyle=this.color;e.fill();break;case "bubble":e.beginPath();e.arc(this.x,this.y,this.radius*this.energy,0,Math.PI*2,!0);e.lineWidth=d.lineWidth;e.strokeStyle=this.color;e.stroke();break;case "circle":for(g=0;g<c.circleNumber;)e.beginPath(),e.arc(this.x,
- this.y,this.radius+this.radius*(c.scaleSize-1)*this.energy[g],0,Math.PI*2,!0),e.lineWidth=d.lineWidth,e.strokeStyle="rgba"+this.rgbColor.slice(3).split(")")[0]+","+(1-this.energy[g])*this.alpha+")",e.stroke(),g++;break;case "ring":for(g=0;g<c.ringNumber;)e.beginPath(),e.arc(this.x,this.y,this.radius,0,Math.PI*2,!1),e.arc(this.x,this.y,this.radius+this.radius*(c.scaleSize-1)*this.energy[g],0,Math.PI*2,!0),e.fillStyle="rgba"+this.rgbColor.slice(3).split(")")[0]+","+(1-this.energy[g])*this.alpha+")",
- e.fill(),g++;break;case "fire":var h,j;for(g=0;g<this.fires.length;g++)h=this.fires[g],j=e.createRadialGradient(h.x,h.y,0,h.x,h.y,h.radius),j.addColorStop(0,"rgba"+this.rgbColor.slice(3).split(")")[0]+","+h.opacity+")"),j.addColorStop(0.5,"rgba"+this.rgbColor.slice(3).split(")")[0]+","+h.opacity+")"),j.addColorStop(1,"rgba"+this.rgbColor.slice(3).split(")")[0]+", 0)"),e.beginPath(),e.arc(h.x,h.y,h.radius,0,Math.PI*2,!1),e.fillStyle=j,e.globalAlpha=this.alpha,e.fill();break;case "water":h=this.x-this.radius*
- 0.8;j=this.y;var l,m;e.beginPath();e.moveTo(h,j);for(g=-this.waveLength;g<=this.waveLength;g+=0.01)g=parseFloat(parseFloat(g).toFixed(2)),l=h+this.waveSize*((g+this.waveLength)/(this.waveLength*2)),m=j+this.noises[0]*Math.pow(Math.sin(g*10*this.attenuations[0]),1)*Math.sin(this.Fs[0]*g-this.energy),e.lineTo(l,m);e.arc(this.x,this.y,this.radius*0.8,0,Math.PI,!1);e.fillStyle=GeoGlobe.Util.getShadeColor(this.color,-10);e.globalAlpha=this.alpha;e.fill();e.beginPath();e.moveTo(h,j);for(g=-this.waveLength;g<=
- this.waveLength;g+=0.01)g=parseFloat(parseFloat(g).toFixed(2)),l=h+this.waveSize*((g+this.waveLength)/(this.waveLength*2)),m=j+this.noises[1]*Math.pow(Math.sin(g*10*this.attenuations[1]),1)*Math.sin(this.Fs[1]*g-this.energy),e.lineTo(l,m);e.arc(this.x,this.y,this.radius*0.8,0,Math.PI,!1);e.fillStyle=this.color;e.globalAlpha=1;e.fill();break;case "ellipse":j=e.createRadialGradient(this.x,this.y,this.radius*this.energy,this.x,this.y,0);j.addColorStop(0.7,"rgba"+this.rgbColor.slice(3).split(")")[0]+
- ", 0.5)");j.addColorStop(0.3,"rgba"+this.rgbColor.slice(3).split(")")[0]+", 1)");j.addColorStop(0.2,"rgba"+this.rgbColor.slice(3).split(")")[0]+", 1)");j.addColorStop(0,"rgba"+this.rgbColor.slice(3).split(")")[0]+", 0)");e.beginPath();e.arc(this.x,this.y,this.radius*this.energy,0,Math.PI*2,!1);e.fillStyle=j;e.globalAlpha=(1-this.energy/c.scaleSize)*this.alpha;e.fill();break;case "sprite":e.save(),e.translate(this.x,this.y),e.scale(this.scale*this.energy,this.scale*this.energy),e.drawImage(a.markPointCacheCanvas,
- -a.markPointCacheCanvasSize/2,-a.markPointCacheCanvasSize/2),e.restore()}c.show&&this.update()}},_initMarkPointExtra:function(){var a=this;if(this._rendererOptions.markPoint.itemStyle.flat&&GeoGlobe.Util.getType(this._rendererOptions.markPoint.itemStyle.color)==="object")this.gradientImageData=GeoGlobe.Util.getGradientImageData(this._rendererOptions.markPoint.itemStyle.color);switch(this._rendererOptions.markPoint.symbol){case "fire":if(!this.Fire)this.Fire=function(a,b,c){this.x=b;this.y=c;this.speedX=
- -1+Math.random()*2;this.speedY=-5+Math.random()*5;this.radius=0.5+Math.random();this.increment=(1+Math.random())/a;this.opacity=1};break;case "heatmap":this.markPointCacheCanvasSize=this._rendererOptions.markPoint.symbolMaxSize;this.markPointCacheCanvas=document.createElement("canvas");this.markPointCacheCanvas.width=this.markPointCacheCanvasSize;this.markPointCacheCanvas.height=this.markPointCacheCanvasSize;this.markPointCacheCanvasContext=this.markPointCacheCanvas.getContext("2d");var b=this._rendererOptions.markPoint.symbolMaxSize/
- 2,c=this.markPointCacheCanvasContext.createRadialGradient(b,b,0,b,b,b);c.addColorStop(0.25,"rgba(0,0,0,0.25)");c.addColorStop(1,"rgba(0,0,0,0)");this.markPointCacheCanvasContext.beginPath();this.markPointCacheCanvasContext.arc(b,b,b,0,2*Math.PI,!1);this.markPointCacheCanvasContext.fillStyle=c;this.markPointCacheCanvasContext.fill();if(!this.makeItHot)this.makeItHot=function(a,b,c,g,h){for(var g=a.getImageData(b,c,g,h),h=g.data,j=this.gradientImageData,l=h.length/4,m,n,o;l--;)m=l*4+3,n=h[m],o=n*4,
- n&&(h[m-3]=j[o],h[m-2]=j[o+1],h[m-1]=j[o+2]);a.putImageData(g,b,c)};break;case "icon":this.markPointCacheImage=new Image;this.markPointCacheImage.width=this._rendererOptions.markPoint.symbolWidth;this.markPointCacheImage.height=this._rendererOptions.markPoint.symbolHeight;this.markPointCacheImage.src=this._rendererOptions.markPoint.symbolSrc;this.markPointCacheImage.onload=function(){a.drawCanvas1()};break;case "sprite":this.markPointCacheCanvasSize=this._rendererOptions.markPoint.symbolMaxSize,this.markPointCacheCanvas=
- document.createElement("canvas"),this.markPointCacheCanvas.width=this.markPointCacheCanvasSize,this.markPointCacheCanvas.height=this.markPointCacheCanvasSize,this.markPointCacheCanvasContext=this.markPointCacheCanvas.getContext("2d"),b=GeoGlobe.Util.getRgbColor(this._rendererOptions.markPoint.itemStyle.color),c=this.markPointCacheCanvasContext.createRadialGradient(this.markPointCacheCanvasSize/2,this.markPointCacheCanvasSize/2,0,this.markPointCacheCanvasSize/2,this.markPointCacheCanvasSize/2,this.markPointCacheCanvasSize/
- 2),c.addColorStop(0.15,this._rendererOptions.markPoint.itemStyle.color),c.addColorStop(0.5,"rgba"+b.slice(3).split(")")[0]+",0.15)"),c.addColorStop(1,"rgba"+b.slice(3).split(")")[0]+",0)"),this.markPointCacheCanvasContext.fillStyle=c,this.markPointCacheCanvasContext.fillRect(0,0,this.markPointCacheCanvasSize,this.markPointCacheCanvasSize)}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvas.push(document.createElement("canvas"));
- this.canvasContext.push(this.canvas[0].getContext("2d"));this.canvasContext.push(this.canvas[1].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.cacheCanvasContext.push(this.cacheCanvas[1].getContext("2d"));this.canvas[0].style.position="absolute";this.canvas[1].style.position="absolute";this.div.appendChild(this.canvas[0]);
- this.div.appendChild(this.canvas[1])},_initTooltip:function(){if((this._rendererOptions.markPoint.hoverable||this._rendererOptions.markPoint.clickable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width="max-content",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,
- this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),
- this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="pre-wrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition="left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},
- render:function(){this._init_RendererOptions();this._initTooltip();this._initMarkPoint();this._initMarkPointExtra();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.drawCanvas1();this.animation=!0;this.frame&&cancelAnimationFrame(this.frame);if(this._rendererOptions.markPoint.effect.show&&this._rendererOptions.markPoint.symbol==="simple"||this._rendererOptions.markPoint.symbol==="bubble"||this._rendererOptions.markPoint.symbol==="circle"||this._rendererOptions.markPoint.symbol===
- "ring"||this._rendererOptions.markPoint.symbol==="fire"||this._rendererOptions.markPoint.symbol==="water"||this._rendererOptions.markPoint.symbol==="ellipse"||this._rendererOptions.markPoint.symbol==="sprite"){var a=this;(function c(){a.frame=requestAnimationFrame(c);(!a.moving||a.dragdrawing&&a.animation)&&a.drawCanvas2();a.animation=!0})()}},onMove:function(){this.moving=!0;this.dragdrawing?(this.cacheCanvas[1].width=this.width,this.animation=!1,this.updateXY(),this.drawCanvas1(),this.drawCanvas2()):
- this._parent.lastCenter?this.moveCanvas():this.clearCanvas()},onMoveEnd:function(){this.moving=!1;this.redraw()},onClick:function(a){this.visibility&&this._rendererOptions.markPoint.clickable&&this.hoveredMarkPoint&&this._parent.fire("overlayerclick",{layer:this,feature:this.hoveredMarkPoint,event:a})},onMouseMove:function(a){this.visibility&&this._rendererOptions.markPoint.hoverable&&this.markPoints.length>0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),this.hoveredMarkPoint&&this._parent.fire("overlayerhover",
- {layer:this,feature:this.hoveredMarkPoint,event:a}))},onResize:function(){this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.canvas[1].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.resetCanvas();this.updateXY();this.drawCanvas1();this.drawCanvas2()},updateXY:function(){for(var a=
- this._parent.getBounds(this._rendererOptions.markPoint.symbolMaxSize/2),b=this.markPoints.length<this._rendererOptions.markPoint.symbolNumber?this.markPoints.length:this._rendererOptions.markPoint.symbolNumber,c;b--;)c=this.markPoints[b],c.lon>=a[0][0]&&c.lon<=a[1][0]&&c.lat>=a[0][1]&&c.lat<=a[1][1]?(c.visible=!0,c.updateXY()):c.visible=!1},drawCanvas1:function(){this.cacheCanvas[0].width=this.width;if(this._rendererOptions.markPoint.symbol==="round")this.cacheCanvasContext[0].globalCompositeOperation=
- "lighter";for(var a=this.markPoints.length<this._rendererOptions.markPoint.symbolNumber?this.markPoints.length:this._rendererOptions.markPoint.symbolNumber,b;a--;)b=this.markPoints[a],b.visible&&b.draw1(this.cacheCanvasContext[0]);this._rendererOptions.markPoint.symbol==="heatmap"&&this.makeItHot(this.cacheCanvasContext[0],0,0,this.width,this.height);this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawCanvas2:function(){this._rendererOptions.markPoint.symbol===
- "bubble"?document.createElement("canvas").getContext?(this.cacheCanvasContext[1].globalCompositeOperation="destination-out",this.cacheCanvasContext[1].fillStyle="rgba(0, 0, 0, 0.1)",this.cacheCanvasContext[1].fillRect(0,0,this.width,this.height),this.cacheCanvasContext[1].globalCompositeOperation="source-over"):this.cacheCanvas[1].width=this.width:this._rendererOptions.markPoint.symbol==="fire"||this._rendererOptions.markPoint.symbol==="sprite"?(this.cacheCanvas[1].width=this.width,this.cacheCanvasContext[1].globalCompositeOperation=
- "lighter"):this.cacheCanvas[1].width=this.width;this.cacheCanvasContext[1].save();for(var a=this.markPoints.length<this._rendererOptions.markPoint.symbolNumber?this.markPoints.length:this._rendererOptions.markPoint.symbolNumber,b;a--;)b=this.markPoints[a],b.visible&&b.draw2(this.cacheCanvasContext[1]);this.canvas[1].width=this.width;this.canvasContext[1].drawImage(this.cacheCanvas[1],0,0)},moveCanvas:function(){this.canvas[0].style.left=this.canvas[1].style.left=this._parent.lastCenterPixel.x-this.width/
- 2+"px";this.canvas[0].style.top=this.canvas[1].style.top=this._parent.lastCenterPixel.y-this.height/2+"px"},resetCanvas:function(){this.canvas[0].style.left=this.canvas[1].style.left=this.canvas[0].style.top=this.canvas[1].style.top=""},clearCanvas:function(){this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);
- this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=[];this.canvasContext=[];this.cacheCanvasContext=[];this._rendererOptions={}},hover:function(a,b){this.hoveredMarkPoint=null;for(var c,d=0,e=this.markPoints.length<this._rendererOptions.markPoint.symbolNumber?this.markPoints.length:this._rendererOptions.markPoint.symbolNumber;d<e;d++)c=this.markPoints[d],!this.hoveredMarkPoint&&c.visible&&c.isPointInPath(this.cacheCanvasContext[0],a,b);this.drawCanvas1();!this._rendererOptions.markPoint.effect.show&&
- this.drawCanvas2();this.hoveredMarkPoint?(this.canvas[1].style.cursor="pointer",this.showTooltip(this.hoveredMarkPoint.name,a,b)):(this.canvas[1].style.cursor="grab",this.hideTooltip())},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+"px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=
- a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.canvas[1].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";a?this.draw():this.stopDraw()},setData:function(a){this.data=a;
- this.minValue=Number.MAX_VALUE;this.maxValue=Number.MIN_VALUE;for(var b=0;b<a.length;b++){if(a[b].properties[this._rendererOptions.markPoint.valueField]<this.minValue)this.minValue=a[b].properties[this._rendererOptions.markPoint.valueField];if(a[b].properties[this._rendererOptions.markPoint.valueField]>this.maxValue)this.maxValue=a[b].properties[this._rendererOptions.markPoint.valueField]}this.maxValue/=this._rendererOptions.markPoint.symbolValueRangeScale;for(var c=[],b=0;b<a.length;b++)c.push(new this.MarkPoint(b,
- a[b].properties[this._rendererOptions.markPoint.nameField],a[b].properties[this._rendererOptions.markPoint.valueField],a[b].geometry.coordinates[0],a[b].geometry.coordinates[1],a[b].properties));this.hoveredMarkPoint=null;this.markPoints=c}});
- GeoGlobe.Visuals.Custom.Migration=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPoint:null,MarkLine:null,markPoints:[],markLines:[],visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_RendererOptions:function(){this._rendererOptions=
- GeoGlobe.Util.deepExtend({},{markLine:{hoverable:!0,curveness:0.6,effect:{color:"#fff",scaleSize:3,period:30},itemStyle:{color:null,width:1,dash:[]}},markPoint:{nameField:"name",valueField:"value",hoverable:!0,symbol:"emptyCircle",symbolMinSize:20,symbolMaxSize:40,effect:{scaleSize:2,period:30},itemStyle:{color:"rgba(255,0,0,0.5)",shadowColor:"#000000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0},label:{show:!0,color:"#fff",align:"center",baseline:"middle",fontFamily:"serif",fontSize:12,fontStyle:"normal",
- fontWeight:"normal"}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},this.rendererOptions)},_initMarkPoint:function(){var a=this,b=this._rendererOptions.markPoint.symbol,c=this._rendererOptions.markPoint.symbolMinSize,d=this._rendererOptions.markPoint.symbolMaxSize,e=this._rendererOptions.markPoint.effect,f=this._rendererOptions.markPoint.itemStyle;if(typeof f.color===
- "object")var g=GeoGlobe.Util.getGradientImageData(f.color);var h=this._rendererOptions.markPoint.label;this.MarkPoint=function(b,e,h,n,o){this.index=b;this.name=e;this.value=h;this.lon=n;this.lat=o;this.init();this.weight=(this.value-a.minValue)/(a.maxValue-a.minValue);if(isNaN(this.weight))this.weight=1;if(this.weight>1)this.weight=1;if(this.weight<0)this.weight=0;this.size=c+(d-c)*this.weight;this.radius=this.size/2;this.color=typeof f.color==="object"?"rgba("+g[parseInt(this.weight*255,10)*4]+
- ","+g[parseInt(this.weight*255,10)*4+1]+","+g[parseInt(this.weight*255,10)*4+2]+","+g[3]/255+")":f.color;this.rgbColor=GeoGlobe.Util.getRgbColor(this.color);this.tmpColor=this.color};this.MarkPoint.prototype.init=function(){switch(b){case "circle":this.energy=[0,1/3,2/3];break;case "ring":this.energy=[0,0.25*e.scaleSize,0.5*e.scaleSize,0.75*e.scaleSize];break;case "emptyCircle":this.energy=0}this.increment=Math.max(0.1*e.scaleSize/e.period+Math.random()*(Math.random()>0.5?1:-1)*0.002,0.001)};this.MarkPoint.prototype.updateXY=
- function(){var b=a._parent.map.project([this.lon,this.lat]);this.x=b.x;this.y=b.y};this.MarkPoint.prototype.update=function(){var a;switch(b){case "circle":for(a=0;a<3;a++)this.energy[a]<1?this.energy[a]+=this.increment:this.energy[a]=0;break;case "ring":for(a=0;a<4;a++)this.energy[a]<e.scaleSize?this.energy[a]+=this.increment:this.energy[a]=0;break;case "emptyCircle":this.energy<e.scaleSize?this.energy+=this.increment:this.energy=0}};this.MarkPoint.prototype.isPointInPath=function(b,c,d){b.beginPath();
- b.arc(this.x,this.y,this.size/2,0,Math.PI*2,!0);if(b.isPointInPath(c,d))a.hoveredMarkPoint=this};this.MarkPoint.prototype.draw1=function(c){a.hoveredMarkPoint===this?(this.radius=this.size/2*1.1,this.color=GeoGlobe.Util.getShadeColor(this.tmpColor,20)):(this.radius=this.size/2,this.color=this.tmpColor);this.rgbColor=GeoGlobe.Util.getRgbColor(this.color);c.shadowColor=f.shadowColor;c.shadowBlur=f.shadowBlur;c.shadowOffsetX=f.shadowOffsetX;c.shadowOffsetY=f.shadowOffsetY;switch(b){case "circle":c.beginPath();
- c.arc(this.x,this.y,this.radius,0,Math.PI*2,!0);c.fillStyle=this.color;c.fill();break;case "emptyCircle":if(a.hoveredMarkPoint===this)c.beginPath(),c.arc(this.x,this.y,this.radius*e.scaleSize/2,0,Math.PI*2,!0),c.lineWidth=Math.round(this.radius/5)<2?2:Math.round(this.radius/5),c.strokeStyle=this.color,c.stroke()}};this.MarkPoint.prototype.draw2=function(a){this.update();var c;switch(b){case "circle":for(c=0;c<3;)a.beginPath(),a.arc(this.x,this.y,this.radius+this.radius*(e.scaleSize-1)*this.energy[c],
- 0,Math.PI*2,!0),a.strokeStyle="rgba"+this.rgbColor.slice(3).split(")")[0]+","+(1-this.energy[c])+")",a.stroke(),c++;break;case "ring":for(c=0;c<4;)a.beginPath(),a.arc(this.x,this.y,this.radius*this.energy[c],0,Math.PI*2,!0),a.fillStyle="rgba"+this.rgbColor.slice(3).split(")")[0]+","+Math.max(1-this.energy[c]/e.scaleSize,0)+")",a.fill(),c++;break;case "emptyCircle":a.beginPath(),a.arc(this.x,this.y,this.radius*this.energy,0,Math.PI*2,!0),a.strokeStyle=this.color,a.stroke()}if(h.show)a.font=h.fontStyle+
- " "+h.fontWeight+" "+h.fontSize+"px "+h.fontFamily,a.textAlign=h.align,a.textBaseline=h.baseline,a.fillStyle=h.color?h.color:this.color,a.fillText(this.value,this.x,this.y)}},_initMarkLine:function(){var a=this,b=this._rendererOptions.markLine.effect,c=this._rendererOptions.markLine.itemStyle;this.MarkLine=function(d,e,f){var g=this;this.index=d;this.start=e;this.end=f;this.color=c.color?c.color:a.direction==="out"?f.color:e.color;this.width=c.width;this.dash=c.dash;this.effect={radius:c.width*b.scaleSize/
- 2,color:b.color,increment:0.1/b.period,init:function(){this.energy=0},update:function(){this.energy<1?(this.energy+=this.increment,a._rendererOptions.markLine.curveness!==0?(this.x=Math.pow(1-this.energy,2)*g.p1.x+2*this.energy*(1-this.energy)*g.cp.x+Math.pow(this.energy,2)*g.p2.x,this.y=Math.pow(1-this.energy,2)*g.p1.y+2*this.energy*(1-this.energy)*g.cp.y+Math.pow(this.energy,2)*g.p2.y):(this.x=g.p1.x+this.energy*(g.p2.x-g.p1.x),this.y=g.p1.y+this.energy*(g.p2.y-g.p1.y))):this.init()},draw:function(a){this.update();
- a.beginPath();a.arc(this.x,this.y,this.radius,0,Math.PI*2,!0);a.fillStyle=this.color;a.fill();a.closePath()}}};this.MarkLine.prototype.updateXY=function(){this.p1=a._parent.map.project([this.start.lon,this.start.lat]);this.p2=a._parent.map.project([this.end.lon,this.end.lat]);a._rendererOptions.markLine.curveness!==0&&this.getControlPoint()};this.MarkLine.prototype.getControlPoint=function(){var b=a._rendererOptions.markLine.curveness/2,c=Math.sqrt(Math.pow(this.p1.x-this.p2.x,2)+Math.pow(this.p1.y-
- this.p2.y,2)),f=c/2/Math.cos(b);this.p1.x===this.p2.x?this.cp=this.p1.y>this.p2.y?{x:this.p1.x-Math.round(f*Math.sin(b)),y:this.p1.y-Math.round(f*Math.cos(b))}:this.p1.y===this.p2.y?{x:this.p1.x,y:this.p1.y}:{x:this.p1.x+Math.round(f*Math.sin(b)),y:this.p1.y+Math.round(f*Math.cos(b))}:this.p1.x<this.p2.x?this.p1.y>this.p2.y?(c=Math.asin((this.p2.x-this.p1.x)/c),this.cp=c<b?{x:this.p1.x-Math.round(f*Math.sin(b-c)),y:this.p1.y-Math.round(f*Math.cos(b-c))}:c===b?{x:this.p1.x,y:this.p1.y-f}:{x:this.p1.x+
- Math.round(f*Math.sin(c-b)),y:this.p1.y-Math.round(f*Math.cos(c-b))}):this.p1.y===this.p2.y?this.cp={x:this.p1.x+Math.round(f*Math.cos(b)),y:this.p1.y-Math.round(f*Math.sin(b))}:(c=Math.PI-Math.asin((this.p2.x-this.p1.x)/c),this.cp=c<Math.PI/2+b?{x:this.p1.x+Math.round(f*Math.cos(b-(c-Math.PI/2))),y:this.p1.y-Math.round(f*Math.sin(b-(c-Math.PI/2)))}:c===Math.PI/2+b?{x:this.p1.x+f,y:this.p1.y}:{x:this.p1.x+Math.round(f*Math.cos(c-Math.PI/2-b)),y:this.p1.y+Math.round(f*Math.sin(c-Math.PI/2-b))}):this.p1.y<
- this.p2.y?(c=Math.PI+Math.asin((this.p1.x-this.p2.x)/c),this.cp=c<Math.PI+b?{x:this.p1.x+Math.round(f*Math.sin(b-(c-Math.PI))),y:this.p1.y+Math.round(f*Math.cos(b-(c-Math.PI)))}:c===Math.PI+b?{x:this.p1.x,y:this.p1.y+f}:{x:this.p1.x-Math.round(f*Math.sin(c-Math.PI-b)),y:this.p1.y+Math.round(f*Math.cos(c-Math.PI-b))}):this.p1.y===this.p2.y?this.cp={x:this.p1.x-Math.round(f*Math.cos(b)),y:this.p1.y+Math.round(f*Math.sin(b))}:(c=Math.PI*3/2+Math.acos((this.p1.x-this.p2.x)/c),this.cp=c<Math.PI*3/2+b?
- {x:this.p1.x-Math.round(f*Math.cos(b-(c-Math.PI*3/2))),y:this.p1.y+Math.round(f*Math.sin(b-(c-Math.PI*3/2)))}:c===Math.PI*3/2+b?{x:this.p1.x-f,y:this.p1.y}:{x:this.p1.x-Math.round(f*Math.cos(c-Math.PI*3/2-b)),y:this.p1.y-Math.round(f*Math.sin(c-Math.PI*3/2-b))})};this.MarkLine.prototype.isPointInStroke=function(b,c,f){b.beginPath();b.moveTo(this.p1.x,this.p1.y);a._rendererOptions.markLine.curveness!==0?b.quadraticCurveTo(this.cp.x,this.cp.y,this.p2.x,this.p2.y):b.lineTo(this.p2.x,this.p2.y);if(b.isPointInStroke(c,
- f))a.hoveredMarkLine=this};this.MarkLine.prototype.draw=function(b){a.hoveredMarkLine===this?(this.color=GeoGlobe.Util.getShadeColor(c.color?c.color:a.direction==="out"?this.end.color:this.start.color,20),this.width=c.width*1.1,this.dash=c.dash.map(function(a){return a*1.1})):(this.color=c.color?c.color:a.direction==="out"?this.end.color:this.start.color,this.dash=c.dash);b.beginPath();b.moveTo(this.p1.x,this.p1.y);a._rendererOptions.markLine.curveness!==0?b.quadraticCurveTo(this.cp.x,this.cp.y,this.p2.x,
- this.p2.y):b.lineTo(this.p2.x,this.p2.y);b.setLineDash(this.dash);b.lineWidth=this.width;b.strokeStyle=this.color;b.stroke()}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvas.push(document.createElement("canvas"));this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.canvasContext.push(this.canvas[1].getContext("2d"));this.canvasContext.push(this.canvas[2].getContext("2d"));
- this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.cacheCanvasContext.push(this.cacheCanvas[1].getContext("2d"));this.cacheCanvasContext.push(this.cacheCanvas[2].getContext("2d"));this.canvas[0].style.position="absolute";this.canvas[1].style.position="absolute";this.canvas[2].style.position=
- "absolute";this.div.appendChild(this.canvas[0]);this.div.appendChild(this.canvas[1]);this.div.appendChild(this.canvas[2])},_initTooltip:function(){if((this._rendererOptions.markLine.hoverable||this._rendererOptions.markPoint.hoverable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width="max-content",
- this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:
- GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="nowrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition=
- "left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},render:function(){this._init_RendererOptions();this._initMarkPoint();this._initMarkLine();this._initTooltip();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.drawCanvas1();this.animation=!0;this.frame&&cancelAnimationFrame(this.frame);var a=this;(function c(){a.frame=requestAnimationFrame(c);a.animation&&a.drawCanvas2();a.animation&&a.drawCanvas3();a.animation=!0})()},onMove:function(){this.cacheCanvas[1].width=
- this.cacheCanvas[2].width=this.width;this.animation=!1;this.updateXY();this.drawCanvas1();this.drawCanvas2();this.drawCanvas3()},onMoveEnd:function(){this.redraw()},onMouseMove:function(a){if(this.visibility&&(this._rendererOptions.markLine.hoverable||this._rendererOptions.markPoint.hoverable)&&this.markPoints.length>0&&!this._parent.map.moving)this.hover(a.point.x,a.point.y),this.hoveredMarkPoint&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkPoint,event:a})},onClick:function(a){this.visibility&&
- this.markPoints.length>0&&!this._parent.map.moving&&this.hoveredMarkPoint&&this._parent.fire("overlayerclick",{layer:this,feature:this.hoveredMarkPoint,event:a})},onResize:function(){this.canvas[0].width=this.canvas[1].width=this.canvas[2].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.cacheCanvas[2].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.canvas[1].height=this.canvas[2].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.cacheCanvas[2].height=
- this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas1();this.drawCanvas2();this.drawCanvas3()},updateXY:function(){for(var a=this.markPoints.length;a--;)this.markPoints[a].updateXY(),this.markLines[a].updateXY()},drawCanvas1:function(){this.cacheCanvas[0].width=this.width;for(var a=this.markLines.length;a--;)this.markLines[a].draw(this.cacheCanvasContext[0]);for(a=this.markPoints.length;a--;)this.markPoints[a].draw1(this.cacheCanvasContext[0]);
- this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawCanvas2:function(){document.createElement("canvas").getContext?(this.cacheCanvasContext[1].globalCompositeOperation="destination-out",this.cacheCanvasContext[1].fillStyle="rgba(0, 0, 0, 0.05)",this.cacheCanvasContext[1].fillRect(0,0,this.width,this.height),this.cacheCanvasContext[1].globalCompositeOperation="source-over"):this.cacheCanvas[1].width=this.width;this.cacheCanvasContext[1].save();for(var a=this.markLines.length;a--;)this.markLines[a].effect.draw(this.cacheCanvasContext[1]);
- this.cacheCanvasContext[1].restore();this.canvas[1].width=this.width;this.canvasContext[1].drawImage(this.cacheCanvas[1],0,0)},drawCanvas3:function(){this._rendererOptions.markPoint.symbol==="emptyCircle"?document.createElement("canvas").getContext?(this.cacheCanvasContext[2].globalCompositeOperation="destination-out",this.cacheCanvasContext[2].fillStyle="rgba(0, 0, 0, 0.05)",this.cacheCanvasContext[2].fillRect(0,0,this.width,this.height),this.cacheCanvasContext[2].globalCompositeOperation="source-over"):
- this.cacheCanvas[2].width=this.width:this._rendererOptions.markPoint.symbol==="ring"?(this.cacheCanvas[2].width=this.width,this.cacheCanvasContext[2].globalCompositeOperation="lighter"):this.cacheCanvas[2].width=this.width;this.cacheCanvasContext[2].save();for(var a=this.markPoints.length;a--;)this.markPoints[a].draw2(this.cacheCanvasContext[2]);this.cacheCanvasContext[2].restore();this.canvas[2].width=this.width;this.canvasContext[2].drawImage(this.cacheCanvas[2],0,0)},clearCanvas:function(){this.canvas[0].width=
- this.canvas[1].width=this.canvas[2].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.cacheCanvas[2].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=[];this.canvasContext=[];this.cacheCanvasContext=[];this._rendererOptions={}},hover:function(a,b){this.hoveredMarkLine=null;this.lastHoveredMarkPoint=
- this.hoveredMarkPoint?GeoGlobe.Util.clone(this.hoveredMarkPoint):null;this.hoveredMarkPoint=null;var c,d;c=0;for(d=this.markLines.length;c<d;c++)!this.hoveredMarkLine&&this.markLines[c].isPointInStroke(this.cacheCanvasContext[0],a,b);c=0;for(d=this.markPoints.length;c<d;c++)!this.hoveredMarkPoint&&this.markPoints[c].isPointInPath(this.cacheCanvasContext[0],a,b);this.drawCanvas1();this.hoveredMarkLine||this.hoveredMarkPoint?(this.showTooltip(this.hoveredMarkLine?this.hoveredMarkLine.start.name+" > "+
- this.hoveredMarkLine.end.name:this.hoveredMarkPoint.name,a,b),this.canvas[2].style.cursor="pointer"):(this.hideTooltip(),this.canvas[2].style.cursor="grab")},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+"px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);
- this._parent.container.appendChild(this.div);this.canvas[0].width=this.canvas[1].width=this.canvas[2].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.cacheCanvas[2].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.canvas[1].height=this.canvas[2].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.cacheCanvas[2].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";
- a?this.draw():this.stopDraw()},setData:function(a){this.data=a;this.minValue=Number.MAX_VALUE;this.maxValue=Number.MIN_VALUE;for(var b=0;b<a.length;b++){if(a[b].properties[this._rendererOptions.markPoint.valueField]<this.minValue)this.minValue=a[b].properties[this._rendererOptions.markPoint.valueField];if(a[b].properties[this._rendererOptions.markPoint.valueField]>this.maxValue)this.maxValue=a[b].properties[this._rendererOptions.markPoint.valueField]}for(var c=new this.MarkPoint(void 0,this.location.name,
- 0,this.location.lonLat[0],this.location.lonLat[1]),d=[],e=[],b=0;b<a.length;b++)d.push(new this.MarkPoint(b,a[b].properties[this._rendererOptions.markPoint.nameField],a[b].properties[this._rendererOptions.markPoint.valueField],a[b].geometry.coordinates[0],a[b].geometry.coordinates[1])),e.push(this.direction==="out"?new this.MarkLine(b,c,d[b]):new this.MarkLine(b,d[b],c));this.hoveredMarkLine=this.hoveredMarkPoint=null;this.markPoints=d;this.markLines=e}});
- GeoGlobe.Visuals.Custom.Commute=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPoint:null,MarkLine:null,markPoints:[],markLines:{items:[],option:{}},visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_RendererOptions:function(){this._rendererOptions=
- GeoGlobe.Util.deepExtend({},{markLine:{effect:{color:"rgba(255,255,255,0.7)",scaleSize:60,period:15},itemStyle:{color:"rgba(255,58,53,0.9)",width:0.1}},markPoint:{hoverable:!0,symbolSize:30,effect:{scaleSize:2,period:15},itemStyle:{color:"rgba(255,255,255,0.7)"}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},this.rendererOptions)},_initMarkPoint:function(){var a=
- this,b=this._rendererOptions.markPoint.symbolSize,c=this._rendererOptions.markPoint.effect,d=this._rendererOptions.markPoint.itemStyle;this.MarkPoint=function(a,c,g,h){this.index=a;this.name=c;this.lon=g;this.lat=h;this.init();this.radius=b/2;this.color=d.color;this.rgbColor=GeoGlobe.Util.getRgbColor(d.color)};this.MarkPoint.prototype.init=function(){this.energy=0;this.increment=0.1*c.scaleSize/c.period+Math.random()*(Math.random()>0.5?1:-1)*0.002};this.MarkPoint.prototype.updateXY=function(){var b=
- a._parent.map.project([this.lon,this.lat]);this.x=b.x;this.y=b.y};this.MarkPoint.prototype.update=function(){this.energy<c.scaleSize?this.energy+=this.increment:this.energy=0};this.MarkPoint.prototype.isPointInPath=function(b,c,d){b.beginPath();b.arc(this.x,this.y,this.radius,0,Math.PI*2,!0);if(b.isPointInPath(c,d))a.hoveredMarkPoint=this};this.MarkPoint.prototype.draw=function(b){this.update();b.beginPath();b.arc(this.x,this.y,this.radius*this.energy,0,Math.PI*2,!0);b.globalAlpha=1;b.strokeStyle=
- this.color;b.stroke();if(a.hoveredMarkPoint===this)b.beginPath(),b.arc(this.x,this.y,this.radius*c.scaleSize/2,0,Math.PI*2,!0),b.lineWidth=Math.round(this.radius/5)<2?2:Math.round(this.radius/5),b.strokeStyle=this.color,b.globalAlpha=0.1,b.stroke()}},_initMarkLine:function(){var a=this,b=this._rendererOptions.markLine.effect,c=this._rendererOptions.markLine.itemStyle;this.MarkLine=function(d,e){this.index=d;this.points=e;if(d<~~(a.markLines.option.linesNumber/10)){var f=this;this.effect={radius:c.width*
- b.scaleSize/2,color:b.color,pointIndex:~~(Math.random()*this.points.length),update:function(){a.markLines.option.factor===1?(this.pointIndex+=a.markLines.option.lineIncrement+0.1,this.pointIndex>f.points.length-1&&(this.pointIndex=0)):(this.pointIndex-=a.markLines.option.lineIncrement-0.1,this.pointIndex<0&&(this.pointIndex=f.points.length-1));this.pointIndex=Math.round(this.pointIndex)},draw:function(b){this.update();b.beginPath();d<~~(a.markLines.option.linesNumber/200)?b.arc(f.points[this.pointIndex].x,
- f.points[this.pointIndex].y,this.radius,0,Math.PI*2,!0):b.rect(f.points[this.pointIndex].x-1,f.points[this.pointIndex].y-1,2,2);b.fillStyle=this.color;b.fill()}}}};this.MarkLine.prototype.updateXY=function(){for(var b=0;b<this.points.length;b++){var c=a._parent.map.project([this.points[b].lon,this.points[b].lat]);this.points[b].x=c.x;this.points[b].y=c.y}};this.MarkLine.prototype.path=function(a,b){a>this.points.length&&(a=this.points.length);for(var c=0;c<a;c++)c===0?b.moveTo(this.points[0].x,this.points[0].y):
- b.lineTo(this.points[c].x,this.points[c].y)}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.canvasContext.push(this.canvas[1].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));
- this.cacheCanvasContext.push(this.cacheCanvas[1].getContext("2d"));this.canvas[0].style.position="absolute";this.canvas[1].style.position="absolute";this.div.appendChild(this.canvas[0]);this.div.appendChild(this.canvas[1])},_initTooltip:function(){if(this._rendererOptions.markPoint.hoverable&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=
- 999,this.tooltipDiv.style.width="max-content",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?
- this._rendererOptions.tooltip.backgroundColor:GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="nowrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",
- this.tooltipDiv.style.transition="left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},render:function(){this._init_RendererOptions();this._initTooltip();this._initMarkPoint();this._initMarkLine();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.animation=!0;this.frame&&cancelAnimationFrame(this.frame);var a=this;(function c(){a.frame=requestAnimationFrame(c);a.animation&&a.drawCanvas1();a.animation&&a.drawCanvas2();a.animation=!0})()},onMove:function(){this.animation=
- !1;this.updateXY();this.drawCanvas1();this.drawCanvas2()},onMoveEnd:function(){this.redraw()},onMouseMove:function(a){this.visibility&&this._rendererOptions.markPoint.hoverable&&this.markPoints.length>0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),this.hoveredMarkPoint&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkPoint,event:a}))},onResize:function(){this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width=this._parent.map.transform.width;
- this.canvas[0].height=this.canvas[1].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas1();this.drawCanvas2()},updateXY:function(){for(var a=this.markLines.items.length;a--;)this.markLines.items[a].updateXY();for(a=this.markPoints.length;a--;)this.markPoints[a].updateXY()},drawCanvas1:function(){this.cacheCanvas[0].width=this.width;this.cacheCanvasContext[0].globalCompositeOperation=
- "lighter";var a,b,c=this.markLines.items,d=this.markLines.option;if(c.length>0){this.cacheCanvasContext[0].beginPath();switch(d.step){case 1:d.lineLength+=d.lineIncrement+0.1;a=0;for(b=~~(d.linesNumber*2/3);a<b;a++)c[a].path(Math.round(d.lineLength),this.cacheCanvasContext[0]);d.lineLength>d.linePointsNumber-1&&(d.factor=1,d.lineLength=0,d.step=2);break;case 2:a=0;for(b=~~(d.linesNumber*2/3);a<b;a++)c[a].path(d.linePointsNumber,this.cacheCanvasContext[0]);d.lineLength+=d.lineIncrement+0.1;a=~~(d.linesNumber*
- 2/3);for(b=d.linesNumber;a<b;a++)c[a].path(Math.round(d.lineLength),this.cacheCanvasContext[0]);d.lineLength>d.linePointsNumber-1&&(d.factor=-1,d.lineLength=d.linePointsNumber-1,d.step=3);break;case 3:a=0;for(b=~~(d.linesNumber*2/3);a<b;a++)c[a].path(d.linePointsNumber,this.cacheCanvasContext[0]);d.lineLength-=d.lineIncrement-0.1;a=~~(d.linesNumber*2/3);for(b=d.linesNumber;a<b;a++)c[a].path(Math.round(d.lineLength),this.cacheCanvasContext[0]);d.lineLength<0&&(d.factor=-1,d.lineLength=d.linePointsNumber-
- 1,d.step=4);break;case 4:d.lineLength-=d.lineIncrement-0.1;a=0;for(b=~~(d.linesNumber*2/3);a<b;a++)c[a].path(Math.round(d.lineLength),this.cacheCanvasContext[0]);d.lineLength<0&&(d.factor=1,d.lineLength=0,d.step=1)}this.cacheCanvasContext[0].lineWidth=this._rendererOptions.markLine.itemStyle.width;this.cacheCanvasContext[0].strokeStyle=this._rendererOptions.markLine.itemStyle.color;this.cacheCanvasContext[0].stroke();a=~~(this.markLines.option.linesNumber/200);for(b=~~(this.markLines.option.linesNumber/
- 10);a<b;a++)this.markLines.items[a].effect.draw(this.cacheCanvasContext[0])}this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawCanvas2:function(){document.createElement("canvas").getContext?(this.cacheCanvasContext[1].globalCompositeOperation="destination-out",this.cacheCanvasContext[1].fillStyle="rgba(0, 0, 0, 0.05)",this.cacheCanvasContext[1].fillRect(0,0,this.width,this.height),this.cacheCanvasContext[1].globalCompositeOperation="source-over"):this.cacheCanvas[1].width=
- this.width;this.cacheCanvasContext[1].save();if(this.markLines.items.length>0)for(var a=0;a<~~(this.markLines.option.linesNumber/200);a++)this.markLines.items[a].effect.draw(this.cacheCanvasContext[1]);for(a=this.markPoints.length;a--;)this.markPoints[a].draw(this.cacheCanvasContext[1]);this.cacheCanvasContext[1].restore();this.canvas[1].width=this.width;this.canvasContext[1].drawImage(this.cacheCanvas[1],0,0)},clearCanvas:function(){this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=
- this.cacheCanvas[1].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=[];this.canvasContext=[];this.cacheCanvasContext=[];this._rendererOptions={}},hover:function(a,b){this.hoveredMarkPoint=null;this.cacheCanvasContext[1].save();for(var c=0,d=this.markPoints.length;c<d;c++)!this.hoveredMarkPoint&&
- this.markPoints[c].isPointInPath(this.cacheCanvasContext[1],a,b);this.cacheCanvasContext[1].restore();this.hoveredMarkPoint?(this.canvas[1].style.cursor="pointer",this.showTooltip(this.hoveredMarkPoint.name,a,b)):(this.canvas[1].style.cursor="grab",this.hideTooltip())},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+"px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display=
- "none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.canvas[1].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";a?this.draw():this.stopDraw()},
- setData:function(a){this.data=a;this.markLines.option={step:1,factor:1,linesNumber:a.length,linePointsNumber:a[0].geometry.coordinates.length,lineLength:0,lineIncrement:10/this._rendererOptions.markLine.effect.period};for(var b=0;b<a.length;b++){for(var c=[],d=0;d<a[b].geometry.coordinates.length;d++)c.push({lon:a[b].geometry.coordinates[d][0],lat:a[b].geometry.coordinates[d][1]});this.markLines.items.push(new this.MarkLine(b,c))}b=a[a.length-1].geometry.coordinates[a[a.length-1].geometry.coordinates.length-
- 1];this.markPoints.push(new this.MarkPoint(0,a[a.length-1].properties.name||"\u7ec8\u70b9",b[0],b[1]))}});
- GeoGlobe.Visuals.Custom.Scatter=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPointsSet:null,markPointsSets:[],legendLabels:[],visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas();this._blobURL=this._worker=null},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_Legend:function(){this._legend=
- GeoGlobe.Util.deepExtend({},{show:!0,left:null,right:null,top:null,bottom:null,col:1,itemSize:10,itemColors:[],itemStatuses:[],backgroundColor:"rgba(0,0,0,0.5)",borderColor:"#000",borderWidth:1,borderRadius:0,shadowColor:"#fff",shadowBlur:5,shadowOffsetX:0,shadowOffsetY:0,padding:10,textStyle:{color:"#fff",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}},this.legend)},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({},{markPoint:{unactivatedDrawable:!0,
- symbol:"square",symbolSize:2,itemStyle:{color:"rgba(255,0,0,0.7)",shadowColor:"#000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}}},this.rendererOptions)},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.canvas[0].style.position=
- "absolute";this.div.appendChild(this.canvas[0])},_initMarkPointsSet:function(a){var b=a._legend.itemColors,c=a._legend.itemStatuses,d=a._rendererOptions.markPoint.unactivatedDrawable,e=a._rendererOptions.markPoint.symbol,f=a._rendererOptions.markPoint.symbolSize,g=a._rendererOptions.markPoint.itemStyle,h=function(c,d,e){this.legendLabel=c;this.markPoints=d;for(c=d.length;c--;){d[c].weight=(d[c].value-a.minValue)/(a.maxValue-a.minValue);if(isNaN(d[c].weight))d[c].weight=1;if(d[c].weight>1)d[c].weight=
- 1;if(d[c].weight<0)d[c].weight=0;if(GeoGlobe.Util.getType(a._rendererOptions.markPoint.itemStyle.color[e])==="object")a.gradientImageData=GeoGlobe.Util.getGradientImageData(a._rendererOptions.markPoint.itemStyle.color[e]);d[c].color=GeoGlobe.Util.getType(g.color[e])==="object"?"rgba("+a.gradientImageData[~~(d[c].weight*255+0.5)*4]+","+a.gradientImageData[~~(d[c].weight*255+0.5)*4+1]+","+a.gradientImageData[~~(d[c].weight*255+0.5)*4+2]+","+a.gradientImageData[3]/255+")":b[e]}};h.prototype.updateXY=
- function(){for(var b=this.markPoints.length;b--;)if(a._parent.map){var c=a._parent.map.project([this.markPoints[b].lon,this.markPoints[b].lat]);this.markPoints[b].x=c.x;this.markPoints[b].y=c.y}};h.prototype.draw=function(a,b){if(d||c[b]!==0){var g=[],n=function(a){for(var b=0;b<g.length;b++)if(parseInt(g[b].x)===parseInt(a.x)&&parseInt(g[b].y)===parseInt(a.y))return g[b];return null},h=function(){a.fillStyle=k.color;a.beginPath();switch(e){case "square":a.globalCompositeOperation="lighter";a.rect(k.x-
- f/2,k.y-f/2,f,f);break;case "square2":a.rect(k.x-f/2,k.y-f/2,f,f);break;case "round":a.globalCompositeOperation="lighter",a.arc(k.x,k.y,f/2,0,Math.PI*2,!1)}a.fill()},v=this.markPoints.length;for(this.markPoints=this.markPoints.sort(function(a,b){var c=a.value,d=b.value;return c>d?-1:c<d?1:0});v--;){var k;k=this.markPoints[v];if(e==="square2"){var p=n(k);if(p){if(k.value>p.value)h(),p.value=k.value}else h(),g.push({x:k.x,y:k.y,value:k.value})}else h()}}};return h},render:function(){this._init_Legend();
- this._init_RendererOptions();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.drawCanvas();this.frame&&cancelAnimationFrame(this.frame)},lazydraw:function(){var a=this;(function c(){if(a.DRAWINDEX<a.legendLabels.length)requestAnimationFrame(c),a.drawLegend(a.DRAWINDEX),a.markPointsSets[a.DRAWINDEX].draw(a.cacheCanvasContext[0],a.DRAWINDEX),a.canvas[0].width=a.width,a.canvasContext[0].drawImage(a.cacheCanvas[0],0,0),a.DRAWINDEX++})()},onMove:function(){this.updateXY();this.drawCanvas()},
- onMoveEnd:function(){this.redraw()},onResize:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas()},updateXY:function(){for(var a=this.markPointsSets.length;a--;)this.markPointsSets[a].updateXY()},drawCanvas:function(){this.cacheCanvas[0].width=this.width;for(var a=0,b=this.markPointsSets.length;a<
- b;a++)this.markPointsSets[a].draw(this.cacheCanvasContext[0],a);this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawLegend:function(a){if(this._legend&&this._legend.show){if(!this.legendDiv)this.legendDiv=document.createElement("div"),this.legendDiv.style.position="absolute",this.legendDiv.style["background-color"]=this._legend.backgroundColor,this.legendDiv.style["border-color"]=this._legend.borderColor,this.legendDiv.style["border-width"]=this._legend.borderWidth+
- "px",this.legendDiv.style["border-radius"]=this._legend.borderRadius+"px",this.legendDiv.style["border-style"]="solid",this.legendDiv.style["box-shadow"]=this._legend.shadowOffsetX+"px "+this._legend.shadowOffsetY+"px "+this._legend.shadowBlur+"px "+this._legend.shadowColor,this.legendDiv.style.padding=this._legend.padding+"px",this.legendDiv.style.left=this._legend.left!==null?this._legend.left+"px":null,this.legendDiv.style.right=this._legend.right!==null?this._legend.right+"px":null,this.legendDiv.style.top=
- this._legend.top!==null?this._legend.top+"px":null,this.legendDiv.style.bottom=this._legend.bottom!==null?this._legend.bottom+"px":null,this.legendCanvas=document.createElement("canvas"),this.legendCanvasContext=this.legendCanvas.getContext("2d"),this.legendCanvas.style.display="block",this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily,this.legendDiv.appendChild(this.legendCanvas),
- this.div.appendChild(this.legendDiv);for(var b=[],c=null,d=0,e=this.legendLabels.length;d<e;d++)for(var c=this._legend.itemSize+10+this.legendCanvasContext.measureText(this.legendLabels[d].toString()).width,f=this._legend.col,g=0;g<f;g++)d%this._legend.col===g&&(!b[g]||b[g]<c)&&(b[g]=c);for(var h=10,c=10,d=0,e=b.length;d<e;d++)h+=b[d]+10;c+=((this._legend.itemSize<this._legend.textStyle.fontSize?this._legend.textStyle.fontSize:this._legend.itemSize)+10)*(~~(this.legendLabels.length/this._legend.col)+
- (this.legendLabels.length%this._legend.col===0?0:1));this.legendCanvas.width=h;this.legendCanvas.height=c;var j=function(a,c,d,e){this.legendCanvas.width=h;for(var f=!1,g,j,u=0,a=a!==void 0?a+1:this.legendLabels.length;u<a;u++){j=0;for(var s=this._legend.col;j<s;j++)if(u%this._legend.col===j){g=10+this._legend.itemSize/2;for(var q=0;q<j;q++)g+=b[q]+10}j=10+this._legend.itemSize/2+((this._legend.itemSize<this._legend.textStyle.fontSize?this._legend.textStyle.fontSize:this._legend.itemSize)+10)*~~(u/
- this._legend.col);q=s=!1;this.legendCanvasContext.beginPath();switch(this._rendererOptions.markPoint.symbol){case "square":this.legendCanvasContext.rect(g-this._legend.itemSize/2,j-this._legend.itemSize/2,this._legend.itemSize,this._legend.itemSize);break;case "square2":this.legendCanvasContext.rect(g-this._legend.itemSize/2,j-this._legend.itemSize/2,this._legend.itemSize,this._legend.itemSize);break;case "round":this.legendCanvasContext.arc(g,j,this._legend.itemSize/2,0,Math.PI*2,!1)}c==="mousemove"&&
- d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,e)&&(f=s=!0);c==="mousedown"&&d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,e)&&(q=!0);this.legendCanvasContext.beginPath();this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily;this.legendCanvasContext.rect(g+this._legend.itemSize/2+10,j-this._legend.textStyle.fontSize/2,this.legendCanvasContext.measureText(this.legendLabels[u].toString()).width,
- this._legend.textStyle.fontSize);c==="mousemove"&&d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,e)&&(f=s=!0);c==="mousedown"&&d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,e)&&(q=!0);q&&(this._legend.itemStatuses[u]=this._legend.itemStatuses[u]===0?1:0,this.drawCanvas());var r=this._legend.itemStatuses[u]===0?"#808080":this._legend.itemColors[u]?this._legend.itemColors[u]:this._rendererOptions.markPoint.itemStyle.color,t=this._legend.itemStatuses[u]===0?"#808080":
- this._legend.textStyle.color,r=s||q?GeoGlobe.Util.getShadeColor(r,20):r,t=s||q?GeoGlobe.Util.getShadeColor(t,20):t;this.legendCanvasContext.beginPath();switch(this._rendererOptions.markPoint.symbol){case "square":this.legendCanvasContext.rect(g-this._legend.itemSize/2,j-this._legend.itemSize/2,this._legend.itemSize,this._legend.itemSize);break;case "square2":this.legendCanvasContext.rect(g-this._legend.itemSize/2,j-this._legend.itemSize/2,this._legend.itemSize,this._legend.itemSize);break;case "round":this.legendCanvasContext.arc(g,
- j,this._legend.itemSize/2,0,Math.PI*2,!1)}this.legendCanvasContext.fillStyle=r;this.legendCanvasContext.fill();this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily;this.legendCanvasContext.textAlign="left";this.legendCanvasContext.textBaseline="middle";this.legendCanvasContext.fillStyle=t;this.legendCanvasContext.fillText(this.legendLabels[u],g+this._legend.itemSize/2+10,j)}this.legendCanvas.style.cursor=
- f?"pointer":"default"}.bind(this);this.legendCanvas.onmousedown=function(a){var b=a.offsetX||a.clientX-(a.target||a.srcElement).getBoundingClientRect().left,c=a.offsetY||a.clientY-(a.target||a.srcElement).getBoundingClientRect().top;j(void 0,a.type,b,c)};this.legendCanvas.onmousemove=function(a){var b=a.offsetX||a.clientX-(a.target||a.srcElement).getBoundingClientRect().left,c=a.offsetY||a.clientY-(a.target||a.srcElement).getBoundingClientRect().top;j(void 0,a.type,b,c)};j(a)}},clearCanvas:function(){this.canvas[0].width=
- this.cacheCanvas[0].width=0},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=[];this.canvasContext=[];this.cacheCanvasContext=[];this._rendererOptions={};if(this._worker)this._worker.terminate(),this._worker.onmessage=null,delete this._worker;this._blobURL&&window.URL.revokeObjectURL(this._blobURL)},addTo:function(a){this._parent=
- a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";this.legendDiv&&(this.legendDiv.style.display=a?"block":"none");a?this.draw():this.stopDraw()},setData:function(a){this.data=a;this.minValue=Number.MAX_VALUE;
- this.maxValue=Number.MIN_VALUE;for(var b=0;b<a.length;b++){if(a[b].properties.value<this.minValue)this.minValue=a[b].properties.value;if(a[b].properties.value>this.maxValue)this.maxValue=a[b].properties.value}var a=new Blob(["function MarkPoint(lon, lat, value) {this.lon = lon;this.lat = lat;this.value = value;}function MarkPointsSet(legendLabel) {this.legendLabel = legendLabel;this.markPoints = [];}var legendLabels = [];var markPointsSets = [];onmessage = function (evt) {var features = evt.data.data;var feature = null;var legendLabel = null;for (var i = 0, len = features.length; i < len; i++) {feature = features[i];legendLabel = feature.properties.type;if (legendLabels.indexOf(legendLabel) === -1) {legendLabels.push(legendLabel);markPointsSets.push(new MarkPointsSet(legendLabel));}markPointsSets[legendLabels.indexOf(legendLabel)].markPoints.push(new MarkPoint(feature.geometry.coordinates[0], feature.geometry.coordinates[1],feature.properties.value));}postMessage({legendLabels: legendLabels,markPointsSets: markPointsSets})}"]),
- a=window.URL.createObjectURL(a),b=new Worker(a),c=this,d=_initMarkPointsSet(c);b.onmessage=function(a){c.legendLabels=a.data.legendLabels;c.markPointsSets=[];for(var b=0,g=a.data.markPointsSets.length;b<g;b++){var h=new d(a.data.markPointsSets[b].legendLabel,a.data.markPointsSets[b].markPoints,b);h.updateXY();c.markPointsSets.push(h)}c.DRAWINDEX=0;c.lazydraw()};b.postMessage({data:this.data});this._blobURL=a;this._worker=b}});
- GeoGlobe.Visuals.Custom.Proportion=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPoint:null,markPoints:[],visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_Legend:function(){this._legend=GeoGlobe.Util.deepExtend({},
- {show:!0,left:null,right:null,top:null,bottom:null,col:1,itemWidth:20,itemHeight:12,itemColors:[],itemStatuses:[],hLegendLabels:[],vLegendLabels:[],backgroundColor:"rgba(0,0,0,0.5)",borderColor:"#000",borderWidth:1,borderRadius:0,shadowColor:"#fff",shadowBlur:5,shadowOffsetX:0,shadowOffsetY:0,padding:10,textStyle:{color:"#fff",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}},this.legend)},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({},{markPoint:{hoverable:!0,
- clickable:!0,slope:0.8,symbol:"column",symbolMinSize:0,symbolMaxSize:100,symbolWidth:10,symbolThickness:5,symbolGap:5,opacity:1,itemStyle:{color:"rgba(255,0,0,0.7)",shadowColor:"#000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},this.rendererOptions)},_initMarkPoint:function(){var a=this,b=this._legend.itemColors,
- c=this._legend.itemStatuses,d=this._rendererOptions.markPoint.symbol,e=this._rendererOptions.markPoint.symbolMinSize,f=this._rendererOptions.markPoint.symbolMaxSize,g=this._rendererOptions.markPoint.symbolWidth,h=this._rendererOptions.markPoint.symbolThickness,j=this._rendererOptions.markPoint.symbolGap,l=this._rendererOptions.markPoint.opacity,m=this._rendererOptions.markPoint.itemStyle;this.MarkPoint=function(a,b,c,e,f){this.id=a;this.name=b;this.measureValues=c;this.lon=e;this.lat=f;this.init();
- if(d==="pie"){var g=this;this.Point=function(a,b,c){this.x=a;this.y=b;this.z=c;this.get2d=function(){var a=5E4/(5E4+this.z);return{x:g.x+this.x*a,y:g.y+this.y*a}}}}};this.MarkPoint.prototype.init=function(){this.energy=0;switch(d){case "column":this.velocity=0.1;break;case "pie":this.velocity=0.05}};this.MarkPoint.prototype.updateXY=function(){var b=a._parent.map.project([this.lon,this.lat]);this.x=b.x;this.y=b.y};this.MarkPoint.prototype.updateSize=function(){var b,g;this.parts=[];for(b=0;b<this.measureValues.length;b++){this.parts.push({size:(f-
- e)*(a.measureValueMaxSum===a.measureValueMinSum?1:(this.measureValueSums[b]-a.measureValueMinSum)/(a.measureValueMaxSum-a.measureValueMinSum))+e});switch(d){case "column":this.parts[b].cubes=[];break;case "pie":this.parts[b].sectors=[]}for(g=0;g<this.measureValues[b].length;g++)switch(d){case "column":this.parts[b].cubes.push({height:c[g]===0||this.measureValueSums[b]===0?0:this.measureValues[b][g]/this.measureValueSums[b]*this.parts[b].size});break;case "pie":this.parts[b].sectors.push({angle:c[g]===
- 0||this.measureValueSums[b]===0?0:this.measureValues[b][g]/this.measureValueSums[b]*Math.PI*2})}}};this.MarkPoint.prototype.updatePartXY=function(){var b=a._rendererOptions.markPoint.slope,c,e,f;switch(d){case "column":var m,l;m=this.parts.length%2===0?this.x-h*Math.cos(b)/2-(this.parts.length/2-1)*g-(this.parts.length/2-0.5)*j:this.x+(g-h*Math.cos(b))/2-(this.parts.length-1)/2*g-(this.parts.length-1)/2*j;l=this.y+h*Math.sin(b)/2;for(c=0;c<this.parts.length;c++)for(e=0;e<this.parts[c].cubes.length;e++){var s=
- 0;for(f=e;f>0;f--)s+=this.parts[c].cubes[f-1].height;this.parts[c].cubes[e].vertexs=[[m+c*(g+j),l-s],[m+c*(g+j)+h*Math.cos(b),l-h*Math.sin(b)-s],[m+c*(g+j)+h*Math.cos(b)-g,l-h*Math.sin(b)-s],[m+c*(g+j)-g,l-s]]}break;case "pie":var q,r,t,x,A,B=Math.PI*2/50;for(c=0;c<1;c++){f=this.parts[c].size/2;m=f>g?f-g:0;s=new this.Point(0,0,-h/2);q=new this.Point(0,0,h/2);r=[];t=[];x=[];A=[];for(l=0;l<=Math.PI*2;)r.push(new this.Point(f*Math.cos(l),f*Math.sin(l),-h/2)),t.push(new this.Point(f*Math.cos(l),f*Math.sin(l),
- h/2)),m>0&&(x.push(new this.Point(m*Math.cos(l),m*Math.sin(l),-h/2)),A.push(new this.Point(m*Math.cos(l),m*Math.sin(l),h/2))),l+=B;r.push(new this.Point(f,0,-h/2));t.push(new this.Point(f,0,h/2));m>0&&(x.push(new this.Point(m,0,-h/2)),A.push(new this.Point(m,0,h/2)));e=Math.cos(b);var z=Math.sin(b),y;l=s.y*e-s.z*z;y=s.z*e+s.y*z;s.y=l;s.z=y;l=q.y*e-q.z*z;y=q.z*e+q.y*z;q.y=l;q.z=y;for(f=0;f<50;f++)if(l=r[f].y*e-r[f].z*z,y=r[f].z*e+r[f].y*z,r[f].y=l,r[f].z=y,l=t[f].y*e-t[f].z*z,y=t[f].z*e+t[f].y*z,t[f].y=
- l,t[f].z=y,m>0)l=x[f].y*e-x[f].z*z,y=x[f].z*e+x[f].y*z,x[f].y=l,x[f].z=y,l=A[f].y*e-A[f].z*z,y=A[f].z*e+A[f].y*z,A[f].y=l,A[f].z=y;for(e=0;e<this.parts[c].sectors.length;e++){l=this.parts[c].sectors[e].angle;z=0;for(f=e;f>0;f--)z+=this.parts[c].sectors[f-1].angle;f=z+l;this.parts[c].sectors[e].startIndex=e===0?Math.round(z/B):this.parts[c].sectors[e-1].endIndex;this.parts[c].sectors[e].endIndex=Math.round(f/B)}this.parts[c].uCentrePoint=s;this.parts[c].tCentrePoint=q;this.parts[c].oUnderPoints=r;
- this.parts[c].oTopPoints=t;if(m>0)this.parts[c].iUnderPoints=x,this.parts[c].iTopPoints=A}}};this.MarkPoint.prototype.update=function(){this.energy+=this.velocity;this.energy>1&&(this.energy=1);a.DRAWDONE=this.energy===1};this.MarkPoint.prototype.isPointInPath=function(c,e,f){var h,j,l;switch(d){case "column":for(h=0;h<this.parts.length;h++)for(j=0;j<this.parts[h].cubes.length;j++)if(this.parts[h].cubes[j].height>0&&(c.beginPath(),c.moveTo(this.parts[h].cubes[j].vertexs[0][0],this.parts[h].cubes[j].vertexs[0][1]),
- c.lineTo(this.parts[h].cubes[j].vertexs[1][0],this.parts[h].cubes[j].vertexs[1][1]),c.lineTo(this.parts[h].cubes[j].vertexs[1][0],this.parts[h].cubes[j].vertexs[1][1]-this.parts[h].cubes[j].height),c.lineTo(this.parts[h].cubes[j].vertexs[3][0],this.parts[h].cubes[j].vertexs[3][1]-this.parts[h].cubes[j].height),c.lineTo(this.parts[h].cubes[j].vertexs[3][0],this.parts[h].cubes[j].vertexs[3][1]),c.isPointInPath(e,f))){a.hoveredMarkPoint=this;this.hActive=h;this.vActive=j;return}break;case "pie":for(h=
- 0;h<1;h++){var s=this.parts[h].tCentrePoint,q=this.parts[h].oUnderPoints,r=this.parts[h].oTopPoints,t=this.parts[h].iUnderPoints,x=this.parts[h].iTopPoints,A=!1;this.parts[h].size/2>g&&(A=!0);var B=Math.round(25),z=[],y=[],w=[];l=[];for(j=0;j<this.parts[h].sectors.length;j++)z.push(this.parts[h].sectors[j].angle),y.push(this.parts[h].sectors[j].startIndex),w.push(Math.round(this.parts[h].sectors[j].endIndex*this.energy)),l.push(b[j]?b[j]:m.color);for(j=z.length-1;j>=0;j--)if(z[j]>0){c.beginPath();
- if(y[j]>B){c.moveTo(r[w[j]].get2d().x,r[w[j]].get2d().y);for(l=w[j]-1;l>=y[j];l--)c.lineTo(r[l].get2d().x,r[l].get2d().y);if(A){c.lineTo(x[y[j]].get2d().x,x[y[j]].get2d().y);for(l=y[j];l<=w[j];l++)c.lineTo(t[l].get2d().x,t[l].get2d().y);c.lineTo(x[w[j]].get2d().x,x[w[j]].get2d().y)}else c.lineTo(s.get2d().x,s.get2d().y)}else if(w[j]<B){c.moveTo(q[w[j]].get2d().x,q[w[j]].get2d().y);for(l=w[j]-1;l>=y[j];l--)c.lineTo(q[l].get2d().x,q[l].get2d().y);c.lineTo(r[y[j]].get2d().x,r[y[j]].get2d().y);if(A)for(l=
- y[j];l<=w[j];l++)c.lineTo(x[l].get2d().x,x[l].get2d().y);else c.lineTo(s.get2d().x,s.get2d().y);c.lineTo(r[w[j]].get2d().x,r[w[j]].get2d().y)}else{c.moveTo(r[w[j]].get2d().x,r[w[j]].get2d().y);for(l=w[j]-1;l>=B;l--)c.lineTo(r[l].get2d().x,r[l].get2d().y);for(l=B;l>=y[j];l--)c.lineTo(q[l].get2d().x,q[l].get2d().y);c.lineTo(r[y[j]].get2d().x,r[y[j]].get2d().y);if(A){for(l=y[j];l<=B;l++)c.lineTo(x[l].get2d().x,x[l].get2d().y);for(l=B;l<=w[j];l++)c.lineTo(t[l].get2d().x,t[l].get2d().y)}else c.lineTo(s.get2d().x,
- s.get2d().y)}if(c.isPointInPath(e,f)){a.hoveredMarkPoint=this;this.hActive=h;this.vActive=j;return}}}}};this.MarkPoint.prototype.draw=function(c){var e=a._rendererOptions.markPoint.slope;this.update();var f,k,p;p=!1;var u;switch(d){case "column":for(f=0;f<this.parts.length;f++)for(k=0;k<this.parts[f].cubes.length;k++)if(this.parts[f].cubes[k].height>0&&(p=!0,u=b[k]?b[k]:m.color,a.hoveredMarkPoint===this&&f===this.hActive&&k===this.vActive&&(u=GeoGlobe.Util.getShadeColor(u,20)),c.globalAlpha=l,c.globalCompositeOperation=
- "source-over",c.shadowBlur=0,c.shadowOffsetX=0,c.shadowOffsetY=0,c.beginPath(),c.moveTo(this.parts[f].cubes[k].vertexs[0][0],this.parts[f].cubes[k].vertexs[0][1]),c.lineTo(this.parts[f].cubes[k].vertexs[0][0],this.parts[f].cubes[k].vertexs[0][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[3][0],this.parts[f].cubes[k].vertexs[3][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[3][0],this.parts[f].cubes[k].vertexs[3][1]),c.closePath(),
- c.fillStyle=u,c.fill(),h!==0))c.beginPath(),c.moveTo(this.parts[f].cubes[k].vertexs[0][0],this.parts[f].cubes[k].vertexs[0][1]),c.lineTo(this.parts[f].cubes[k].vertexs[1][0],this.parts[f].cubes[k].vertexs[1][1]),c.lineTo(this.parts[f].cubes[k].vertexs[1][0],this.parts[f].cubes[k].vertexs[1][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[0][0],this.parts[f].cubes[k].vertexs[0][1]-this.parts[f].cubes[k].height*this.energy),c.closePath(),c.fillStyle=GeoGlobe.Util.getShadeColor(u,
- -40),c.fill(),c.beginPath(),c.moveTo(this.parts[f].cubes[k].vertexs[0][0],this.parts[f].cubes[k].vertexs[0][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[1][0],this.parts[f].cubes[k].vertexs[1][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[2][0],this.parts[f].cubes[k].vertexs[2][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[3][0],this.parts[f].cubes[k].vertexs[3][1]-this.parts[f].cubes[k].height*
- this.energy),c.closePath(),c.fillStyle=GeoGlobe.Util.getShadeColor(u,-20),c.fill(),c.shadowColor=m.shadowColor,c.shadowBlur=m.shadowBlur,c.shadowOffsetX=m.shadowOffsetX,c.shadowOffsetY=m.shadowOffsetY,c.globalCompositeOperation="destination-over",c.beginPath(),c.moveTo(this.parts[f].cubes[k].vertexs[1][0],this.parts[f].cubes[k].vertexs[1][1]),c.lineTo(this.parts[f].cubes[k].vertexs[1][0],this.parts[f].cubes[k].vertexs[1][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[2][0],
- this.parts[f].cubes[k].vertexs[2][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[2][0],this.parts[f].cubes[k].vertexs[2][1]),c.closePath(),c.fillStyle=u,c.fill(),c.beginPath(),c.moveTo(this.parts[f].cubes[k].vertexs[2][0],this.parts[f].cubes[k].vertexs[2][1]),c.lineTo(this.parts[f].cubes[k].vertexs[2][0],this.parts[f].cubes[k].vertexs[2][1]-this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[3][0],this.parts[f].cubes[k].vertexs[3][1]-
- this.parts[f].cubes[k].height*this.energy),c.lineTo(this.parts[f].cubes[k].vertexs[3][0],this.parts[f].cubes[k].vertexs[3][1]),c.closePath(),c.fillStyle=GeoGlobe.Util.getShadeColor(u,-40),c.fill(),c.beginPath(),c.moveTo(this.parts[f].cubes[k].vertexs[0][0],this.parts[f].cubes[k].vertexs[0][1]),c.lineTo(this.parts[f].cubes[k].vertexs[1][0],this.parts[f].cubes[k].vertexs[1][1]),c.lineTo(this.parts[f].cubes[k].vertexs[2][0],this.parts[f].cubes[k].vertexs[2][1]),c.lineTo(this.parts[f].cubes[k].vertexs[3][0],
- this.parts[f].cubes[k].vertexs[3][1]),c.closePath(),c.fillStyle=GeoGlobe.Util.getShadeColor(u,-20),c.fill();if(p)c.lineWidth=0.3,c.globalAlpha=1,c.globalCompositeOperation="destination-over",c.shadowBlur=0,c.shadowOffsetX=0,c.shadowOffsetY=0,c.strokeStyle="#fff",c.beginPath(),c.moveTo(this.x-this.parts.length/2*g-(this.parts.length/2-0.5)*j-5,this.y),c.lineTo(this.x+this.parts.length/2*g+(this.parts.length/2-0.5)*j+5,this.y),c.closePath(),c.stroke(),h!==0&&(c.beginPath(),c.moveTo(this.x-(h/2+5)*Math.cos(e),
- this.y+(h/2+5)*Math.sin(e)),c.lineTo(this.x+(h/2+5)*Math.cos(e),this.y-(h/2+5)*Math.sin(e)),c.closePath(),c.stroke());break;case "pie":c.globalAlpha=l;for(f=0;f<1;f++){u=this.parts[f].uCentrePoint;var s=this.parts[f].tCentrePoint,q=this.parts[f].oUnderPoints,r=this.parts[f].oTopPoints,t=this.parts[f].iUnderPoints,x=this.parts[f].iTopPoints,A=!1;this.parts[f].size/2>g&&(A=!0);var B=Math.round(25),z=[],y=[],w=[],D=[];for(k=0;k<this.parts[f].sectors.length;k++)z.push(this.parts[f].sectors[k].angle),
- y.push(this.parts[f].sectors[k].startIndex),w.push(Math.round(this.parts[f].sectors[k].endIndex*this.energy)),D.push(b[k]?b[k]:m.color);for(k=z.length-1;k>=0;k--)z[k]>0&&a.hoveredMarkPoint===this&&f===this.hActive&&k===this.vActive&&(D[k]=GeoGlobe.Util.getShadeColor(D[k],10));for(k=z.length-1;k>=0;k--)if(z[k]>0){c.globalCompositeOperation="destination-over";c.beginPath();c.moveTo(q[w[k]].get2d().x,q[w[k]].get2d().y);for(p=w[k]-1;p>=y[k];p--)c.lineTo(q[p].get2d().x,q[p].get2d().y);if(A)for(p=y[k];p<=
- w[k];p++)c.lineTo(t[p].get2d().x,t[p].get2d().y);else c.lineTo(u.get2d().x,u.get2d().y);c.fillStyle=D[k];c.fill()}if(e!==0){for(k=z.length-1;k>=0;k--)if(z[k]>0)c.globalCompositeOperation="source-over",c.beginPath(),c.moveTo(q[w[k]].get2d().x,q[w[k]].get2d().y),A?(c.lineTo(t[w[k]].get2d().x,t[w[k]].get2d().y),c.lineTo(x[w[k]].get2d().x,x[w[k]].get2d().y)):(c.lineTo(u.get2d().x,u.get2d().y),c.lineTo(s.get2d().x,s.get2d().y)),c.lineTo(r[w[k]].get2d().x,r[w[k]].get2d().y),c.moveTo(q[y[k]].get2d().x,q[y[k]].get2d().y),
- A?(c.lineTo(t[y[k]].get2d().x,t[y[k]].get2d().y),c.lineTo(x[y[k]].get2d().x,x[y[k]].get2d().y)):(c.lineTo(u.get2d().x,u.get2d().y),c.lineTo(s.get2d().x,s.get2d().y)),c.lineTo(r[y[k]].get2d().x,r[y[k]].get2d().y),c.fillStyle=GeoGlobe.Util.getShadeColor(D[k],-20),c.fill();if(A)for(k=z.length-1;k>=0;k--)if(z[k]>0){c.globalCompositeOperation="source-over";c.beginPath();c.moveTo(t[w[k]].get2d().x,t[w[k]].get2d().y);if(y[k]<B&&w[k]>B){for(p=w[k]-1;p>=B;p--)c.lineTo(t[p].get2d().x,t[p].get2d().y);for(p=
- B;p<=w[k];p++)c.lineTo(x[p].get2d().x,x[p].get2d().y);c.moveTo(t[y[k]].get2d().x,t[y[k]].get2d().y);for(p=y[k]+1;p<=B;p++)c.lineTo(t[p].get2d().x,t[p].get2d().y);for(p=B;p>=y[k];p--)c.lineTo(x[p].get2d().x,x[p].get2d().y)}else{for(p=w[k]-1;p>=y[k];p--)c.lineTo(t[p].get2d().x,t[p].get2d().y);for(p=y[k];p<=w[k];p++)c.lineTo(x[p].get2d().x,x[p].get2d().y)}c.fillStyle=GeoGlobe.Util.getShadeColor(D[k],-20);c.fill()}for(k=z.length-1;k>=0;k--)if(z[k]>0){if(y[k]<B&&w[k]>B){c.globalCompositeOperation="destination-over";
- c.beginPath();c.moveTo(q[w[k]].get2d().x,q[w[k]].get2d().y);for(p=w[k]-1;p>=B;p--)c.lineTo(q[p].get2d().x,q[p].get2d().y);for(p=B;p<=w[k];p++)c.lineTo(r[p].get2d().x,r[p].get2d().y);c.fillStyle=GeoGlobe.Util.getShadeColor(D[k],-20);c.fill();c.globalCompositeOperation="source-over";c.beginPath();c.moveTo(q[y[k]].get2d().x,q[y[k]].get2d().y);for(p=y[k]+1;p<=B;p++)c.lineTo(q[p].get2d().x,q[p].get2d().y);for(p=B;p>=y[k];p--)c.lineTo(r[p].get2d().x,r[p].get2d().y)}else{c.globalCompositeOperation="source-over";
- c.beginPath();c.moveTo(q[w[k]].get2d().x,q[w[k]].get2d().y);for(p=w[k]-1;p>=y[k];p--)c.lineTo(q[p].get2d().x,q[p].get2d().y);for(p=y[k];p<=w[k];p++)c.lineTo(r[p].get2d().x,r[p].get2d().y)}c.fillStyle=GeoGlobe.Util.getShadeColor(D[k],-20);c.fill()}for(k=z.length-1;k>=0;k--)if(z[k]>0){c.globalCompositeOperation="source-over";c.beginPath();c.moveTo(r[w[k]].get2d().x,r[w[k]].get2d().y);for(p=w[k]-1;p>=y[k];p--)c.lineTo(r[p].get2d().x,r[p].get2d().y);if(A)for(p=y[k];p<=w[k];p++)c.lineTo(x[p].get2d().x,
- x[p].get2d().y);else c.lineTo(s.get2d().x,s.get2d().y);c.fillStyle=D[k];c.fill()}}}}}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.canvas[0].style.position="absolute";this.div.appendChild(this.canvas[0])},
- _initTooltip:function(){if((this._rendererOptions.markPoint.hoverable||this._rendererOptions.markPoint.clickable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width="max-content",this.tooltipDiv.style.width=this._rendererOptions.tooltip.width+"px",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,
- this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding.toString().split(" ").join("px ")+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),
- this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="nowrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition="left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)",
- this.tooltipDiv.innerHTML='<h3 style="opacity:0.9;margin:0;padding-bottom:8px;border-bottom:1px solid '+this._rendererOptions.tooltip.textStyle.color+';overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"><span></span><span style="float: right;"></span></h3><ul style="list-style-type:none;opacity:0.8;margin:0;padding:6px 18px 0 0;"></ul>'},render:function(){this._init_Legend();this._init_RendererOptions();this._initMarkPoint();this._initTooltip();this.setData(this.data);this.draw()},draw:function(){this.updateCountValueMinMaxSum();
- this.updateXY();this.drawCanvas();this.drawLegend();this.frame&&cancelAnimationFrame(this.frame);var a=this;(function c(){a.frame=requestAnimationFrame(c);!a.DRAWDONE&&a.drawCanvas()})()},onMove:function(){this._rendererOptions.markPoint.slope=this._parent.map.getPitch()*Math.PI/180;this.updateXY();this.drawCanvas()},onMoveEnd:function(){this.redraw()},onClick:function(a){this.visibility&&this._rendererOptions.markPoint.clickable&&this.hoveredMarkPoint&&this._parent.fire("overlayerclick",{layer:this,
- feature:this.hoveredMarkPoint,event:a})},onMouseMove:function(a){this.visibility&&this._rendererOptions.markPoint.hoverable&&this.markPoints.length>0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),this.hoveredMarkPoint&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkPoint,event:a}))},onResize:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height;
- this.redraw()},redraw:function(){this.clearCanvas();this.updateCountValueMinMaxSum();this.updateXY();this.drawCanvas();this.drawLegend()},updateXY:function(){for(var a=this.markPoints.length;a--;)this.SWITCH&&this.markPoints[a].init(),!this.SWITCH&&this.markPoints[a].updateXY(),this.markPoints[a].updateSize(),this.markPoints[a].updatePartXY();this.SWITCH=!1},drawCanvas:function(){this.cacheCanvas[0].width=this.width;for(var a=this.markPoints.length;a--;)this.markPoints[a].draw(this.cacheCanvasContext[0]);
- this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawLegend:function(){if(this._legend&&this._legend.show){if(!this.legendDiv)this.legendDiv=document.createElement("div"),this.legendDiv.style.position="absolute",this.legendDiv.style["background-color"]=this._legend.backgroundColor,this.legendDiv.style["border-color"]=this._legend.borderColor,this.legendDiv.style["border-width"]=this._legend.borderWidth+"px",this.legendDiv.style["border-radius"]=this._legend.borderRadius+
- "px",this.legendDiv.style["border-style"]="solid",this.legendDiv.style["box-shadow"]=this._legend.shadowOffsetX+"px "+this._legend.shadowOffsetY+"px "+this._legend.shadowBlur+"px "+this._legend.shadowColor,this.legendDiv.style.padding=this._legend.padding+"px",this.legendDiv.style.left=this._legend.left!==null?this._legend.left+"px":null,this.legendDiv.style.right=this._legend.right!==null?this._legend.right+"px":null,this.legendDiv.style.top=this._legend.top!==null?this._legend.top+"px":null,this.legendDiv.style.bottom=
- this._legend.bottom!==null?this._legend.bottom+"px":null,this.legendCanvas=document.createElement("canvas"),this.legendCanvasContext=this.legendCanvas.getContext("2d"),this.legendCanvas.style.display="block",this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily,this.legendDiv.appendChild(this.legendCanvas),this.div.appendChild(this.legendDiv);for(var a=[],b=null,c=0,d=this._legend.vLegendLabels.length;c<
- d;c++)for(var b=this._legend.itemWidth+10+this.legendCanvasContext.measureText(this._legend.vLegendLabels[c].toString()).width,e=this._legend.col,f=0;f<e;f++)c%this._legend.col===f&&(!a[f]||a[f]<b)&&(a[f]=b);for(var g=10,b=10,c=0,d=a.length;c<d;c++)g+=a[c]+10;b+=((this._legend.itemHeight<this._legend.textStyle.fontSize?this._legend.textStyle.fontSize:this._legend.itemHeight)+10)*(~~(this._legend.vLegendLabels.length/this._legend.col)+(this._legend.vLegendLabels.length%this._legend.col===0?0:1));this.legendCanvas.width=
- g;this.legendCanvas.height=b;var h=function(b,c,d){this.legendCanvas.width=g;for(var e=!1,f,h,k=0,p=this._legend.vLegendLabels.length;k<p;k++){h=0;for(var u=this._legend.col;h<u;h++)if(k%this._legend.col===h){f=10+this._legend.itemWidth/2;for(var s=0;s<h;s++)f+=a[s]+10}h=10+this._legend.itemHeight/2+((this._legend.itemHeight<this._legend.textStyle.fontSize?this._legend.textStyle.fontSize:this._legend.itemHeight)+10)*~~(k/this._legend.col);s=u=!1;this.legendCanvasContext.beginPath();this.legendCanvasContext.rect(f-
- this._legend.itemWidth/2,h-this._legend.itemHeight/2,this._legend.itemWidth,this._legend.itemHeight);b==="mousemove"&&c!==void 0&&d!==void 0&&this.legendCanvasContext.isPointInPath(c,d)&&(e=u=!0);b==="mousedown"&&c!==void 0&&d!==void 0&&this.legendCanvasContext.isPointInPath(c,d)&&(s=!0);this.legendCanvasContext.beginPath();this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily;
- this.legendCanvasContext.rect(f+this._legend.itemWidth/2+10,h-this._legend.textStyle.fontSize/2,this.legendCanvasContext.measureText(this._legend.vLegendLabels[k].toString()).width,this._legend.textStyle.fontSize);b==="mousemove"&&c!==void 0&&d!==void 0&&this.legendCanvasContext.isPointInPath(c,d)&&(e=u=!0);b==="mousedown"&&c!==void 0&&d!==void 0&&this.legendCanvasContext.isPointInPath(c,d)&&(s=!0);if(s)this._legend.itemStatuses[k]=this._legend.itemStatuses[k]===0?1:0,this.SWITCH=!0,this.redraw();
- var q=this._legend.itemStatuses[k]===0?"#808080":this._legend.itemColors[k]?this._legend.itemColors[k]:this._rendererOptions.markPoint.itemStyle.color,r=this._legend.itemStatuses[k]===0?"#808080":this._legend.textStyle.color,q=u||s?GeoGlobe.Util.getShadeColor(q,20):q,r=u||s?GeoGlobe.Util.getShadeColor(r,20):r;this.legendCanvasContext.beginPath();this.legendCanvasContext.rect(f-this._legend.itemWidth/2,h-this._legend.itemHeight/2,this._legend.itemWidth,this._legend.itemHeight);this.legendCanvasContext.fillStyle=
- q;this.legendCanvasContext.fill();this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily;this.legendCanvasContext.textAlign="left";this.legendCanvasContext.textBaseline="middle";this.legendCanvasContext.fillStyle=r;this.legendCanvasContext.fillText(this._legend.vLegendLabels[k],f+this._legend.itemWidth/2+10,h)}this.legendCanvas.style.cursor=e?"pointer":"default"}.bind(this);this.legendCanvas.onmousedown=
- function(a){var b=a.offsetX||a.clientX-(a.target||a.srcElement).getBoundingClientRect().left,c=a.offsetY||a.clientY-(a.target||a.srcElement).getBoundingClientRect().top;h(a.type,b,c)};this.legendCanvas.onmousemove=function(a){var b=a.offsetX||a.clientX-(a.target||a.srcElement).getBoundingClientRect().left,c=a.offsetY||a.clientY-(a.target||a.srcElement).getBoundingClientRect().top;h(a.type,b,c)};h()}},updateCountValueMinMaxSum:function(){this.measureValueMinSum=Infinity;this.measureValueMaxSum=-Infinity;
- var a,b,c,d,e,f,g;a=0;for(d=this.markPoints.length;a<d;a++){this.markPoints[a].measureValueSums=[];b=0;for(e=this.markPoints[a].measureValues.length;b<e;b++){c=g=0;for(f=this.markPoints[a].measureValues[b].length;c<f;c++)this._legend.itemStatuses[c]!==0&&(g+=this.markPoints[a].measureValues[b][c]);this.markPoints[a].measureValueSums.push(g);g<this.measureValueMinSum&&(this.measureValueMinSum=g);g>this.measureValueMaxSum&&(this.measureValueMaxSum=g)}}},clearCanvas:function(){this.canvas[0].width=this.cacheCanvas[0].width=
- this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=[];this.canvasContext=[];this.cacheCanvasContext=[];this._rendererOptions={}},hover:function(a,b){this.lastHoveredMarkPoint=this.hoveredMarkPoint?GeoGlobe.Util.clone(this.hoveredMarkPoint):null;this.hoveredMarkPoint=null;for(var c=0,d=this.markPoints.length;c<
- d;c++)!this.hoveredMarkPoint&&this.markPoints[c].isPointInPath(this.cacheCanvasContext[0],a,b);this.drawCanvas();this.hoveredMarkPoint?(this.canvas[0].style.cursor="pointer",this.showTooltip(this.hoveredMarkPoint,a,b)):(this.canvas[0].style.cursor="grab",this.hideTooltip())},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show){this.tooltipDiv.getElementsByTagName("span")[0].textContent=this._legend.hLegendLabels[a.hActive];this.tooltipDiv.getElementsByTagName("span")[1].textContent=
- a.name;var d=this.tooltipDiv.getElementsByTagName("ul")[0];d.innerHTML="";for(var e=0;e<this._legend.vLegendLabels.length;e++)this._legend.itemStatuses[e]!==0&&(d.innerHTML+='<li style="line-height:20px;'+(e===a.vActive?"":"opacity:0.6;")+'"><div style="width: 12px;height: 12px;margin: 5px 5px 0 0;float: left;background-color: '+(this._legend.itemColors[e]?this._legend.itemColors[e]:this._rendererOptions.markPoint.itemStyle.color)+';"></div><span style="font-weight: 600;">'+this._legend.vLegendLabels[e]+
- "\uff1a</span><span>"+this._rendererOptions.tooltip.formatter.replace("{0}",a.measureValues[a.hActive][e])+"</span></li>");this.tooltipDiv.style.top=c-15+"px";this.tooltipDiv.style.left=b+15+"px";this.tooltipDiv.style.display="block"}},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;
- this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";this.legendDiv&&(this.legendDiv.style.display=a?"block":"none");a?this.draw():this.stopDraw()},setData:function(a){this.data=a;for(var b=[],c=0;c<a.length;c++){for(var d=[],e=0;e<this._legend.hLegendLabels.length;e++){d[e]=[];for(var f=0;f<this._legend.vLegendLabels.length;f++)d[e][f]=Number(a[c].properties[this._legend.hLegendLabels[e]][this._legend.vLegendLabels[f]]||
- 0)}b.push(new this.MarkPoint(c,a[c].properties.name,d,a[c].geometry.coordinates[0],a[c].geometry.coordinates[1]))}this.markPoints=b}});
- GeoGlobe.Visuals.Custom.Voronoi=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkFace:null,markFaces:[],visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({},
- {markFace:{nameField:"name",valueField:"value",hoverable:!0,clickable:!0,itemStyle:{color:"rgba(255,0,0,0)",borderColor:"#000",borderWidth:1,shadowColor:"#000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},this.rendererOptions)},_initMarkFace:function(){var a=this,b=this._rendererOptions.markFace.itemStyle;
- if(typeof b.color==="object"){var c=GeoGlobe.Util.getGradientImageData(b.color),d=1,e;for(e in b.color)b.color.hasOwnProperty(e)&&Number(e)>d&&(d=Number(e))}this.MarkFace=function(e,g,h,j,l,m){this.index=e;this.name=g;this.value=h;this.lon=j;this.lat=l;this.polygons=m;this.vertices=[];this.weight=d===1?(this.value-a.minValue)/(a.maxValue-a.minValue):h>d?1:h/d;this.color=typeof b.color==="object"?"rgba("+c[parseInt(this.weight*255,10)*4]+","+c[parseInt(this.weight*255,10)*4+1]+","+c[parseInt(this.weight*
- 255,10)*4+2]+","+c[3]/255+")":b.color};this.MarkFace.prototype.updateXY=function(){var b=a._parent.map.project([this.lon,this.lat]);this.x=b.x;this.y=b.y;var c;this.vertices=[];this.polygons.map(function(d){d.geometry.coordinates.map(function(e){c=[];(d.geometry.type==="MultiPolygon"?e[0]:e).map(function(d){b=a._parent.map.project(d);c.push([b.x,b.y])});this.vertices.push(c)}.bind(this))}.bind(this))};this.MarkFace.prototype.isPointInPath=function(b,c,d){b.beginPath();this.vertices.map(function(a){b.moveTo(a[0][0],
- a[0][1]);a.map(function(a){b.lineTo(a[0],a[1])})});b.closePath();if(b.isPointInPath(c,d))a.hoveredMarkFace=this};this.MarkFace.prototype.draw=function(c){c.shadowColor=b.shadowColor;c.shadowBlur=b.shadowBlur;c.shadowOffsetX=b.shadowOffsetX;c.shadowOffsetY=b.shadowOffsetY;c.beginPath();this.vertices.map(function(a){c.moveTo(a[0][0],a[0][1]);a.map(function(a){c.lineTo(a[0],a[1])})});c.closePath();c.fillStyle=a.hoveredMarkFace===this?GeoGlobe.Util.getShadeColor(this.color,20):this.color;c.strokeStyle=
- b.borderColor;c.lineWidth=b.borderWidth;c.stroke();c.fill()}},_initBounds:function(){var a=this,b=new XMLHttpRequest;b.open("GET",this.boundsURL,!0);b.responseType="json";b.onload=function(){switch(this.response.features[0].geometry.type){case "Polygon":a.bounds=this.response.features;break;case "MultiPolygon":a.bounds=[];for(var b=this.response.features[0].geometry.coordinates,d=0;d<b.length;d++)a.bounds.push(turf.polygon(b[d]))}};b.send()},_initCanvas:function(){this.canvas=[];this.canvasContext=
- [];this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.canvas[0].style.position="absolute";this.div.appendChild(this.canvas[0])},_initTooltip:function(){if((this._rendererOptions.markFace.hoverable||this._rendererOptions.markFace.clickable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=
- this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width="max-content",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+
- " "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=
- this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="nowrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition="left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},render:function(){this._init_RendererOptions();this._initTooltip();this._initMarkFace();this._initBounds();this.setData(this.data);this.draw()},draw:function(){this.updateXY();
- this.drawCanvas();this.frame&&cancelAnimationFrame(this.frame)},onMove:function(){this.updateXY();this.drawCanvas()},onMoveEnd:function(){this.redraw()},onClick:function(a){this.visibility&&this._rendererOptions.markFace.clickable&&this.hoveredMarkFace&&this._parent.fire("overlayerclick",{layer:this,feature:this.hoveredMarkFace,event:a})},onMouseMove:function(a){this.visibility&&this._rendererOptions.markFace.hoverable&&this.markFaces.length>0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),
- this.hoveredMarkFace&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkFace,event:a}))},onResize:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas()},updateXY:function(){for(var a=this.markFaces.length;a--;)this.markFaces[a].updateXY()},drawCanvas:function(){this.cacheCanvas[0].width=
- this.width;for(var a=this.markFaces.length;a--;)this.markFaces[a].draw(this.cacheCanvasContext[0]);this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},clearCanvas:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=
- [];this.canvasContext=[];this.cacheCanvasContext=[];this._rendererOptions={}},hover:function(a,b){this.lastHoveredMarkFace=this.hoveredMarkFace?GeoGlobe.Util.clone(this.hoveredMarkFace):null;this.hoveredMarkFace=null;for(var c=0,d=this.markFaces.length;c<d;c++)!this.hoveredMarkFace&&this.markFaces[c].isPointInPath(this.cacheCanvasContext[0],a,b);this.drawCanvas();this.hoveredMarkFace?(this.canvas[0].style.cursor="pointer",this.showTooltip(this.hoveredMarkFace.name,a,b)):(this.canvas[0].style.cursor=
- "grab",this.hideTooltip())},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+"px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;
- this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";a?this.draw():this.stopDraw()},getVoronoi:function(a){a=GeoGlobe.Util.clone(a);a.features.map(function(a){a.geometry.coordinates=GeoGlobe.Util.transferToMercator(a.geometry.coordinates)});a=turf.voronoi(a,{bbox:GeoGlobe.Util.transferToMercator([-180,-90]).concat(GeoGlobe.Util.transferToMercator([180,90]))});a=GeoGlobe.Util.clone(a);
- a.features.map(function(a){a.geometry.coordinates[0].map(function(c,d){a.geometry.coordinates[0][d]=GeoGlobe.Util.transferToLonLat(c)})});return a},setData:function(a){this.data=a;this.minValue=Number.MAX_VALUE;this.maxValue=Number.MIN_VALUE;for(var b=0;b<a.length;b++){if(a[b].properties[this._rendererOptions.markFace.valueField]<this.minValue)this.minValue=a[b].properties[this._rendererOptions.markFace.valueField];if(a[b].properties[this._rendererOptions.markFace.valueField]>this.maxValue)this.maxValue=
- a[b].properties[this._rendererOptions.markFace.valueField]}var c=this,d=setInterval(function(){if(c.bounds){clearInterval(d);c.markFaces=[];c.hoveredMarkFace=null;for(var b=c.getVoronoi({type:"FeatureCollection",features:a}).features,f=c.bounds,g,h,j=0;j<b.length;j++){g=[];for(var l=0;l<f.length;l++)try{(h=turf.intersect(b[j],f[l]))&&g.push(h)}catch(m){}c.markFaces.push(new c.MarkFace(j,a[j].properties[c._rendererOptions.markFace.nameField],a[j].properties[c._rendererOptions.markFace.valueField],
- a[j].geometry.coordinates[0],a[j].geometry.coordinates[1],g))}c.redraw()}},1)}});
- GeoGlobe.Visuals.Custom.Delaunay=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkFace:null,markFaces:[],visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({},
- {markFace:{hoverable:!0,clickable:!0,itemStyle:{color:"rgba(255,0,0,0.5)",borderColor:"#000",borderWidth:1,shadowColor:"#000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},this.rendererOptions)},_initMarkFace:function(){var a=this,b=this._rendererOptions.markFace.itemStyle;if(typeof b.color==="object")var c=
- GeoGlobe.Util.getGradientImageData(b.color);this.MarkFace=function(a,e,f,g){this.index=a;this.count=e;this.attributes=f;this.triangle=g;this.vertices=[];this.color=typeof b.color==="object"?"rgba("+c[parseInt(e*255,10)*4]+","+c[parseInt(e*255,10)*4+1]+","+c[parseInt(e*255,10)*4+2]+","+c[3]/255+")":b.color};this.MarkFace.prototype.updateXY=function(){for(var b=4;b--;){var c=a._parent.map.project(this.triangle.geometry.coordinates[0][b]);this.x=c.x;this.y=c.y;this.vertices[b]=[this.x,this.y]}};this.MarkFace.prototype.isPointInPath=
- function(b,c,f){b.beginPath();b.moveTo(this.vertices[3][0],this.vertices[3][1]);for(var g=3;g--;)b.lineTo(this.vertices[g][0],this.vertices[g][1]);b.closePath();if(b.isPointInPath(c,f))a.hoveredMarkFace=this};this.MarkFace.prototype.draw=function(c){c.shadowColor=b.shadowColor;c.shadowBlur=b.shadowBlur;c.shadowOffsetX=b.shadowOffsetX;c.shadowOffsetY=b.shadowOffsetY;c.beginPath();c.moveTo(this.vertices[3][0],this.vertices[3][1]);for(var e=3;e--;)c.lineTo(this.vertices[e][0],this.vertices[e][1]);c.closePath();
- c.fillStyle=a.hoveredMarkFace===this?GeoGlobe.Util.getShadeColor(this.color,20):this.color;c.strokeStyle=b.borderColor;c.lineWidth=b.borderWidth;c.stroke();c.fill();c.beginPath();c.arc(this.x,this.y,1,0,Math.PI*2,!1);c.fillStyle="#fff";c.fill()}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));
- this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.canvas[0].style.position="absolute";this.div.appendChild(this.canvas[0])},_initTooltip:function(){if((this._rendererOptions.markFace.hoverable||this._rendererOptions.markFace.clickable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width=
- "max-content",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:
- GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="nowrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition=
- "left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},render:function(){this._init_RendererOptions();this._initMarkFace();this._initTooltip();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.drawCanvas();this.frame&&cancelAnimationFrame(this.frame)},onMove:function(){this.updateXY();this.drawCanvas()},onMoveEnd:function(){this.redraw()},onClick:function(a){this.visibility&&this._rendererOptions.markFace.clickable&&this.hoveredMarkFace&&this._parent.fire("overlayerclick",
- {layer:this,feature:this.hoveredMarkFace,event:a})},onMouseMove:function(a){this.visibility&&this._rendererOptions.markFace.hoverable&&this.markFaces.length>0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),this.hoveredMarkFace&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkFace,event:a}))},onResize:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width=this.parentMap.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this.parentMap.height;
- this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas()},updateXY:function(){for(var a=this.markFaces.length;a--;)this.markFaces[a].updateXY()},clearCanvas:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=[];this.canvasContext=
- [];this.cacheCanvasContext=[];this._rendererOptions={}},hover:function(a,b){this.lastHoveredMarkFace=this.hoveredMarkFace?GeoGlobe.Util.clone(this.hoveredMarkFace,!1):null;this.hoveredMarkFace=null;for(var c=0,d=this.markFaces.length;c<d;c++)!this.hoveredMarkFace&&this.markFaces[c].isPointInPath(this.cacheCanvasContext[0],a,b);this.drawCanvas();this.hoveredMarkFace?(this.canvas[0].style.cursor="pointer",this.showTooltip("["+this.hoveredMarkFace.attributes.a+","+this.hoveredMarkFace.attributes.b+","+
- this.hoveredMarkFace.attributes.c+"]",a,b)):(this.canvas[0].style.cursor="grab",this.hideTooltip())},drawCanvas:function(){this.cacheCanvas[0].width=this.width;for(var a=this.markFaces.length;a--;)this.markFaces[a].draw(this.cacheCanvasContext[0]);this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+
- "px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?
- "block":"none";a?this.draw():this.stopDraw()},setData:function(a){this.data=a;var b=this,c=setInterval(function(){clearInterval(c);b.markFaces=[];b.hoveredMarkFace=null;var d,e;e=turf.tin({type:"FeatureCollection",features:a},"name");for(var f=0;f<e.features.length;f++)d=e.features[f],b.markFaces.push(new b.MarkFace(f,Math.random(),d.properties,d));b.redraw()},1)}});
- GeoGlobe.Visuals.Custom.Network=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPoint:null,MarkLine:null,markPoints:[],markLines:[],visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_RendererOptions:function(){this._rendererOptions=
- GeoGlobe.Util.deepExtend({},{markLine:{hoverable:!0,itemStyle:{color:"#0095ff",width:2}},markPoint:{hoverable:!0,itemStyle:{images:["../../images/symbol/00.png","../../images/symbol/01.png","../../images/symbol/02.png","../../images/symbol/03.png"],shadowColor:"#000000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},
- this.rendererOptions)},_initMarkPointImages:function(){this.markPointImages=[];var a=this;this._rendererOptions.markPoint.itemStyle.images.forEach(function(b){var c=new Image;c.src=b;c.onload=function(){a.drawCanvas1()};a.markPointImages.push(c)})},_initMarkPoint:function(){var a=this,b=this._rendererOptions.markPoint.itemStyle;this.MarkPoint=function(a,b,e,f,g,h,j,l){this.index=a;this.id=b;this.name=e;this.value=f;this.symbol=g;this.lon=h;this.lat=j;this.attributes=l;this.width=50;this.height=68;
- this.radius=30};this.MarkPoint.prototype.init=function(){};this.MarkPoint.prototype.updateXY=function(){var b=a._parent.map.project([this.lon,this.lat]);this.x=b.x;this.y=b.y};this.MarkPoint.prototype.update=function(){};this.MarkPoint.prototype.isPointInPath=function(b,d,e){b.beginPath();this.symbol===0?b.rect(this.x-this.width/2,this.y-this.height+5,this.width,this.height):b.arc(this.x,this.y,this.radius,0,Math.PI*2,!0);if(b.isPointInPath(d,e))a.hoveredMarkPoint=this};this.MarkPoint.prototype.draw1=
- function(c){var d=!1;if(a.hoveredMarkPoint===this||a.hoveredMarkLine&&(a.hoveredMarkLine.source===this||a.hoveredMarkLine.target===this))d=!0;c.globalAlpha=a.energy;c.shadowColor=b.shadowColor;c.shadowBlur=b.shadowBlur;c.shadowOffsetX=b.shadowOffsetX;c.shadowOffsetY=b.shadowOffsetY;c.save();c.translate(this.x,this.y);d&&c.scale(1.1,1.1);this.symbol===0?c.drawImage(a.markPointImages[this.symbol],-this.width/2,-this.height+5):c.drawImage(a.markPointImages[this.symbol],-this.radius,-this.radius);c.restore()};
- this.MarkPoint.prototype.draw2=function(){}},_initMarkLine:function(){var a=this,b=this._rendererOptions.markLine.itemStyle;this.MarkLine=function(a,d,e){this.index=a;this.source=d;this.target=e;this.width=b.width;this.color=b.color};this.MarkLine.prototype.updateXY=function(){};this.MarkLine.prototype.isPointInStroke=function(b,d,e){b.beginPath();b.moveTo(this.source.x,this.source.y);b.lineTo(this.target.x,this.target.y);if(b.isPointInStroke(d,e))a.hoveredMarkLine=this};this.MarkLine.prototype.draw=
- function(b){var d=this.color;if(a.hoveredMarkLine===this||a.hoveredMarkPoint===this.source||a.hoveredMarkPoint===this.target)d=GeoGlobe.Util.getShadeColor(d,20);b.beginPath();b.moveTo(this.source.x,this.source.y);b.lineTo(this.source.x+(this.target.x-this.source.x)*a.energy,this.source.y+(this.target.y-this.source.y)*a.energy);b.lineWidth=this.width;b.strokeStyle=d;b.stroke()}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvas.push(document.createElement("canvas"));
- this.canvasContext.push(this.canvas[0].getContext("2d"));this.canvasContext.push(this.canvas[1].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.cacheCanvasContext.push(this.cacheCanvas[1].getContext("2d"));this.canvas[0].style.position="absolute";this.canvas[1].style.position="absolute";this.div.appendChild(this.canvas[0]);
- this.div.appendChild(this.canvas[1])},_initTooltip:function(){if((this._rendererOptions.markLine.hoverable||this._rendererOptions.markPoint.hoverable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width="max-content",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,this.tooltipDiv.style.padding=
- this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),this.tooltipDiv.style["border-width"]=
- this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="nowrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition="left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},render:function(){this._init_RendererOptions();
- this._initMarkPointImages();this._initMarkPoint();this._initMarkLine();this._initTooltip();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.drawCanvas1();this.energy=0;this.animation=!0;this.frame&&cancelAnimationFrame(this.frame);var a=this;(function c(){if(a.energy<1)a.frame=requestAnimationFrame(c),a.energy+=0.05,a.energy>1&&(a.energy=1),a.drawCanvas1()})()},onMove:function(){this.animation=!1;this.updateXY();this.drawCanvas1();this.drawCanvas2()},onMoveEnd:function(){this.redraw()},
- onMouseMove:function(a){if(this.visibility&&(this._rendererOptions.markLine.hoverable||this._rendererOptions.markPoint.hoverable)&&this.markPoints.length>0&&!this._parent.map.moving)this.hover(a.point.x,a.point.y),this.hoveredMarkPoint&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkPoint,event:a})},onResize:function(){this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width=this._parent.map.transform.width;this.canvas[0].height=
- this.canvas[1].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas1();this.drawCanvas2()},updateXY:function(){this.markPoints.forEach(function(a){a.updateXY()})},drawCanvas1:function(){this.cacheCanvas[0].width=this.width;var a=this;this.markLines.forEach(function(b){b.draw(a.cacheCanvasContext[0])});this.markPoints.forEach(function(b){b.draw1(a.cacheCanvasContext[0])});
- this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawCanvas2:function(){},clearCanvas:function(){this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.markPointImages=[];this.MarkPoint=null;this.markPoints=[];this.MarkLine=null;this.markLines=[];this.canvas=
- [];this.data=[];this.cacheCanvas=[];this.canvasContext=[];this.cacheCanvasContext=[];this._rendererOptions={}},hover:function(a,b){this.hoveredMarkPoint=this.hoveredMarkLine=null;var c=this;this.markPoints.forEach(function(d){!c.hoveredMarkPoint&&d.isPointInPath(c.cacheCanvasContext[0],a,b)});this.markLines.forEach(function(d){!c.hoveredMarkLine&&d.isPointInStroke(c.cacheCanvasContext[0],a,b)});this.drawCanvas1();this.hoveredMarkLine||this.hoveredMarkPoint?(this.showTooltip(this.hoveredMarkLine?this.hoveredMarkLine.source.name+
- " > "+this.hoveredMarkLine.target.name:this.hoveredMarkPoint.name,a,b),this.canvas[1].style.cursor="pointer"):(this.hideTooltip(),this.canvas[1].style.cursor="grab")},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+"px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=
- a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.canvas[1].width=this.cacheCanvas[0].width=this.cacheCanvas[1].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.canvas[1].height=this.cacheCanvas[0].height=this.cacheCanvas[1].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";a?this.draw():this.stopDraw()},getMarkPointById:function(a){for(var b,
- c=0,d=this.markPoints.length;c<d;c++)if(this.markPoints[c].id===a){b=this.markPoints[c];break}return b},setData:function(a){this.hoveredMarkLine=this.hoveredMarkPoint=null;this.markPoints=[];this.markLines=[];var b=this,c,d,a=a||{};a.points=a.points||[];a.points.forEach(function(a,d){c=new b.MarkPoint(d,a.id,a.name,a.value,a.symbol,a.lon,a.lat,a);b.markPoints.push(c)});a.links=a.links||[];a.links.forEach(function(a,c){d=new b.MarkLine(c,b.getMarkPointById(a.source),b.getMarkPointById(a.target));b.markLines.push(d)});
- this.data=a}});
- GeoGlobe.Visuals.Custom.Fluorescence=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPointsSet:null,markPointsSets:[],legendLabels:[],visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas();this._blobURL=this._worker=null},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_init_Legend:function(){this._legend=
- GeoGlobe.Util.deepExtend({},{show:!0,left:null,right:null,top:null,bottom:null,col:1,itemSize:10,itemColors:[],itemStatuses:[],backgroundColor:"rgba(0,0,0,0.5)",borderColor:"#000",borderWidth:1,borderRadius:0,shadowColor:"#fff",shadowBlur:5,shadowOffsetX:0,shadowOffsetY:0,padding:10,textStyle:{color:"#fff",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}},this.legend)},_init_Legend_rightop:function(){this._legend_rightop=GeoGlobe.Util.deepExtend({},{show:!0,left:null,right:null,
- top:null,bottom:null,col:1,itemSize:10,itemColors:[],itemStatuses:[],backgroundColor:"rgba(0,0,0,0.5)",borderColor:"#000",borderWidth:1,borderRadius:0,shadowColor:"#fff",shadowBlur:5,shadowOffsetX:0,shadowOffsetY:0,padding:10,textStyle:{color:"#fff",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}},this.legend_rightop)},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({},{markPoint:{unactivatedDrawable:!0,itemSymbol:[],itemStyle:{color:"rgba(255,0,0,0.7)",
- shadowColor:"#000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}}},this.rendererOptions)},_initMarkPointsSet:function(){var a=this,b=this._legend.itemColors,c=this._rendererOptions.markPoint.itemStyle,d=this._rendererOptions.markPoint.effect,e=this._rendererOptions.markPoint.itemSymbol;this.MarkPointsSet=function(f,g,h){this.legendLabel=f;this.markPoints=g;for(f=g.length;f--;){g[f].value<66?(g[f].symbolSize=1,g[f].symbol=e[0]):g[f].value<95?(g[f].symbolSize=3,g[f].symbol=e[1]):(g[f].symbolSize=4,
- g[f].symbol=e[2]);if(GeoGlobe.Util.getType(a._rendererOptions.markPoint.itemStyle.color[h])==="object")a.gradientImageData=GeoGlobe.Util.getGradientImageData(a._rendererOptions.markPoint.itemStyle.color[h]);g[f].category=this.legendLabel;g[f].color=GeoGlobe.Util.getType(c.color[h])==="object"?"rgba("+a.gradientImageData[~~(g[f].weight*255+0.5)*4]+","+a.gradientImageData[~~(g[f].weight*255+0.5)*4+1]+","+a.gradientImageData[~~(g[f].weight*255+0.5)*4+2]+","+a.gradientImageData[3]/255+")":b[h];g[f].rgbColor=
- GeoGlobe.Util.getRgbColor(g[f].color);g[f].alpha=g[f].color.indexOf("a(")!==-1?+g[f].color.split(",")[3].split(")")[0]:1;switch(g[f].symbol){case "circle":g[f].energy=[0,0.25,0.5,0.75];g[f].increment=Math.max(0.1*d.scaleSize/d.period+Math.random()*(Math.random()>0.5?1:-1)*0.002,0.001);break;case "ring":g[f].energy=[0,1/3*d.scaleSize,2/3*d.scaleSize],g[f].increment=Math.max(0.1*d.scaleSize/d.period+Math.random()*(Math.random()>0.5?1:-1)*0.002,0.001)}}};this.MarkPointsSet.prototype.update=function(){var a;
- for(a=this.markPoints.length;a--;)switch(this.markPoints[a].symbol){case "circle":for(var b=0;b<4;b++)this.markPoints[a].energy[b]+=this.markPoints[a].increment,this.markPoints[a].energy[b]>1&&(this.markPoints[a].energy[b]=0);break;case "ring":for(b=0;b<3;b++)this.markPoints[a].energy[b]+=this.markPoints[a].increment,this.markPoints[a].energy[b]>d.scaleSize&&(this.markPoints[a].energy[b]=0)}};this.MarkPointsSet.prototype.isPointInPath=function(b,c,d){if(b)for(var e=0;e<this.markPoints.length;e++){var l=
- this.markPoints[e];b.beginPath();switch(l.symbol){case "circle":case "ring":b.arc(l.x,l.y,l.symbolSize,0,Math.PI*2,!0)}if(b.isPointInPath(c,d))a.hoveredMarkPoint=l}};this.MarkPointsSet.prototype.updateXY=function(){for(var b=this.markPoints.length;b--;){var c=a._parent.map.project([this.markPoints[b].lon,this.markPoints[b].lat]);this.markPoints[b].x=c.x;this.markPoints[b].y=c.y}};this.MarkPointsSet.prototype.draw=function(a){if(a)for(var b=this.markPoints.length;b--;){var c;c=this.markPoints[b];var e;
- a.fillStyle=c.color;a.beginPath();switch(c.symbol){case "circle":a.beginPath();a.arc(c.x,c.y,c.symbolSize/2,0,Math.PI*2,!0);a.strokeStyle="rgba"+c.rgbColor.slice(3).split(")")[0]+","+c.alpha+")";a.fill();for(e=0;e<4;)a.beginPath(),a.arc(c.x,c.y,c.symbolSize+c.symbolSize*(d.scaleSize-1)*c.energy[e],0,Math.PI*2,!0),a.strokeStyle="rgba"+c.rgbColor.slice(3).split(")")[0]+","+(1-c.energy[e])*c.alpha+")",a.stroke(),e++;break;case "ring":for(e=0;e<3;)a.beginPath(),a.arc(c.x,c.y,c.symbolSize*c.energy[e],
- 0,Math.PI*2,!0),a.fillStyle="rgba"+c.rgbColor.slice(3).split(")")[0]+","+Math.max(1-c.energy[e]/d.scaleSize,0)*c.alpha+")",a.fill(),e++}}}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.canvas[0].style.position=
- "absolute";this.div.appendChild(this.canvas[0])},_initTooltip:function(){if((this._rendererOptions.markPoint.hoverable||this._rendererOptions.markPoint.clickable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width="max-content",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,
- this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+" "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),
- this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="pre-wrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition="left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},
- render:function(){this._init_Legend();this._init_Legend_rightop();this._init_RendererOptions();this._initTooltip();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.drawCanvas();this.frame&&cancelAnimationFrame(this.frame)},lazydraw:function(){var a=this;(function c(){if(a.canvas.length!==0&&a.DRAWINDEX<a.legendLabels.length)requestAnimationFrame(c),a.drawLegend(a.DRAWINDEX),a.drawLegend2(a.DRAWINDEX),a.markPointsSets[a.DRAWINDEX].draw(a.cacheCanvasContext[0],a.DRAWINDEX),
- a.canvas[0].width=a.width,a.canvasContext[0].drawImage(a.cacheCanvas[0],0,0),a.DRAWINDEX++})()},onMove:function(){this.updateXY();this.drawCanvas()},onMoveEnd:function(){this.moving=!1;this.redraw()},onClick:function(a){this.visibility&&this._rendererOptions.markPoint.clickable&&this.hoveredMarkPoint&&this._parent.fire("overlayerclick",{layer:this,feature:this.hoveredMarkPoint,event:a})},onMouseMove:function(a){this.visibility&&this._rendererOptions.markPoint.hoverable&&this.markPointsSets.length>
- 0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),this.hoveredMarkPoint&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkPoint,event:a}))},onMoveEnd:function(){this.redraw()},onResize:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas()},
- updateXY:function(){for(var a=this.markPointsSets.length;a--;)this.markPointsSets[a].updateXY()},drawCanvas:function(){this.cacheCanvas[0].width=this.width;for(var a=0,b=this.markPointsSets.length;a<b;a++)this.markPointsSets[a].draw(this.cacheCanvasContext[0],a);this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawLegend:function(a){if(this._legend&&this._legend.show&&!this.legendDiv){this.legendDiv=document.createElement("div");this.legendDiv.style.position=
- "absolute";this.legendDiv.style["background-color"]=this._legend.backgroundColor;this.legendDiv.style["border-color"]=this._legend.borderColor;this.legendDiv.style["border-width"]=this._legend.borderWidth+"px";this.legendDiv.style["border-radius"]=this._legend.borderRadius+"px";this.legendDiv.style["border-style"]="solid";this.legendDiv.style["box-shadow"]=this._legend.shadowOffsetX+"px "+this._legend.shadowOffsetY+"px "+this._legend.shadowBlur+"px "+this._legend.shadowColor;this.legendDiv.style.padding=
- this._legend.padding+"px";this.legendDiv.style.left=this._legend.left!==null?this._legend.left+"px":null;this.legendDiv.style.right=this._legend.right!==null?this._legend.right+"px":null;this.legendDiv.style.top=this._legend.top!==null?this._legend.top+"px":null;this.legendDiv.style.bottom=this._legend.bottom!==null?this._legend.bottom+"px":null;this.legendCanvas=document.createElement("canvas");this.legendCanvasContext=this.legendCanvas.getContext("2d");this.legendCanvas.style.display="block";this.legendCanvasContext.font=
- this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily;this.legendDiv.appendChild(this.legendCanvas);this.div.appendChild(this.legendDiv);for(var b=[],c=null,d=0,e=this.legendLabels.length;d<e;d++)for(var c=this._legend.itemSize+10+this.legendCanvasContext.measureText(this.legendLabels[d].toString()).width,f=this._legend.col,g=0;g<f;g++)d%this._legend.col===g&&(!b[g]||b[g]<c)&&(b[g]=c);for(var h=10,c=10,d=
- 0,e=b.length;d<e;d++)h+=b[d]+10;c+=((this._legend.itemSize<this._legend.textStyle.fontSize?this._legend.textStyle.fontSize:this._legend.itemSize)+10)*(~~(this.legendLabels.length/this._legend.col)+(this.legendLabels.length%this._legend.col===0?0:1));this.legendCanvas.width=h;this.legendCanvas.height=c;var j=function(a,c,d,e){this.legendCanvas.width=h;for(var a=!1,f,g,j=0,u=this.legendLabels.length;j<u;j++){g=0;for(var s=this._legend.col;g<s;g++)if(j%this._legend.col===g){f=10+this._legend.itemSize/
- 2;for(var q=0;q<g;q++)f+=b[q]+10}g=10+this._legend.itemSize/2+((this._legend.itemSize<this._legend.textStyle.fontSize?this._legend.textStyle.fontSize:this._legend.itemSize)+10)*~~(j/this._legend.col);q=s=!1;this.legendCanvasContext.beginPath();switch(this._legend.symbol){case "ring":this.legendCanvasContext.arc(f,g,this._legend.itemSize/2,0,Math.PI*2,!1);break;case "circle":this.legendCanvasContext.arc(f,g,this._legend.itemSize/2,0,Math.PI*2,!1)}c==="mousemove"&&d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,
- e)&&(a=s=!0);c==="mousedown"&&d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,e)&&(q=!0);this.legendCanvasContext.beginPath();this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily;this.legendCanvasContext.rect(f+this._legend.itemSize/2+10,g-this._legend.textStyle.fontSize/2,this.legendCanvasContext.measureText(this.legendLabels[j].toString()).width,this._legend.textStyle.fontSize);
- c==="mousemove"&&d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,e)&&(a=s=!0);c==="mousedown"&&d!==void 0&&e!==void 0&&this.legendCanvasContext.isPointInPath(d,e)&&(q=!0);q&&(this._legend.itemStatuses[j]=this._legend.itemStatuses[j]===0?1:0,this.drawCanvas());var r=this._legend.itemColors[j],t=this._legend.textStyle.color,r=s||q?GeoGlobe.Util.getShadeColor(r,20):r,t=s||q?GeoGlobe.Util.getShadeColor(t,20):t;this.legendCanvasContext.beginPath();switch(this._legend.symbol){case "ring":this.legendCanvasContext.arc(f,
- g,this._legend.itemSize/2,0,Math.PI*2,!1);break;case "circle":this.legendCanvasContext.arc(f,g,this._legend.itemSize/2,0,Math.PI*2,!1)}this.legendCanvasContext.fillStyle=r;this.legendCanvasContext.fill();this.legendCanvasContext.font=this._legend.textStyle.fontStyle+" "+this._legend.textStyle.fontWeight+" "+this._legend.textStyle.fontSize+"px "+this._legend.textStyle.fontFamily;this.legendCanvasContext.textAlign="left";this.legendCanvasContext.textBaseline="middle";this.legendCanvasContext.fillStyle=
- t;this.legendCanvasContext.fillText(this.legendLabels[j],f+this._legend.itemSize/2+10,g)}this.legendCanvas.style.cursor=a?"pointer":"default"}.bind(this);this.legendCanvas.onmousedown=function(a){var b=a.offsetX||a.clientX-(a.target||a.srcElement).getBoundingClientRect().left,c=a.offsetY||a.clientY-(a.target||a.srcElement).getBoundingClientRect().top;j(void 0,a.type,b,c)};this.legendCanvas.onmousemove=function(a){var b=a.offsetX||a.clientX-(a.target||a.srcElement).getBoundingClientRect().left,c=a.offsetY||
- a.clientY-(a.target||a.srcElement).getBoundingClientRect().top;j(void 0,a.type,b,c)};j(a)}},drawLegend2:function(){if(this._legend_rightop&&this._legend_rightop.show){if(!this.legendDiv2)this.legendDiv2=document.createElement("div"),this.legendDiv2.style.position="absolute",this.legendDiv2.style["background-color"]=this._legend.backgroundColor,this.legendDiv2.style["border-color"]=this._legend.borderColor,this.legendDiv2.style["border-width"]=this._legend.borderWidth+"px",this.legendDiv2.style["border-radius"]=
- this._legend.borderRadius+"px",this.legendDiv2.style["border-style"]="solid",this.legendDiv2.style["box-shadow"]=this._legend.shadowOffsetX+"px "+this._legend.shadowOffsetY+"px "+this._legend.shadowBlur+"px "+this._legend.shadowColor,this.legendDiv2.style.padding=this._legend.padding+"px",this.legendDiv2.style.left=this._legend_rightop.left!==null?this._legend_rightop.left+"px":null,this.legendDiv2.style.right=this._legend_rightop.right!==null?this._legend_rightop.right+"px":null,this.legendDiv2.style.top=
- this._legend_rightop.top!==null?this._legend_rightop.top+"px":null,this.legendDiv2.style.bottom=this._legend_rightop.bottom!==null?this._legend_rightop.bottom+"px":null,this.legendCanvas2=document.createElement("canvas"),this.legendCanvasContext2=this.legendCanvas2.getContext("2d"),this.legendCanvas2.style.display="block",this.legendCanvasContext2.font=this._legend_rightop.textStyle.fontStyle+" "+this._legend_rightop.textStyle.fontWeight+" "+this._legend_rightop.textStyle.fontSize+"px "+this._legend_rightop.textStyle.fontFamily,
- this.legendDiv2.appendChild(this.legendCanvas2),this.div.appendChild(this.legendDiv2);for(var a=[],b=null,c=0,d=this._legend_rightop.vLegendLabels.length;c<d;c++)for(var b=this._legend_rightop.itemWidth+10+this.legendCanvasContext2.measureText(this._legend_rightop.vLegendLabels[c].toString()).width,e=this._legend_rightop.col,f=0;f<e;f++)c%this._legend_rightop.col===f&&(!a[f]||a[f]<b)&&(a[f]=b);b=10;c=0;for(d=a.length;c<d;c++)b+=a[c]+10;this.legendCanvas2.width=b;this.legendCanvas2.height=this._legend_rightop.itemHeight;
- (function(){var b,d,e=0;for(d=this._legend_rightop.col;e<d;e++)if(c%this._legend_rightop.col===e){b=10+this._legend_rightop.itemSize/2;for(var f=0;f<e;f++)b+=a[f]+10}d=this._legend_rightop.itemSize/2+((this._legend_rightop.itemSize<this._legend_rightop.textStyle.fontSize?this._legend_rightop.textStyle.fontSize:this._legend_rightop.itemSize)+10)*~~(c/this._legend_rightop.col);var f=this._rendererOptions.markPoint.itemStyle.color,m=this._legend_rightop.textStyle.color;this.legendCanvasContext2.beginPath();
- this.legendCanvasContext2.arc(b,d,this._legend_rightop.itemSize_circle[0]/2,0,Math.PI*2,!1);this.legendCanvasContext2.fillStyle=f;this.legendCanvasContext2.fill();for(e=0;e<4;)this.legendCanvasContext2.beginPath(),this.legendCanvasContext2.arc(b,d,this._legend_rightop.itemSize_circle[e]/2,0,Math.PI*2,!1),this.legendCanvasContext2.strokeStyle=f,this.legendCanvasContext2.stroke(),e++;this.legendCanvasContext2.font=this._legend_rightop.textStyle.fontStyle+" "+this._legend_rightop.textStyle.fontWeight+
- " "+this._legend_rightop.textStyle.fontSize+"px "+this._legend_rightop.textStyle.fontFamily;this.legendCanvasContext2.textAlign="left";this.legendCanvasContext2.textBaseline="middle";this.legendCanvasContext2.fillStyle=m;this.legendCanvasContext2.fillText(this._legend_rightop.vLegendLabels[0],b+this._legend_rightop.itemWidth/2+10,d);this.legendCanvasContext2.beginPath();this.legendCanvasContext2.arc(b+(this._legend_rightop.itemWidth+10)*2,d,this._legend_rightop.itemSize_ringBig[0]/2,0,Math.PI*2,!1);
- this.legendCanvasContext2.fillStyle=f;this.legendCanvasContext2.fill();for(e=0;e<3;)this.legendCanvasContext2.beginPath(),this.legendCanvasContext2.arc(b+(this._legend_rightop.itemWidth+10)*2,d,this._legend_rightop.itemSize_ringBig[e]/2,0,Math.PI*2,!1),this.legendCanvasContext2.fillStyle=f,this.legendCanvasContext2.fill(),e++;this.legendCanvasContext2.font=this._legend_rightop.textStyle.fontStyle+" "+this._legend_rightop.textStyle.fontWeight+" "+this._legend_rightop.textStyle.fontSize+"px "+this._legend_rightop.textStyle.fontFamily;
- this.legendCanvasContext2.textAlign="left";this.legendCanvasContext2.textBaseline="middle";this.legendCanvasContext2.fillStyle=m;this.legendCanvasContext2.fillText(this._legend_rightop.vLegendLabels[1],b+(this._legend_rightop.itemWidth+10)*2+15,d);this.legendCanvasContext2.beginPath();this.legendCanvasContext2.arc(b+(this._legend_rightop.itemWidth+10)*4,d,this._legend_rightop.itemSize_ringSmall[0]/2,0,Math.PI*2,!1);this.legendCanvasContext2.fillStyle=f;this.legendCanvasContext2.fill();for(e=0;e<3;)this.legendCanvasContext2.beginPath(),
- this.legendCanvasContext2.arc(b+(this._legend_rightop.itemWidth+10)*4,d,this._legend_rightop.itemSize_ringSmall[e]/2,0,Math.PI*2,!1),this.legendCanvasContext2.fillStyle=f,this.legendCanvasContext2.fill(),e++;this.legendCanvasContext2.font=this._legend_rightop.textStyle.fontStyle+" "+this._legend_rightop.textStyle.fontWeight+" "+this._legend_rightop.textStyle.fontSize+"px "+this._legend_rightop.textStyle.fontFamily;this.legendCanvasContext2.textAlign="left";this.legendCanvasContext2.textBaseline="middle";
- this.legendCanvasContext2.fillStyle=m;this.legendCanvasContext2.fillText(this._legend_rightop.vLegendLabels[2],b+(this._legend_rightop.itemWidth+10)*4+13,d)}).bind(this)()}},clearCanvas:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this.MarkPoint=null;this.markPoints=[];this.canvas=[];this.data=[];this.cacheCanvas=[];this.canvasContext=
- [];this.cacheCanvasContext=[];this._rendererOptions={};if(this._worker)this._worker.terminate(),this._worker.onmessage=null,delete this._worker;this._blobURL&&window.URL.revokeObjectURL(this._blobURL)},hover:function(a,b){this.hoveredMarkPoint=null;for(var c=0,d=this.markPointsSets.length;c<d;c++)!this.hoveredMarkPoint&&this.markPointsSets[c].isPointInPath(this.cacheCanvasContext[0],a,b);this.drawCanvas();this.hoveredMarkPoint?(this.canvas[0].style.cursor="pointer",this.showTooltip(this.hoveredMarkPoint.category,
- a,b)):(this.canvas[0].style.cursor="grab",this.hideTooltip())},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+"px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.cacheCanvas[0].width=
- this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";this.legendDiv&&(this.legendDiv.style.display=a?"block":"none");a?this.draw():this.stopDraw()},setData:function(a){this.data=a;var a=new Blob(["function MarkPoint(lon, lat, value) {this.lon = lon;this.lat = lat;this.value = value;}function MarkPointsSet(legendLabel) {this.legendLabel = legendLabel;this.markPoints = [];}var legendLabels = [];var markPointsSets = [];onmessage = function (evt) {var features = evt.data.data;var feature = null;var legendLabel = null;for (var i = 0, len = features.length; i < len; i++) {feature = features[i];legendLabel = feature.properties.type;if (legendLabels.indexOf(legendLabel) === -1) {legendLabels.push(legendLabel);markPointsSets.push(new MarkPointsSet(legendLabel));}markPointsSets[legendLabels.indexOf(legendLabel)].markPoints.push(new MarkPoint(feature.geometry.coordinates[0], feature.geometry.coordinates[1],feature.properties.value));}postMessage({legendLabels: legendLabels,markPointsSets: markPointsSets})}"]),
- a=window.URL.createObjectURL(a),b=new Worker(a);this._initMarkPointsSet();var c=this;b.onmessage=function(a){c.legendLabels=a.data.legendLabels;c.markPointsSets=[];for(var b=0,f=a.data.markPointsSets.length;b<f;b++){var g=new c.MarkPointsSet(a.data.markPointsSets[b].legendLabel,a.data.markPointsSets[b].markPoints,b);g.updateXY();c.markPointsSets.push(g)}c.DRAWINDEX=0;c.lazydraw()};b.postMessage({data:this.data});this._blobURL=a;this._worker=b}});
- GeoGlobe.Visuals.Custom.Cluster=GeoGlobe.Class4OL({_parent:null,canvas:[],cacheCanvas:[],canvasContext:[],cacheCanvasContext:[],MarkPoint:null,MarkCluster:null,markPoints:[],markClusterZoomMap:[],markClusterMaxZoom:18,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.style.display=this.visibility?"block":"none"},_initCanvas:function(){this.canvas=
- [];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.canvas[0].style.position="absolute";this.div.appendChild(this.canvas[0])},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({},{markPoint:{nameField:"name",hoverable:!0,
- clickable:!0,symbol:"icon",symbolSrc:"",symbolSize:8,symbolWidth:24,symbolHeight:30,itemStyle:{color:"#f00",lineWidth:1,lineColor:"#fff",shadowColor:"#000000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0}},markCluster:{hoverable:!0,clickable:!0,symbol:"icon",symbolSrc:"bubble.png",symbolSize:[[0,40],[9,60],[99,80]],itemStyle:{color:[[0,"rgba(0, 0, 255, 0.7)"],[9,"rgba(0, 255, 0, 0.7)"],[99,"rgba(255, 0, 0, 0.7)"]],lineWidth:3,lineColor:"#fff",shadowColor:"#000",shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0},
- label:{show:!0,color:"#fff",align:"center",baseline:"middle",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}},tooltip:{show:!0,backgroundColor:"#fff",borderColor:"#333",borderRadius:0,borderWidth:0,padding:10,textStyle:{color:"#000",fontFamily:"serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"}}},this.rendererOptions)},_initTooltip:function(){if((this._rendererOptions.markPoint.hoverable||this._rendererOptions.markPoint.clickable||this._rendererOptions.markCluster.hoverable||
- this._rendererOptions.markCluster.clickable)&&this._rendererOptions.tooltip.show)this.tooltipDiv=this.tooltipDiv||this.div.appendChild(document.createElement("div")),this.tooltipDiv.style.position="relative",this.tooltipDiv.style.display="none",this.tooltipDiv.style.zIndex=999,this.tooltipDiv.style.width="max-content",this.tooltipDiv.style.color=this._rendererOptions.tooltip.textStyle.color,this.tooltipDiv.style.padding=this._rendererOptions.tooltip.padding+"px",this.tooltipDiv.style.font=this._rendererOptions.tooltip.textStyle.fontStyle+
- " "+this._rendererOptions.tooltip.textStyle.fontWeight+" "+this._rendererOptions.tooltip.textStyle.fontSize+"px "+this._rendererOptions.tooltip.textStyle.fontFamily,this.tooltipDiv.style["background-color"]=document.createElement("canvas").getContext?this._rendererOptions.tooltip.backgroundColor:GeoGlobe.Util.getRgbColor(this._rendererOptions.tooltip.backgroundColor),this.tooltipDiv.style["border-width"]=this._rendererOptions.tooltip.borderWidth+"px",this.tooltipDiv.style["border-color"]=this._rendererOptions.tooltip.borderColor,
- this.tooltipDiv.style["border-radius"]=this._rendererOptions.tooltip.borderRadius+"px",this.tooltipDiv.style["border-style"]="solid",this.tooltipDiv.style["white-space"]="pre-wrap",this.tooltipDiv.style["box-shadow"]="rgba(0, 0, 0, 0.2) 0px 10px 10px",this.tooltipDiv.style.transition="left 0.4s cubic-bezier(0.23, 1, 0.32, 1), top 0.4s cubic-bezier(0.23, 1, 0.32, 1)"},_initMarkPointImage:function(){if(this._rendererOptions.markPoint.symbol==="icon"){var a=this;this.markPointImage=new Image;this.markPointImage.width=
- this._rendererOptions.markPoint.symbolWidth;this.markPointImage.height=this._rendererOptions.markPoint.symbolHeight;this.markPointImage.src=this._rendererOptions.markPoint.symbolSrc||"data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2IDIzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIiA+PGRlZnM+PC9kZWZzPiA8cGF0aCAgZmlsbD0iI0RFMzMzMyIgc3Ryb2tlLWxpbmVjYXA9ImJ1dHQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik04IDIzbDAgMCAwIDAgMCAwIDAgMCAwIDBjLTQsLTUgLTgsLTEwIC04LC0xNCAwLC01IDQsLTkgOCwtOWwwIDAgMCAwYzQsMCA4LDQgOCw5IDAsNCAtNCw5IC04LDE0eiBNMyw5IGE1LDUgMCwxLDAsMCwtMC45WiI+PC9wYXRoPiA8L3N2Zz4=";
- this.markPointImage.onload=function(){a.drawCanvas()}}},_initMarkClusterImages:function(){if(this._rendererOptions.markCluster.symbol==="icon"){var a=this;this.markClusterImages=[];typeof this._rendererOptions.markCluster.symbolSrc==="string"?this._rendererOptions.markCluster.symbolSize.forEach(function(b,c){var d=a._rendererOptions.markCluster.itemStyle.color[c][1],e=new Image;e.width=b[1];e.height=b[1];e.src=a._rendererOptions.markCluster.symbolSrc;e.onload=function(){var c=document.createElement("canvas"),
- g=c.getContext("2d");c.width=c.height=b[1];g.drawImage(e,0,0,b[1],b[1]);for(var h=g.getImageData(0,0,b[1],b[1]),j=h.data,l=GeoGlobe.Util.getRgbColor(d).slice(4).split(")")[0].split(","),m=0,n=j.length;m<n;m+=4)j[m]=j[m]=+l[0],j[m+1]===255&&(j[m+1]=+l[1]),j[m+2]===255&&(j[m+2]=+l[2]);g.putImageData(h,0,0);a.markClusterImages[b[1]]=c;a.drawCanvas()}}):this._rendererOptions.markCluster.symbolSrc.forEach(function(b,c){var d=a._rendererOptions.markCluster.symbolSize[c][1],e=new Image;e.width=d;e.height=
- d;e.src=b[1];e.onload=function(){a.markClusterImages[d]=e;a.drawCanvas()}})}},_initMarkPoint:function(){var a=this,b=this._rendererOptions.markPoint,c=b.itemStyle;this.MarkPoint=function(a,b,c,g){this.index=a;this.lon=b;this.lat=c;this.mercator=GeoGlobe.Util.transferToMercator([b,c]);this.attributes=g};this.MarkPoint.prototype.updateXY=function(){var b=a._parent.map.project([this.lon,this.lat]);this.x=this.ox=b.x;this.y=this.oy=b.y};this.MarkPoint.prototype.draw=function(d,e){d.save();d.shadowColor=
- c.shadowColor;d.shadowBlur=c.shadowBlur;d.shadowOffsetX=c.shadowOffsetX;d.shadowOffsetY=c.shadowOffsetY;d.globalAlpha=e;d.translate(this.x,this.y);a.hoveredMarkPoint===this&&d.scale(1.1,1.1);switch(b.symbol){case "round":d.beginPath();d.arc(0,0,b.symbolSize/2,0,Math.PI*2,!0);d.fillStyle=a.hoveredMarkPoint===this?GeoGlobe.Util.getShadeColor(c.color,20):c.color;d.fill();if(c.lineWidth)d.lineWidth=c.lineWidth,d.strokeStyle=a.hoveredMarkPoint===this?GeoGlobe.Util.getShadeColor(c.lineColor,20):c.lineColor,
- d.stroke();break;case "icon":d.drawImage(a.markPointImage,-b.symbolWidth/2,-b.symbolHeight/2,b.symbolWidth,b.symbolHeight)}d.restore()};this.MarkPoint.prototype.isPointInPath=function(c,e,f){c.beginPath();switch(b.symbol){case "round":c.arc(this.x,this.y,b.symbolSize/2,0,Math.PI*2,!0);break;case "icon":c.rect(this.x-b.symbolWidth/2,this.y-b.symbolHeight/2,b.symbolWidth,b.symbolHeight)}if(c.isPointInPath(e,f))a.hoveredMarkPoint=this}},_initMarkCluster:function(){var a=this,b=this._rendererOptions.markCluster,
- c=b.itemStyle,d=b.label;this.MarkCluster=function(a,b,c,d,j){this.key=a;this.count=b;this.sumLonLat=c;this.children=d;this.parent=j};this.MarkCluster.prototype.init=function(){this.lon=this.sumLonLat[0]*1/this.count;this.lat=this.sumLonLat[1]*1/this.count;this.mercator=GeoGlobe.Util.transferToMercator([this.lon,this.lat]);var a=this;b.symbolSize.forEach(function(b){if(a.count>b[0])a.size=b[1]});c.color.forEach(function(b){if(a.count>b[0])a.color=b[1]});this.alpha=this.color.indexOf("a(")!==-1?+this.color.split(",")[3].split(")")[0]:
- 1;return this};this.MarkCluster.prototype.updateXY=function(){var b=a._parent.map.project([this.lon,this.lat]);this.x=this.ox=b.x;this.y=this.oy=b.y};this.MarkCluster.prototype.draw=function(e,f){e.save();e.shadowColor=c.shadowColor;e.shadowBlur=c.shadowBlur;e.shadowOffsetX=c.shadowOffsetX;e.shadowOffsetY=c.shadowOffsetY;e.globalAlpha=f*this.alpha;e.translate(this.x,this.y);a.hoveredMarkCluster===this&&e.scale(1.1,1.1);switch(b.symbol){case "round":e.beginPath();e.arc(0,0,this.size/2,0,Math.PI*2,
- !0);e.fillStyle=a.hoveredMarkCluster===this?GeoGlobe.Util.getShadeColor(this.color,20):this.color;e.fill();if(c.lineWidth)e.lineWidth=c.lineWidth,e.strokeStyle=a.hoveredMarkCluster===this?GeoGlobe.Util.getShadeColor(c.lineColor,20):c.lineColor,e.stroke();break;case "icon":a.markClusterImages[this.size]&&e.drawImage(a.markClusterImages[this.size],-this.size/2,-this.size/2,this.size,this.size)}if(d.show)e.font=d.fontStyle+" "+d.fontWeight+" "+d.fontSize+"px "+d.fontFamily,e.textAlign=d.align,e.textBaseline=
- d.baseline,e.fillStyle=d.color,e.fillText(this.count,0,0);e.restore()};this.MarkCluster.prototype.isPointInPath=function(c,d,g){c.beginPath();switch(b.symbol){case "round":c.arc(this.x,this.y,this.size/2,0,Math.PI*2,!0);break;case "icon":c.rect(this.x-this.size/2,this.y-this.size/2,this.size,this.size)}if(c.isPointInPath(d,g))a.hoveredMarkCluster=this}},render:function(){this._init_RendererOptions();this._initTooltip();this._initMarkPointImage();this._initMarkClusterImages();this._initMarkPoint();
- this._initMarkCluster();this.setData(this.data);this.draw()},draw:function(){this.updateXY();this.drawCanvas();this.frame&&cancelAnimationFrame(this.frame);var a=this;(function c(){a.frame=requestAnimationFrame(c);if(a._animated&&(a._inout==="in"?(a._ratio+=0.08,a._ratio>1&&(a._ratio=1)):(a._ratio-=0.08,a._ratio<0&&(a._ratio=0)),a.energy=1-Math.cos(Math.PI/2*a._ratio),a.drawCanvasFrame(),a._ratio===0||a._ratio===1))a._animated=!1,a._inout=void 0,a._from=void 0,a._to=void 0})()},onZoomStart:function(){this._animated=
- !1;this._from=this._parent.map.getZoom();if(this._from>this.markClusterMaxZoom){this._fromMarkPoints=[];for(var a=this._parent.getBounds(this._rendererOptions.markPoint.symbolHeight/2),b,c=this.markPoints,d=0,e=c.length;d<e;d++)b=c[d],b.lon>=a[0][0]&&b.lon<=a[1][0]&&b.lat>=a[0][1]&&b.lat<=a[1][1]&&this._fromMarkPoints.push(b)}else{this._fromMarkClusters=[];a=this._parent.getBounds(40);c=this.markClusterZoomMap[Math.floor(this._from)].markClusters;d=0;for(e=c.length;d<e;d++)b=c[d],b.lon>=a[0][0]&&
- b.lon<=a[1][0]&&b.lat>=a[0][1]&&b.lat<=a[1][1]&&this._fromMarkClusters.push(b)}},onMove:function(){this.updateXY();this.drawCanvas()},onZoomEnd:function(){this._to=this._parent.map.getZoom();this._from&&Math.floor(this._from)!==Math.floor(this._to)?(this._from<this._to?(this._inout="in",this._ratio=0,this._from<=this.markClusterMaxZoom&&this.markClusterMaxZoom<this._to?(this._animated=!0,this._parentMarkClusterZoom=this.markClusterZoomMap[Math.floor(this._from)],this._childMarkClusterZoom=void 0):
- this._to<=this.markClusterMaxZoom?(this._animated=!0,this._parentMarkClusterZoom=this.markClusterZoomMap[Math.floor(this._from)],this._childMarkClusterZoom=this.markClusterZoomMap[Math.floor(this._to)]):(this._animated=!1,this._to=this._from=void 0)):(this._inout="out",this._ratio=1,this._from>this.markClusterMaxZoom&&this.markClusterMaxZoom>=this._to?(this._animated=!0,this._parentMarkClusterZoom=this.markClusterZoomMap[Math.floor(this._to)],this._childMarkClusterZoom=void 0):this._from<=this.markClusterMaxZoom?
- (this._animated=!0,this._parentMarkClusterZoom=this.markClusterZoomMap[Math.floor(this._to)],this._childMarkClusterZoom=this.markClusterZoomMap[Math.floor(this._from)]):(this._animated=!1,this._to=this._from=void 0)),this._parentMarkClusters=this._parentMarkClusterZoom?this._parentMarkClusterZoom.markClusters:[],this._childMarkClusters=this._childMarkClusterZoom?this._childMarkClusterZoom.markClusters:[]):(this._animated=!1,this._to=this._from=void 0)},onMoveEnd:function(){this.redraw()},onClick:function(a){this._parent.map.getZoom()>
- this.markClusterMaxZoom?this.visibility&&this._rendererOptions.markPoint.clickable&&this.hoveredMarkPoint&&this._parent.fire("overlayerclick",{layer:this,feature:this.hoveredMarkPoint,event:a}):this.visibility&&this._rendererOptions.markCluster.clickable&&(this.hoveredMarkCluster||this.hoveredMarkPoint)&&this._parent.fire("overlayerclick",{layer:this,feature:this.hoveredMarkCluster?this.hoveredMarkCluster:this.hoveredMarkPoint,event:a})},onMouseMove:function(a){var b=this._parent.map.getZoom();b>
- this.markClusterMaxZoom?this.visibility&&this._rendererOptions.markPoint.hoverable&&this.markPoints.length>0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),this.hoveredMarkPoint&&this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkPoint,event:a})):this.visibility&&this._rendererOptions.markCluster.hoverable&&this.markClusterZoomMap[Math.floor(b)].markClusters.length>0&&!this._parent.map.moving&&(this.hover(a.point.x,a.point.y),(this.hoveredMarkCluster||this.hoveredMarkPoint)&&
- this._parent.fire("overlayerhover",{layer:this,feature:this.hoveredMarkCluster?this.hoveredMarkCluster:this.hoveredMarkPoint,event:a}))},onResize:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this.clearCanvas();this.updateXY();this.drawCanvas()},updateXY:function(){var a=this._parent.map.getZoom();this._from===void 0?
- a>this.markClusterMaxZoom?this.updateMarkPointXY():this.updateMarkClusterXY(a):this._to===void 0?this._from>this.markClusterMaxZoom?this.updateMarkPointXY():this.updateMarkClusterXY(this._from):this._to>this.markClusterMaxZoom?this.updateMarkPointXY():this.updateMarkClusterXY(this._to)},updateMarkPointXY:function(){for(var a=this._parent.getBounds(this._rendererOptions.markPoint.symbolHeight/2),b,c=this.markPoints,d=0,e=c.length;d<e;d++)b=c[d],b.lon>=a[0][0]&&b.lon<=a[1][0]&&b.lat>=a[0][1]&&b.lat<=
- a[1][1]?(b.visible=!0,b.updateXY()):b.visible=!1},updateMarkClusterXY:function(a){for(var b=this._parent.getBounds(40),c=this.markClusterZoomMap[Math.floor(a)].markClusters,d=0,e=c.length;d<e;d++)a=c[d],a.lon>=b[0][0]&&a.lon<=b[1][0]&&a.lat>=b[0][1]&&a.lat<=b[1][1]?(a.visible=!0,a.updateXY()):a.visible=!1},drawCanvas:function(){this.cacheCanvas[0].width=this.width;var a=this._from!==void 0?this._from:this._parent.map.getZoom();if(a>this.markClusterMaxZoom)for(var b,c=this._from!==void 0?this._fromMarkPoints:
- this.markPoints,a=0,d=c.length;a<d;a++)b=c[a],b.visible&&b.draw(this.cacheCanvasContext[0],1);else{c=this._from!==void 0?this._fromMarkClusters:this.markClusterZoomMap[Math.floor(a)].markClusters;a=0;for(d=c.length;a<d;a++)if(b=c[a],b.visible)b.children.length>1?b.draw(this.cacheCanvasContext[0],1):(b.children[0].x=b.x,b.children[0].y=b.y,b.children[0].draw(this.cacheCanvasContext[0],1))}this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},drawCanvasFrame:function(){this.cacheCanvas[0].width=
- this.width;for(var a,b=this._parentMarkClusters,c=0,d=b.length;c<d;c++)if(a=b[c],a.visible)a.children.length>1?a.draw(this.cacheCanvasContext[0],1-this.energy):(a.children[0].x=a.x,a.children[0].y=a.y,a.children[0].draw(this.cacheCanvasContext[0],1-this.energy));if(this._childMarkClusterZoom){var c=this._parentMarkClusterZoom.zoom,b=this._parent.map.getResolutions()[c]*80,e=a=void 0;a=void 0;for(var f,g=this._childMarkClusters,c=0,d=g.length;c<d;c++)if(f=g[c],(this._inout==="in"||this._inout==="out"&&
- this._fromMarkClusters.includes(f))&&f.visible)if(a=Math.floor((f.mercator[0]-this._markPointSWMercator[0])/b),e=Math.floor((f.mercator[1]-this._markPointSWMercator[1])/b),a=a+"_"+e,a=this._parentMarkClusterZoom.markClustersMap[a]){if(a.visible)f.x=a.x+(f.ox-a.x)*this.energy,f.y=a.y+(f.oy-a.y)*this.energy;f.children.length>1?f.draw(this.cacheCanvasContext[0],this.energy):(f.children[0].x=f.x,f.children[0].y=f.y,f.children[0].draw(this.cacheCanvasContext[0],this.energy))}}else{c=0;for(g=b.length;c<
- g;c++){a=b[c];f=a.children;for(var e=0,h=f.length;e<h;e++)if(d=f[e],(this._inout==="in"||this._inout==="out"&&this._fromMarkPoints.includes(d))&&d.visible){if(a.visible)d.x=a.x+(d.ox-a.x)*this.energy,d.y=a.y+(d.oy-a.y)*this.energy;d.draw(this.cacheCanvasContext[0],this.energy)}}}this.canvas[0].width=this.width;this.canvasContext[0].drawImage(this.cacheCanvas[0],0,0)},clearCanvas:function(){this.canvas[0].width=this.cacheCanvas[0].width=this.width},stopDraw:function(){cancelAnimationFrame(this.frame);
- this.clearCanvas()},destroy:function(){this.stopDraw();this._parent.container.removeChild(this.div);this._parent=null;this.canvas=[];this.cacheCanvas=[];this.canvasContext=[];this.cacheCanvasContext=[];this.MarkCluster=this.MarkPoint=null;this.markPoints=[];this.markClusterZoomMap=[]},hover:function(a,b){this.hoveredMarkCluster=this.hoveredMarkPoint=null;var c=this._parent.map.getZoom();if(c>this.markClusterMaxZoom)for(var d=0,e=this.markPoints.length;d<e;d++)c=this.markPoints[d],!this.hoveredMarkPoint&&
- c.visible&&c.isPointInPath(this.cacheCanvasContext[0],a,b);else for(var d=0,e=this.markClusterZoomMap[Math.floor(c)].markClusters.length,f;d<e;d++)f=this.markClusterZoomMap[Math.floor(c)].markClusters[d],!this.hoveredMarkCluster&&f.visible&&(f.children.length>1?f.isPointInPath(this.cacheCanvasContext[0],a,b):f.children[0].isPointInPath(this.cacheCanvasContext[0],a,b));this.drawCanvas();this.hoveredMarkPoint||this.hoveredMarkCluster?(this.canvas[0].style.cursor="pointer",this.hoveredMarkPoint?this.showTooltip(this.hoveredMarkPoint.attributes[this._rendererOptions.markPoint.nameField],
- a,b):this.hideTooltip()):(this.canvas[0].style.cursor="grab",this.hideTooltip())},showTooltip:function(a,b,c){if(this._rendererOptions.tooltip.show)this.tooltipDiv.textContent=a,this.tooltipDiv.style.top=c-15+"px",this.tooltipDiv.style.left=b+15+"px",this.tooltipDiv.style.display="block"},hideTooltip:function(){if(this._rendererOptions.tooltip.show)this.tooltipDiv.style.display="none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=
- this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none";a?this.draw():this.stopDraw()},setData:function(a){this.data=a;this.hoveredMarkCluster=this.hoveredMarkPoint=null;this.markPoints=[];for(var b=0;b<a.length;b++)this.markPoints.push(new this.MarkPoint(b,a[b].geometry.coordinates[0],a[b].geometry.coordinates[1],
- a[b].properties));var c=Number.MAX_VALUE,d=Number.MAX_VALUE;this.markPoints.forEach(function(a){c=Math.min(c,a.lon);d=Math.min(d,a.lat)});this._markPointSWMercator=GeoGlobe.Util.transferToMercator([c,d]);var e=this;this.markClusterZoomMap=[];for(var f=this._parent.map.getMinZoom(),a=this.markClusterMaxZoom<this._parent.map.getMaxZoom()?this.markClusterMaxZoom:this._parent.map.getMaxZoom(),b=f;b<=a;b++){var g={},h=this._parent.map.getResolutions()[b]*80,j=this._parent.map.getResolutions()[b-1]*80,
- l=void 0,m=void 0,n=void 0,o=void 0,v=void 0,k=void 0;this.markPoints.forEach(function(a){l=Math.floor((a.mercator[0]-e._markPointSWMercator[0])/h);m=Math.floor((a.mercator[1]-e._markPointSWMercator[1])/h);n=l+"_"+m;if(g[n])g[n].count++,g[n].sumLonLat[0]+=a.lon,g[n].sumLonLat[1]+=a.lat,g[n].children.push(a);else if(g[n]={key:n,count:1,sumLonLat:[a.lon,a.lat],children:[a]},b>f)o=Math.floor((a.mercator[0]-e._markPointSWMercator[0])/j),v=Math.floor((a.mercator[1]-e._markPointSWMercator[1])/j),k=o+"_"+
- v,g[n].parent=e.markClusterZoomMap[b-1].markClustersMap[k]});for(n in g)g[n]=new this.MarkCluster(n,g[n].count,g[n].sumLonLat,g[n].children,g[n].parent);var p=this._mergeMarkClusters(g,h/2);this.markClusterZoomMap[b]={};this.markClusterZoomMap[b].zoom=b;this.markClusterZoomMap[b].markClusters=[];this.markClusterZoomMap[b].markClustersMap=p.markClustersMap;for(n in p.markClusters)this.markClusterZoomMap[b].markClusters.push(p.markClusters[n].init())}},_mergeMarkClusters:function(a,b){var c={},d;for(d in a)c[d]=
- a[d];var e={},f={},g=void 0,h=void 0;for(d in a)if(g=a[d],!f[d])for(var h=d.split("_"),j=+h[0],l=+h[1],m=-1;m<=1;m++)for(var n=-1;n<=1;n++)if(!(m===0&&n===0)){var o=j+m+"_"+(l+n);if(h=a[o]){var v=GeoGlobe.Util.transferToMercator([g.sumLonLat[0]/g.count,g.sumLonLat[1]/g.count]),k=GeoGlobe.Util.transferToMercator([h.sumLonLat[0]/h.count,h.sumLonLat[1]/h.count]),p=v[0]-k[0],v=v[1]-k[1];Math.sqrt(p*p+v*v)<=b&&(e[d]=e[d]||[],e[d].push(h),f[o]=1)}}for(var u in e)if(d=a[u]){f=e[u];for(g=0;g<f.length;g++)if(a[f[g].key])d.count+=
- f[g].count,d.sumLonLat[0]+=f[g].sumLonLat[0],d.sumLonLat[1]+=f[g].sumLonLat[1],d.children=d.children.concat(f[g].children),c[f[g].key]=d,delete a[f[g].key]}return{markClusters:a,markClustersMap:c}}});
- GeoGlobe.Visuals.Custom.Wind=GeoGlobe.Class4OL({_parent:null,canvas:null,canvasContext:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initCanvas()},_initCanvas:function(){this.canvas=document.createElement("canvas");this.canvasContext=this.canvas.getContext("2d")},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({velocityScale:0.011,particleMultiplier:0.002,maxWindIntensity:30,lineWidth:2,opacity:0.6,colors:["#00ffff","#64f0ff","#87e1ff",
- "#a0d0ff","#b5c0ff","#c6adff","#d49bff","#e185ff","#ec6dff","#ff1edb"]},{},this.rendererOptions)},_initWindy:function(){var a=this;this.Windy=function(){var b=a._parent.map,c=a._rendererOptions.velocityScale,d=a._rendererOptions.maxWindIntensity,e=100,f=a._rendererOptions.lineWidth,g=a._rendererOptions.particleMultiplier,h=a._rendererOptions.opacity,j=a._rendererOptions.colors,l=[NaN,NaN,null],m=2*Math.PI,n=Math.pow(10,-5.2),o=function(a,b,c,d,e,f){var g=1-a,h=1-b,j=g*h;h*=a;g*=b;b*=a;a=c[0]*j+d[0]*
- h+e[0]*g+f[0]*b;c=c[1]*j+d[1]*h+e[1]*g+f[1]*b;return[a,c,Math.sqrt(a*a+c*c)]},v=function(a,b){var c=a.data,d=b.data;return{header:a.header,data:function(a){return[c[a],d[a]]},interpolate:o}},k=function(a){var b=null,c=null;a.forEach(function(a){switch(a.header.parameterCategory+","+a.header.parameterNumber){case "2,2":b=a;break;case "2,3":c=a}});return v(b,c)},p=function(a){return a!==null&&a!==void 0},u=function(a,b,c){function d(b,c){var e=a[Math.round(b)];return e&&e[Math.round(c)]||l}d.release=
- function(){a=[]};d.randomize=function(a){var c,e,f=0;do c=Math.round(Math.floor(Math.random()*b.width)+b.x),e=Math.round(Math.floor(Math.random()*b.height)+b.y);while(d(c,e)[2]===null&&f++<30);a.x=c;a.y=e;return a};c(b,d)},s=function(a,b,c){var d=a[0];return{x:Math.round(d[0]),y:Math.max(Math.floor(d[1],0),0),xMax:b,yMax:Math.min(Math.ceil(a[1][1],c),c-1),width:b,height:c}},q=function(a){return a/180*Math.PI},r=function(a){return a/(Math.PI/180)},t=function(a){return Math.log(Math.tan(a/2+Math.PI/
- 4))},x=function(a,c,d){if(b._mapCRS)var e=d.width/(d.east-d.west),f=d.height/(d.north-d.south),c=(q(c)-d.west)*e,a=(d.north-q(a))*f;else var f=t(d.south),g=t(d.north),e=d.width/(d.east-d.west),f=d.height/(g-f),a=t(q(a)),c=(q(c)-d.west)*e,a=(g-a)*f;return[c,a]},A=function(a,d,e){var f=[],g=a.x;(function H(){for(var h=Date.now();g<a.width;){for(var j=g,k=[],l=a.y;l<=a.yMax;l+=2){var o,p=j,q=l;o=d;if(b._mapCRS)var s=o.east-o.west,t=o.north-o.south,p=r(o.west)+p/o.width*r(s),q=r(o.north)-q/o.height*r(t);
- else s=o.east-o.west,t=o.width/r(s)*360/(2*Math.PI),q=180/Math.PI*(2*Math.atan(Math.exp((o.height+t/2*Math.log((1+Math.sin(o.south))/(1-Math.sin(o.south)))-q)/t))-Math.PI/2),p=r(o.west)+p/o.width*r(s);o=[p,q];s=o[0];t=o[1];if(isFinite(s)&&(o=y(s,t))){var p=o[0]*c,q=o[1]*c,v=s,w=t,s=j,t=l,z=d,A=v<0?n:-n,B=w<0?n:-n,G=x(w,v+A,z),v=x(w+B,v,z),w=Math.cos(w/360*m);b._mapCRS&&(w=1);s=[(G[0]-s)/A/w,(G[1]-t)/A/w,(v[0]-s)/B,(v[1]-t)/B];o[0]=s[0]*p+s[2]*q;o[1]=s[1]*p+s[3]*q;k[l+1]=k[l]=o}}f[j+1]=f[j]=k;g+=2;
- if(Date.now()-h>1E3){setTimeout(H,25);return}}u(f,a,e)})()},B=function(b,c){function k(a){return a.charAt(0)=="#"?a.substring(1,7):a}function l(){o.forEach(function(a){a.length=0});q.forEach(function(a){if(a.age>e)c.randomize(a).age=0;var b=a.x,d=a.y,f=c(b,d),g=f[2];g===null?a.age=e:(b+=f[0],d+=f[1],c(b,d)[2]!==null?(a.xt=b,a.yt=d,o[n.indexFor(g)].push(a)):(a.x=b,a.y=d));a.age+=1})}function m(){var a=r.globalCompositeOperation;r.globalCompositeOperation="destination-in";r.fillRect(b.x,b.y,b.width,
- b.height);r.globalCompositeOperation=a;o.forEach(function(a,b){if(a.length>0)r.beginPath(),r.strokeStyle=n[b],a.forEach(function(a){r.moveTo(a.x,a.y);r.lineTo(a.xt,a.yt);a.x=a.xt;a.y=a.yt}),r.stroke()})}var n=function(a,b){var c=[];j.forEach(function(a){c.push("rgba("+parseInt(k(a).substring(0,2),16)+", "+parseInt(k(a).substring(2,4),16)+", "+parseInt(k(a).substring(4,6),16)+", "+h+")")});c.indexFor=function(a){return Math.floor(Math.min(a,b)/b*(c.length-1))};return c}(10,d),o=n.map(function(){return[]}),
- p=Math.round(b.width*b.height*g);/android|blackberry|iemobile|ipad|iphone|ipod|opera mini|webos/i.test(navigator.userAgent)&&(p*=0.075);for(var q=[],s=0;s<p;s++)q.push(c.randomize({age:Math.floor(Math.random()*e)+0}));var r=a.canvasContext;r.lineWidth=f;r.fillStyle="rgba(0, 0, 0, 0.97)";(function I(){try{w.timer=setTimeout(function(){requestAnimationFrame(I);l();m()},50)}catch(a){console.error(a)}})()},z=function(){w.field&&w.field.release();w.timer&&clearTimeout(w.timer)},y=function(a){var b=k(a),
- c=b.header,d=c.lo1,e=c.la1,f=c.dx,g=c.dy,a=c.nx,h=c.ny,j=new Date(c.refTime);j.setHours(j.getHours()+c.forecastTime);for(var l=[],c=0,j=Math.floor(a*f)>=360,m=0;m<h;m++){for(var n=[],o=0;o<a;o++,c++)n[o]=b.data(c);j&&n.push(n[0]);l[m]=n}return function(a,c){var h=(a-d-360*Math.floor((a-d)/360))/f,j=(e-c)/g,k=Math.floor(h),m=k+1,n=Math.floor(j),o=n+1,q;if(q=l[n]){var r=q[k],s=q[m];if(p(r)&&p(s)&&(q=l[o]))if(o=q[k],m=q[m],p(o)&&p(m))return b.interpolate(h-k,j-n,r,s,o,m)}return null}}(a.data),w={start:function(a,
- b,c,d){d={south:q(d[0][1]),north:q(d[1][1]),east:q(d[1][0]),west:q(d[0][0]),width:b,height:c};z();A(s(a,b,c),d,function(a,b){w.field=b;B(a,b)})},stop:z};return w}},render:function(){this._init_RendererOptions();this._initWindy();this.setData(this.data);this.setVisible(this.visibility)},draw:function(){setTimeout(function(){this.windy.start([[0,0],this.size],this.size[0],this.size[1],this.bounds)}.bind(this),1)},onMove:function(){this.stopDraw()},onMoveEnd:function(){this.redraw()},onResize:function(){this.width=
- this._parent.map.transform.width;this.height=this._parent.map.transform.height;this.redraw()},redraw:function(){this._calculateBoundsAndSize();this.canvas.width=Math.round(this.size[0]);this.canvas.height=Math.round(this.size[1]);this.source.setCoordinates([[this.bounds[0][0],this.bounds[1][1]],this.bounds[1],[this.bounds[1][0],this.bounds[0][1]],this.bounds[0]]);this.draw()},_calculateBoundsAndSize:function(){this.bounds=this._parent.getBounds();var a=this._parent.map.transform.locationCoordinate({lng:this.bounds[0][0],
- lat:this.bounds[0][1]}),b=this._parent.map.transform.locationCoordinate({lng:this.bounds[1][0],lat:this.bounds[1][1]});this.size=a.hasOwnProperty("x")&&a.hasOwnProperty("y")?[Math.abs(a.x-b.x)*this._parent.map.transform.scale*this._parent.map.transform.tileSize,Math.abs(a.y-b.y)*this._parent.map.transform.scale*this._parent.map.transform.tileSize]:[Math.abs(a.column-b.column)*this._parent.map.transform.tileSize,Math.abs(a.row-b.row)*this._parent.map.transform.tileSize]},clearCanvas:function(){this.canvasContext.clearRect(0,
- 0,this.canvas.width,this.canvas.height)},stopDraw:function(){this.clearCanvas();this.windy.stop()},destroy:function(){this.stopDraw();this.Windy=this.windy=this.canvasContext=this.canvas=this._parent=null},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._calculateBoundsAndSize();this.canvas.width=Math.round(this.size[0]);this.canvas.height=Math.round(this.size[1]);this._parent.map.addSource(this.id+"_source",{type:"canvas",canvas:this.canvas,animate:!0,coordinates:[[this.bounds[0][0],
- this.bounds[1][1]],this.bounds[1],[this.bounds[1][0],this.bounds[0][1]],this.bounds[0]]});this._parent.map.addLayer({type:"raster",id:this.id+"_layer",source:this.id+"_source"});this.source=this._parent.map.getSource(this.id+"_source");this.layer=this._parent.map.getLayer(this.id+"_layer");this.width=this._parent.map.transform.width;this.height=this._parent.map.transform.height},setVisible:function(a){this.visibility=a;this._parent.map.setLayoutProperty(this.id+"_layer","visibility",a?"visible":"none");
- a?this.draw():this.stopDraw()},setData:function(a){this.data=a;this.windy=new this.Windy}});
- GeoGlobe.Visuals.Custom.Kriging=GeoGlobe.Class4OL({_seq:0,boundary:{type:"Feature",properties:{},geometry:{type:"Polygon",coordinates:[[[-180,-90],[-180,90],[180,90],[-180,90],[-180,-90]]]}},_parent:null,canvas:null,canvasContext:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._timer=0;this._initCanvas();this._init_RendererOptions();"OffscreenCanvas"in window?(this.isWorker=!0,this._initWorker()):(this.isWorker=!1,this._initKriging())},_initCanvas:function(){this.canvas=
- document.createElement("canvas");this.canvasContext=this.canvas.getContext("2d");this.offscreenCanvas=document.createElement("canvas");this.offscreenCanvasContext=this.offscreenCanvas.getContext("bitmaprenderer")},_init_RendererOptions:function(){this._rendererOptions=GeoGlobe.Util.deepExtend({krigingModel:"exponential",krigingSigma2:0,krigingAlpha:100,krigingSize:100,opacity:0.71,colors:["#006837","#1a9850","#66bd63","#a6d96a","#d9ef8b","#ffffbf","#fee08b","#fdae61","#f46d43","#d73027","#a50026"]},
- {},this.rendererOptions);if(this.rendererOptions.colors)this._rendererOptions.colors=this.rendererOptions.colors},_initKriging:function(){Array.prototype.max=function(){return Math.max.apply(null,this)};Array.prototype.min=function(){return Math.min.apply(null,this)};Array.prototype.mean=function(){var a,b;for(b=a=0;a<this.length;a++)b+=this[a];return b/this.length};Array.prototype.rep=function(a){return Array(a).fill(this[0])};Array.prototype.pip=function(a,b){var c,d,e=!1;c=0;for(d=this.length-
- 1;c<this.length;d=c++)this[c][1]>b!=this[d][1]>b&&a<(this[d][0]-this[c][0])*(b-this[c][1])/(this[d][1]-this[c][1])+this[c][0]&&(e=!e);return e};this.kriging=function(){var a={};kriging_matrix_diag=function(a,c){var d,e=[0].rep(c*c);for(d=0;d<c;d++)e[d*c+d]=a;return e};kriging_matrix_transpose=function(a,c,d){var e,f,g=Array(d*c);for(e=0;e<c;e++)for(f=0;f<d;f++)g[f*c+e]=a[e*d+f];return g};kriging_matrix_scale=function(a,c,d,e){var f,g;for(f=0;f<d;f++)for(g=0;g<e;g++)a[f*e+g]*=c};kriging_matrix_add=
- function(a,c,d,e){var f,g,h=Array(d*e);for(f=0;f<d;f++)for(g=0;g<e;g++)h[f*e+g]=a[f*e+g]+c[f*e+g];return h};kriging_matrix_multiply=function(a,c,d,e,f){var g,h,j,l=Array(d*f);for(g=0;g<d;g++)for(h=0;h<f;h++)for(j=l[g*f+h]=0;j<e;j++)l[g*f+h]+=a[g*e+j]*c[j*f+h];return l};kriging_matrix_chol=function(a,c){var d,e,f,g=Array(c);for(d=0;d<c;d++)g[d]=a[d*c+d];for(d=0;d<c;d++){for(e=0;e<d;e++)g[d]-=a[d*c+e]*a[d*c+e];if(g[d]<=0)return!1;g[d]=Math.sqrt(g[d]);for(e=d+1;e<c;e++){for(f=0;f<d;f++)a[e*c+d]-=a[e*
- c+f]*a[d*c+f];a[e*c+d]/=g[d]}}for(d=0;d<c;d++)a[d*c+d]=g[d];return!0};kriging_matrix_chol2inv=function(a,c){var d,e,f,g;for(d=0;d<c;d++){a[d*c+d]=1/a[d*c+d];for(e=d+1;e<c;e++){g=0;for(f=d;f<e;f++)g-=a[e*c+f]*a[f*c+d];a[e*c+d]=g/a[e*c+e]}}for(d=0;d<c;d++)for(e=d+1;e<c;e++)a[d*c+e]=0;for(d=0;d<c;d++){a[d*c+d]*=a[d*c+d];for(f=d+1;f<c;f++)a[d*c+d]+=a[f*c+d]*a[f*c+d];for(e=d+1;e<c;e++)for(f=e;f<c;f++)a[d*c+e]+=a[f*c+d]*a[f*c+e]}for(d=0;d<c;d++)for(e=0;e<d;e++)a[d*c+e]=a[e*c+d]};kriging_matrix_solve=function(a,
- c){var d=Array(c*c),e=Array(c),f=Array(c),g=Array(c),h,j,l,m,n,o;for(h=0;h<c;h++)for(m=0;m<c;m++)d[h*c+m]=h==m?1:0;for(m=0;m<c;m++)g[m]=0;for(h=0;h<c;h++){for(m=o=0;m<c;m++)if(g[m]!=1)for(n=0;n<c;n++)g[n]==0&&Math.abs(a[m*c+n])>=o&&(o=Math.abs(a[m*c+n]),l=m,j=n);++g[j];if(l!=j){for(m=0;m<c;m++)o=a[l*c+m],a[l*c+m]=a[j*c+m],a[j*c+m]=o;for(m=0;m<c;m++)o=d[l*c+m],d[l*c+m]=d[j*c+m],d[j*c+m]=o}f[h]=l;e[h]=j;if(a[j*c+j]==0)return!1;n=1/a[j*c+j];a[j*c+j]=1;for(m=0;m<c;m++)a[j*c+m]*=n;for(m=0;m<c;m++)d[j*
- c+m]*=n;for(n=0;n<c;n++)if(n!=j){o=a[n*c+j];for(m=a[n*c+j]=0;m<c;m++)a[n*c+m]-=a[j*c+m]*o;for(m=0;m<c;m++)d[n*c+m]-=d[j*c+m]*o}}for(m=c-1;m>=0;m--)if(f[m]!=e[m])for(n=0;n<c;n++)o=a[n*c+f[m]],a[n*c+f[m]]=a[n*c+e[m]],a[n*c+e[m]]=o;return!0};kriging_variogram_gaussian=function(a,c,d,e,f){return c+(e-c)/d*(1-Math.exp(-(1/f)*Math.pow(a/d,2)))};kriging_variogram_exponential=function(a,c,d,e,f){return c+(e-c)/d*(1-Math.exp(-(1/f)*(a/d)))};kriging_variogram_spherical=function(a,c,d,e){if(a>d)return c+(e-
- c)/d;return c+(e-c)/d*(1.5*(a/d)-0.5*Math.pow(a/d,3))};a.train=function(a,c,d,e,f,g){var h={t:a,x:c,y:d,nugget:0,range:0,sill:0,A:1/3,n:0};switch(e){case "gaussian":h.model=kriging_variogram_gaussian;break;case "exponential":h.model=kriging_variogram_exponential;break;case "spherical":h.model=kriging_variogram_spherical}var j,l,m,n,o=a.length,v=Array((o*o-o)/2);for(m=j=0;j<o;j++)for(l=0;l<j;l++,m++)v[m]=Array(2),v[m][0]=Math.pow(Math.pow(c[j]-c[l],2)+Math.pow(d[j]-d[l],2),0.5),v[m][1]=Math.abs(a[j]-
- a[l]);v.sort(function(a,b){return a[0]-b[0]});h.range=v[(o*o-o)/2-1][0];var k=(o*o-o)/2>30?30:(o*o-o)/2,p=h.range/k,u=[0].rep(k),s=[0].rep(k);if(k<30)for(n=0;n<k;n++)u[n]=v[n][0],s[n]=v[n][1];else{for(n=m=l=j=0;j<k&&l<(o*o-o)/2;j++,m=0){for(;v[l][0]<=(j+1)*p;)if(u[n]+=v[l][0],s[n]+=v[l][1],l++,m++,l>=(o*o-o)/2)break;m>0&&(u[n]/=m,s[n]/=m,n++)}if(n<2)return h}o=n;h.range=u[o-1]-u[0];m=[1].rep(2*o);l=Array(o);n=h.A;for(j=0;j<o;j++){switch(e){case "gaussian":m[j*2+1]=1-Math.exp(-(1/n)*Math.pow(u[j]/
- h.range,2));break;case "exponential":m[j*2+1]=1-Math.exp(-(1/n)*u[j]/h.range);break;case "spherical":m[j*2+1]=1.5*(u[j]/h.range)-0.5*Math.pow(u[j]/h.range,3)}l[j]=s[j]}j=kriging_matrix_transpose(m,o,2);e=kriging_matrix_multiply(j,m,2,o,2);e=kriging_matrix_add(e,kriging_matrix_diag(1/g,2),2,2);g=e.slice(0);kriging_matrix_chol(e,2)?kriging_matrix_chol2inv(e,2):(kriging_matrix_solve(g,2),e=g);o=kriging_matrix_multiply(kriging_matrix_multiply(e,j,2,2,o),l,2,o,1);h.nugget=o[0];h.sill=o[1]*h.range+h.nugget;
- o=h.n=c.length;g=Array(o*o);for(j=0;j<o;j++){for(l=0;l<j;l++)g[j*o+l]=h.model(Math.pow(Math.pow(c[j]-c[l],2)+Math.pow(d[j]-d[l],2),0.5),h.nugget,h.range,h.sill,h.A),g[l*o+j]=g[j*o+l];g[j*o+j]=h.model(0,h.nugget,h.range,h.sill,h.A)}c=kriging_matrix_add(g,kriging_matrix_diag(f,o),o,o);d=c.slice(0);kriging_matrix_chol(c,o)?kriging_matrix_chol2inv(c,o):(kriging_matrix_solve(d,o),c=d);g=c.slice(0);a=kriging_matrix_multiply(c,a,o,o,1);h.K=g;h.M=a;return h};a.predict=function(a,c,d){var e,f=Array(d.n);for(e=
- 0;e<d.n;e++)f[e]=d.model(Math.pow(Math.pow(a-d.x[e],2)+Math.pow(c-d.y[e],2),0.5),d.nugget,d.range,d.sill,d.A);return kriging_matrix_multiply(f,d.M,1,d.n,1)[0]};a.variance=function(a,c,d){var e,f=Array(d.n);for(e=0;e<d.n;e++)f[e]=d.model(Math.pow(Math.pow(a-d.x[e],2)+Math.pow(c-d.y[e],2),0.5),d.nugget,d.range,d.sill,d.A);return d.model(0,d.nugget,d.range,d.sill,d.A)+kriging_matrix_multiply(kriging_matrix_multiply(f,d.K,1,d.n,d.n),f,1,d.n,1)[0]};a.grid=function(b,c,d){var e,f,g,h=b.length;if(h!=0){var j=
- [b[0][0][0],b[0][0][0]],l=[b[0][0][1],b[0][0][1]];for(e=0;e<h;e++)for(f=0;f<b[e].length;f++)b[e][f][0]<j[0]&&(j[0]=b[e][f][0]),b[e][f][0]>j[1]&&(j[1]=b[e][f][0]),b[e][f][1]<l[0]&&(l[0]=b[e][f][1]),b[e][f][1]>l[1]&&(l[1]=b[e][f][1]);var m,n,o=Array(2),v=Array(2),k=Array(2),p=Array(2);f=Math.ceil((j[1]-j[0])/d);g=Math.ceil((l[1]-l[0])/d);var u=Array(f+1);for(e=0;e<=f;e++)u[e]=Array(g+1);for(e=0;e<h;e++){k[0]=b[e][0][0];k[1]=k[0];p[0]=b[e][0][1];p[1]=p[0];for(f=1;f<b[e].length;f++)b[e][f][0]<k[0]&&(k[0]=
- b[e][f][0]),b[e][f][0]>k[1]&&(k[1]=b[e][f][0]),b[e][f][1]<p[0]&&(p[0]=b[e][f][1]),b[e][f][1]>p[1]&&(p[1]=b[e][f][1]);o[0]=Math.floor((k[0]-(k[0]-j[0])%d-j[0])/d);o[1]=Math.ceil((k[1]-(k[1]-j[1])%d-j[0])/d);v[0]=Math.floor((p[0]-(p[0]-l[0])%d-l[0])/d);v[1]=Math.ceil((p[1]-(p[1]-l[1])%d-l[0])/d);for(f=o[0];f<=o[1];f++)for(g=v[0];g<=v[1];g++)m=j[0]+f*d,n=l[0]+g*d,b[e].pip(m,n)&&(u[f][g]=a.predict(m,n,c))}u.xlim=j;u.ylim=l;u.zlim=[c.t.min(),c.t.max()];u.width=d;return u}};a.contour=function(){};a.plot=
- function(a,c,d,e,f){var g=a.getContext("2d");g.clearRect(0,0,a.width,a.height);var h=[d[1]-d[0],e[1]-e[0],c.zlim[1]-c.zlim[0]],j,l,m,n,o,v,k,p=c.length,u=c[0].length,s=Math.ceil(c.width*a.width/(d[1]-d[0])),q=Math.ceil(c.width*a.height/(e[1]-e[0]));j=0;for(k=n=void 0;j<p;j++){l=0;for(v=n;l<u;l++)if(c[j][l]!=void 0){m=a.width*(j*c.width+c.xlim[0]-d[0])/h[0];n=a.height*(1-(l*c.width+c.ylim[0]-e[0])/h[1]);o=(c[j][l]-c.zlim[0])/h[2];o<0&&(o=0);o>1&&(o=1);g.fillStyle=f[Math.floor((f.length-1)*o)];m=Math.round(m-
- s/2);o=Math.round(n-q/2);var r=s,t=q;k!==void 0&&(t=k-o);v!==void 0&&(r=v-m);k=o;n=m;g.fillRect(m,o,r,t)}}};return a}()},_initWorker:function(){var a=this,b=new Blob(['Array.prototype.max=function(){return Math.max.apply(null,this)};Array.prototype.min=function(){return Math.min.apply(null,this)};Array.prototype.mean=function(){var a,b;for(a=0,b=0;a<this.length;a++){b+=this[a]}return b/this.length};Array.prototype.rep=function(a){return Array(a).fill(this[0])};Array.prototype.pip=function(a,f){var d,b,e=false;for(d=0,b=this.length-1;d<this.length;b=d++){if(((this[d][1]>f)!=(this[b][1]>f))&&(a<(this[b][0]-this[d][0])*(f-this[d][1])/(this[b][1]-this[d][1])+this[d][0])){e=!e}}return e};this.kriging=function(){var c={};kriging_matrix_diag=function(h,g){var e,f=[0].rep(g*g);for(e=0;e<g;e++){f[e*g+e]=h}return f};kriging_matrix_transpose=function(l,k,e){var g,f,h=Array(e*k);for(g=0;g<k;g++){for(f=0;f<e;f++){h[f*k+g]=l[g*e+f]}}return h};kriging_matrix_scale=function(l,k,h,e){var g,f;for(g=0;g<h;g++){for(f=0;f<e;f++){l[g*e+f]*=k}}};kriging_matrix_add=function(o,k,l,e){var g,f,h=Array(l*e);for(g=0;g<l;g++){for(f=0;f<e;f++){h[g*e+f]=o[g*e+f]+k[g*e+f]}}return h};kriging_matrix_multiply=function(h,f,l,o,g){var s,r,q,e=Array(l*g);for(s=0;s<l;s++){for(r=0;r<g;r++){e[s*g+r]=0;for(q=0;q<o;q++){e[s*g+r]+=h[s*o+q]*f[q*g+r]}}}return e};kriging_matrix_chol=function(o,m){var g,f,e,h,l=Array(m);for(g=0;g<m;g++){l[g]=o[g*m+g]}for(g=0;g<m;g++){for(f=0;f<g;f++){l[g]-=o[g*m+f]*o[g*m+f]}if(l[g]<=0){return false}l[g]=Math.sqrt(l[g]);for(f=g+1;f<m;f++){for(e=0;e<g;e++){o[f*m+g]-=o[f*m+e]*o[g*m+e]}o[f*m+g]/=l[g]}}for(g=0;g<m;g++){o[g*m+g]=l[g]}return true};kriging_matrix_chol2inv=function(m,l){var g,f,e,h;for(g=0;g<l;g++){m[g*l+g]=1/m[g*l+g];for(f=g+1;f<l;f++){h=0;for(e=g;e<f;e++){h-=m[f*l+e]*m[e*l+g]}m[f*l+g]=h/m[f*l+f]}}for(g=0;g<l;g++){for(f=g+1;f<l;f++){m[g*l+f]=0}}for(g=0;g<l;g++){m[g*l+g]*=m[g*l+g];for(e=g+1;e<l;e++){m[g*l+g]+=m[e*l+g]*m[e*l+g]}for(f=g+1;f<l;f++){for(e=f;e<l;e++){m[g*l+f]+=m[e*l+g]*m[e*l+f]}}}for(g=0;g<l;g++){for(f=0;f<g;f++){m[g*l+f]=m[f*l+g]}}};kriging_matrix_solve=function(f,o){var p=o;var C=Array(o*o);var g=Array(o);var D=Array(o);var w=Array(o);var u,B,E,s,r,q,h;var v,z,e,A;for(u=0;u<o;u++){for(s=0;s<o;s++){if(u==s){C[u*o+s]=1}else{C[u*o+s]=0}}}for(s=0;s<o;s++){w[s]=0}for(u=0;u<o;u++){v=0;for(s=0;s<o;s++){if(w[s]!=1){for(r=0;r<o;r++){if(w[r]==0){if(Math.abs(f[s*o+r])>=v){v=Math.abs(f[s*o+r]);E=s;B=r}}}}}++(w[B]);if(E!=B){for(q=0;q<o;q++){A=f[E*o+q];f[E*o+q]=f[B*o+q];f[B*o+q]=A}for(q=0;q<p;q++){A=C[E*o+q];C[E*o+q]=C[B*o+q];C[B*o+q]=A}}D[u]=E;g[u]=B;if(f[B*o+B]==0){return false}e=1/f[B*o+B];f[B*o+B]=1;for(q=0;q<o;q++){f[B*o+q]*=e}for(q=0;q<p;q++){C[B*o+q]*=e}for(h=0;h<o;h++){if(h!=B){z=f[h*o+B];f[h*o+B]=0;for(q=0;q<o;q++){f[h*o+q]-=f[B*o+q]*z}for(q=0;q<p;q++){C[h*o+q]-=C[B*o+q]*z}}}}for(q=(o-1);q>=0;q--){if(D[q]!=g[q]){for(r=0;r<o;r++){A=f[r*o+D[q]];f[r*o+D[q]]=f[r*o+g[q]];f[r*o+g[q]]=A}}}return true};var b=function(j,i,g,f,e){return i+((f-i)/g)*(1-Math.exp(-(1/e)*Math.pow(j/g,2)))};var a=function(j,i,g,f,e){return i+((f-i)/g)*(1-Math.exp(-(1/e)*(j/g)))};var d=function(j,i,g,f,e){if(j>g){return i+(f-i)/g}return i+((f-i)/g)*(1.5*(j/g)-0.5*Math.pow(j/g,3))};c.train=function(D,w,v,o,B,q){var Q={t:D,x:w,y:v,nugget:0,range:0,sill:0,A:1/3,n:0};switch(o){case"gaussian":Q.model=b;break;case"exponential":Q.model=a;break;case"spherical":Q.model=d;break}var O,N,L,J,I=D.length;var p=Array((I*I-I)/2);for(O=0,L=0;O<I;O++){for(N=0;N<O;N++,L++){p[L]=Array(2);p[L][0]=Math.pow(Math.pow(w[O]-w[N],2)+Math.pow(v[O]-v[N],2),0.5);p[L][1]=Math.abs(D[O]-D[N])}}p.sort(function(j,i){return j[0]-i[0]});Q.range=p[(I*I-I)/2-1][0];var s=((I*I-I)/2)>30?30:(I*I-I)/2;var P=Q.range/s;var G=[0].rep(s);var R=[0].rep(s);if(s<30){for(J=0;J<s;J++){G[J]=p[J][0];R[J]=p[J][1]}}else{for(O=0,N=0,L=0,J=0;O<s&&N<((I*I-I)/2);O++,L=0){while(p[N][0]<=((O+1)*P)){G[J]+=p[N][0];R[J]+=p[N][1];N++;L++;if(N>=((I*I-I)/2)){break}}if(L>0){G[J]/=L;R[J]/=L;J++}}if(J<2){return Q}}I=J;Q.range=G[I-1]-G[0];var h=[1].rep(2*I);var g=Array(I);var H=Q.A;for(O=0;O<I;O++){switch(o){case"gaussian":h[O*2+1]=1-Math.exp(-(1/H)*Math.pow(G[O]/Q.range,2));break;case"exponential":h[O*2+1]=1-Math.exp(-(1/H)*G[O]/Q.range);break;case"spherical":h[O*2+1]=1.5*(G[O]/Q.range)-0.5*Math.pow(G[O]/Q.range,3);break}g[O]=R[O]}var z=kriging_matrix_transpose(h,I,2);var f=kriging_matrix_multiply(z,h,2,I,2);f=kriging_matrix_add(f,kriging_matrix_diag(1/q,2),2,2);var F=f.slice(0);if(kriging_matrix_chol(f,2)){kriging_matrix_chol2inv(f,2)}else{kriging_matrix_solve(F,2);f=F}var m=kriging_matrix_multiply(kriging_matrix_multiply(f,z,2,2,I),g,2,I,1);Q.nugget=m[0];Q.sill=m[1]*Q.range+Q.nugget;Q.n=w.length;I=w.length;var u=Array(I*I);for(O=0;O<I;O++){for(N=0;N<O;N++){u[O*I+N]=Q.model(Math.pow(Math.pow(w[O]-w[N],2)+Math.pow(v[O]-v[N],2),0.5),Q.nugget,Q.range,Q.sill,Q.A);u[N*I+O]=u[O*I+N]}u[O*I+O]=Q.model(0,Q.nugget,Q.range,Q.sill,Q.A)}var E=kriging_matrix_add(u,kriging_matrix_diag(B,I),I,I);var e=E.slice(0);if(kriging_matrix_chol(E,I)){kriging_matrix_chol2inv(E,I)}else{kriging_matrix_solve(e,I);E=e}var u=E.slice(0);var r=kriging_matrix_multiply(E,D,I,I,1);Q.K=u;Q.M=r;return Q};c.predict=function(e,j,h){var g,f=Array(h.n);\nfor(g=0;g<h.n;g++){f[g]=h.model(Math.pow(Math.pow(e-h.x[g],2)+Math.pow(j-h.y[g],2),0.5),h.nugget,h.range,h.sill,h.A)}return kriging_matrix_multiply(f,h.M,1,h.n,1)[0]};c.variance=function(e,j,h){var g,f=Array(h.n);for(g=0;g<h.n;g++){f[g]=h.model(Math.pow(Math.pow(e-h.x[g],2)+Math.pow(j-h.y[g],2),0.5),h.nugget,h.range,h.sill,h.A)}return h.model(0,h.nugget,h.range,h.sill,h.A)+kriging_matrix_multiply(kriging_matrix_multiply(f,h.K,1,h.n,h.n),f,1,h.n,1)[0]};c.grid=function(B,w,q){var v,u,s,p=B.length;if(p==0){return}var e=[B[0][0][0],B[0][0][0]];var g=[B[0][0][1],B[0][0][1]];for(v=0;v<p;v++){for(u=0;u<B[v].length;u++){if(B[v][u][0]<e[0]){e[0]=B[v][u][0]}if(B[v][u][0]>e[1]){e[1]=B[v][u][0]}if(B[v][u][1]<g[0]){g[0]=B[v][u][1]}if(B[v][u][1]>g[1]){g[1]=B[v][u][1]}}}var h,f;var D=Array(2),C=Array(2);var r=Array(2);var z=Array(2);var m=Math.ceil((e[1]-e[0])/q);var l=Math.ceil((g[1]-g[0])/q);var o=Array(m+1);for(v=0;v<=m;v++){o[v]=Array(l+1)}for(v=0;v<p;v++){r[0]=B[v][0][0];r[1]=r[0];z[0]=B[v][0][1];z[1]=z[0];for(u=1;u<B[v].length;u++){if(B[v][u][0]<r[0]){r[0]=B[v][u][0]}if(B[v][u][0]>r[1]){r[1]=B[v][u][0]}if(B[v][u][1]<z[0]){z[0]=B[v][u][1]}if(B[v][u][1]>z[1]){z[1]=B[v][u][1]}}D[0]=Math.floor(((r[0]-((r[0]-e[0])%q))-e[0])/q);D[1]=Math.ceil(((r[1]-((r[1]-e[1])%q))-e[0])/q);C[0]=Math.floor(((z[0]-((z[0]-g[0])%q))-g[0])/q);C[1]=Math.ceil(((z[1]-((z[1]-g[1])%q))-g[0])/q);for(u=D[0];u<=D[1];u++){for(s=C[0];s<=C[1];s++){h=e[0]+u*q;f=g[0]+s*q;if(B[v].pip(h,f)){o[u][s]=c.predict(h,f,w)}}}}o.xlim=e;o.ylim=g;o.zlim=[w.t.min(),w.t.max()];o.width=q;return o};c.contour=function(f,e,g){};c.plot=function(g,e,A,s,f){var B=g.getContext("2d");B.clearRect(0,0,g.width,g.height);var r=[A[1]-A[0],s[1]-s[0],e.zlim[1]-e.zlim[0]];var q,p,w,v,u;var h=e.length;var k=e[0].length;var o=Math.ceil(e.width*g.width/(A[1]-A[0]));var l=Math.ceil(e.width*g.height/(s[1]-s[0]));for(q=0;q<h;q++){for(p=0;p<k;p++){if(e[q][p]==undefined){continue}w=g.width*(q*e.width+e.xlim[0]-A[0])/r[0];v=g.height*(1-(p*e.width+e.ylim[0]-s[0])/r[1]);u=(e[q][p]-e.zlim[0])/r[2];if(u<0){u=0}if(u>1){u=1}B.fillStyle=f[Math.floor((f.length-1)*u)];B.fillRect(Math.round(w-o/2),Math.round(v-l/2),o,l)}}};return c}();var variogram,t,x,y,rendererOptions,boundary,seq,timer;function renderToCanvas(o,A,B,l){var u=rendererOptions.krigingSize;var D=new OffscreenCanvas(A[0],A[1]);var k=D.getContext("2d");k.globalAlpha=rendererOptions.opacity;var a,d,b,g,r,v;if(isContain(o)){var K=[];d=(o[1][0]-o[0][0])/u;K.push([o[0],[o[0][0],o[1][1]],o[1],[o[1][0],o[0][1]]]);a=kriging.grid(K,variogram,d)}else{d=(boundary.bounds[1][0]-boundary.bounds[0][0])/u;a=kriging.grid(boundary.geometry.coordinates,variogram,d)}v=o;b=[v[0][0],v[1][0]],g=[v[0][1],v[1][1]],r=rendererOptions.colors;var w=[b[1]-b[0],g[1]-g[0],a.zlim[1]-a.zlim[0]];var I,H,s,q,p,J,h=undefined,q=undefined;var C=a.length;var E=a[0].length;var N=Math.ceil(a.width*D.width/(b[1]-b[0]));var M=Math.ceil(a.width*D.height/(g[1]-g[0]));for(I=0;I<C;I++){ly=undefined;var L;for(H=0;H<E;H++){if(a[I][H]==undefined){continue}s=D.width*(I*a.width+a.xlim[0]-b[0])/w[0];q=D.height*(1-(H*a.width+a.ylim[0]-g[0])/w[1]);if(Array.isArray(r[0])){p=a[I][H];r.forEach(function(c){if(p>c[0]){J=c[1]}})}else{p=(a[I][H]-a.zlim[0])/w[2];if(p<0){p=0}if(p>1){p=1}J=r[Math.floor((r.length-1)*p)]}k.fillStyle=J;var f=Math.round(s-N/2);var e=Math.round(q-M/2);var G=N,F=M;if(ly!==undefined){F=ly-e}if(h!==undefined){G=h-f}ly=e;L=f;k.fillRect(f,e,G,F)}h=L}l(D)}self.onmessage=function(a){var b=a.data;if(b.t){t=b.t;x=b.x;y=b.y;rendererOptions=b.rendererOptions;boundary=b.boundary;variogram=kriging.train(t,x,y,rendererOptions.krigingModel,rendererOptions.krigingSigma2,rendererOptions.krigingAlpha);boundary.bounds=getBounds(boundary.geometry.coordinates[0])}else{seq=b.seq;postMessage({state:1,seq:seq});if(!variogram){return}clearTimeout(timer);timer=setTimeout(function(){renderToCanvas(b.bounds,b.size,b.seq,function(c){var d=c.transferToImageBitmap();postMessage({seq:seq,bitmap:d},[d])})},100)}};function getBounds(b){var a,e,d,c;b.forEach(function(f,g,h){if(g===0){a=f[0];d=f[0];e=f[1];c=f[1]}if(f[0]<a){a=f[0]}if(f[0]>d){d=f[0]}if(f[1]<e){e=f[1]}if(f[1]>c){c=f[1]}});return[[a,e],[d,c]]}function isPointInPolygon(j,f){var d=f.length;var h=true;var e=0;var c=2e-10;var m,k;var a=j;m=f[0];for(var b=1;b<=d;++b){if(a[0]==m[0]&&a[1]==m[1]){return h}k=f[b%d];if(a[1]<Math.min(m[1],k[1])||a[1]>Math.max(m[1],k[1])){m=k;continue}if(a[1]>Math.min(m[1],k[1])&&a[1]<Math.max(m[1],k[1])){if(a[0]<=Math.max(m[0],k[0])){if(m[1]==k[1]&&a[0]>=Math.min(m[0],k[0])){return h}if(m[0]==k[0]){if(m[0]==a[0]){return h}else{++e}}else{var l=(a[1]-m[1])*(k[0]-m[0])/(k[1]-m[1])+m[0];if(Math.abs(a[0]-l)<c){return h}if(a[0]<l){++e}}}}else{if(a[1]==k[1]&&a[0]<=k[0]){var g=f[(b+1)%d];if(a[1]>=Math.min(m[1],g[1])&&a[1]<=Math.max(m[1],g[1])){++e}else{e+=2}}}m=k}if(e%2==0){return false}else{return true}}function isContain(d){var a=false;var c=boundary.geometry.coordinates[0];a=isPointInPolygon(d[0],c);if(!a){return false}a=isPointInPolygon(d[1],c);\nif(!a){return false}a=isPointInPolygon([d[0][0],d[1][1]],c);if(!a){return false}a=isPointInPolygon([d[1][0],d[0][1]],c);return a};'],
- {type:"text/javascript"});this.workerObjectURL=URL.createObjectURL(b);this.worker=new Worker(this.workerObjectURL);this.worker.onmessage=function(b){b.data.seq===a._seq&&b.data.bitmap&&a.canvasContext.drawImage(b.data.bitmap,0,0)};URL.revokeObjectURL(this.workerObjectURL)},_initWorkerTrain:function(){if(this.data&&Array.isArray(this.data)){var a=[],b=[],c=[];this.data.forEach(function(d){a.push(d.properties.value);b.push(d.geometry.coordinates[0]);c.push(d.geometry.coordinates[1])});a.length!==0&&
- this.worker.postMessage({t:a,x:b,y:c,boundary:this.boundary,rendererOptions:this._rendererOptions})}},_initTrain:function(){this.kriging||this._initKriging();if(this.data&&Array.isArray(this.data)){var a=[],b=[],c=[];this.data.forEach(function(d){a.push(d.properties.value);b.push(d.geometry.coordinates[0]);c.push(d.geometry.coordinates[1])});if(a.length!==0)this.variogram=this.kriging.train(a,b,c,this._rendererOptions.krigingModel,this._rendererOptions.krigingSigma2,this._rendererOptions.krigingAlpha)}},
- _initGrid:function(){this.variogram||this._initTrain();var a;a=this._rendererOptions.krigingSize;var b=this.getBounds(this.boundary.geometry.coordinates[0]);this.isContain(this.bounds)?(b=[],a=(this.bounds[1][0]-this.bounds[0][0])/a,b.push([this.bounds[0],[this.bounds[0][0],this.bounds[1][1]],this.bounds[1],[this.bounds[1][0],this.bounds[0][1]]]),this.grid=this.kriging.grid(b,this.variogram,a)):(a=(b[1][0]-b[0][0])/a,this.grid=this.kriging.grid(this.boundary.geometry.coordinates,this.variogram,a))},
- _initPlot:function(a,b){this.grid||this._initGrid();this.canvasContext.globalAlpha=this._rendererOptions.opacity;var c=this.canvas,d=this.canvasContext,e=this.grid,a=[this.bounds[0][0],this.bounds[1][0]],b=[this.bounds[0][1],this.bounds[1][1]],f=this._rendererOptions.colors,g=[a[1]-a[0],b[1]-b[0],e.zlim[1]-e.zlim[0]],h,j,l,m,n,o,v=void 0;m=void 0;var k=e.length,p=e[0].length,u=Math.ceil(e.width*c.width/(a[1]-a[0])),s=Math.ceil(e.width*c.height/(b[1]-b[0]));for(h=0;h<k;h++){ly=void 0;for(j=0;j<p;j++)if(e[h][j]!=
- void 0){l=c.width*(h*e.width+e.xlim[0]-a[0])/g[0];m=c.height*(1-(j*e.width+e.ylim[0]-b[0])/g[1]);Array.isArray(f[0])?(n=e[h][j],f.forEach(function(a){n>a[0]&&(o=a[1])})):(n=(e[h][j]-e.zlim[0])/g[2],n<0&&(n=0),n>1&&(n=1),o=f[Math.floor((f.length-1)*n)]);d.fillStyle=o;var q=Math.round(l-u/2);m=Math.round(m-s/2);var r=u,t=s;ly!==void 0&&(t=ly-m);v!==void 0&&(r=v-q);ly=m;l=q;d.fillRect(q,m,r,t)}v=l}},render:function(a){this._init_RendererOptions();this.setData(this.data);this.setVisible(this.visibility);
- this.autoRedraw&&this.stopDraw();this.draw(a)},draw:function(a){!this.data||this.data.length===0?this.clearCanvas():this.isWorker?(this._seq++,this.worker.postMessage({seq:this._seq,size:this.size,bounds:this.bounds})):(this._initGrid(a?a:500),this._initPlot(this.bounds[0],this.bounds[1]))},onMove:function(){this.autoRedraw&&this.stopDraw()},onMoveEnd:function(){this.autoRedraw&&this.redraw()},onResize:function(){if(this.autoRedraw)this.width=this._parent.map.transform.width,this.height=this._parent.map.transform.height,
- this.redraw()},redraw:function(){this._calculateBoundsAndSize();this.canvas.width=Math.round(this.size[0]);this.canvas.height=Math.round(this.size[1]);this.offscreenCanvas.width=this.canvas.width;this.offscreenCanvas.height=this.canvas.height;this.source.setCoordinates([[this.bounds[0][0],this.bounds[1][1]],this.bounds[1],[this.bounds[1][0],this.bounds[0][1]],this.bounds[0]]);this.draw()},_calculateBoundsAndSize:function(){this._rendererOptions||this._init_RendererOptions();this.bounds=this._parent.getBounds();
- var a=this._parent.map.transform.locationCoordinate({lng:this.bounds[0][0],lat:this.bounds[0][1]}),b=this._parent.map.transform.locationCoordinate({lng:this.bounds[1][0],lat:this.bounds[1][1]});this.size=a.hasOwnProperty("x")&&a.hasOwnProperty("y")?[Math.abs(a.x-b.x)*this._parent.map.transform.scale*this._parent.map.transform.tileSize,Math.abs(a.y-b.y)*this._parent.map.transform.scale*this._parent.map.transform.tileSize]:[Math.abs(a.column-b.column)*this._parent.map.transform.tileSize,Math.abs(a.row-
- b.row)*this._parent.map.transform.tileSize];this.size[0]=Math.round(this.size[0]);this.size[1]=Math.round(this.size[1])},clearCanvas:function(){this.canvasContext.clearRect(0,0,this.canvas.width,this.canvas.height)},stopDraw:function(){this.clearCanvas()},destroy:function(){this.bounds=this.size=this._rendererOptions=this.offscreenCanvasContext=this.offscreenCanvas=this.canvasContext=this.canvas=this._parent=null;this.kriging&&(this.kriging=null);this.variogram&&(this.variogram=null);this.grid&&(this.grid=
- null);this.source=this.layer=null;this.worker.terminate();this.worker=null},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._calculateBoundsAndSize();this.canvas.width=Math.round(this.size[0]);this.canvas.height=Math.round(this.size[1]);this.offscreenCanvas.width=this.canvas.width;this.offscreenCanvas.height=this.canvas.height;this._parent.map.addSource(this.id+"_source_GeoGlobe.Visuals.Custom.Kriging",{type:"canvas",canvas:this.canvas,animate:!0,coordinates:[[this.bounds[0][0],
- this.bounds[1][1]],this.bounds[1],[this.bounds[1][0],this.bounds[0][1]],this.bounds[0]]});this._parent.map.addLayer({type:"raster",id:this.id+"_layer_GeoGlobe.Visuals.Custom.Kriging",source:this.id+"_source_GeoGlobe.Visuals.Custom.Kriging"});this.source=this._parent.map.getSource(this.id+"_source_GeoGlobe.Visuals.Custom.Kriging");this.layer=this._parent.map.getLayer(this.id+"_layer_GeoGlobe.Visuals.Custom.Kriging");this.width=this._parent.map.transform.width;this.height=this._parent.map.transform.height},
- setVisible:function(a){this.visibility=a;this._parent.map.setLayoutProperty(this.id+"_layer_GeoGlobe.Visuals.Custom.Kriging","visibility",a?"visible":"none")},setData:function(a){this.data=a;this.isWorker?this._initWorkerTrain():this._initTrain()},getBounds:function(a){var b,c,d,e;a.forEach(function(a,g){g===0&&(b=a[0],d=a[0],c=a[1],e=a[1]);a[0]<b&&(b=a[0]);a[0]>d&&(d=a[0]);a[1]<c&&(c=a[1]);a[1]>e&&(e=a[1])});return[[b,c],[d,e]]},isPointInPolygon:function(a,b){var c=b.length,d=0,e,f;e=b[0];for(var g=
- 1;g<=c;++g){if(a[0]==e[0]&&a[1]==e[1])return!0;f=b[g%c];if(!(a[1]<Math.min(e[1],f[1])||a[1]>Math.max(e[1],f[1])))if(a[1]>Math.min(e[1],f[1])&&a[1]<Math.max(e[1],f[1])){if(a[0]<=Math.max(e[0],f[0])){if(e[1]==f[1]&&a[0]>=Math.min(e[0],f[0]))return!0;if(e[0]==f[0])if(e[0]==a[0])return!0;else++d;else{e=(a[1]-e[1])*(f[0]-e[0])/(f[1]-e[1])+e[0];if(Math.abs(a[0]-e)<2.0E-10)return!0;a[0]<e&&++d}}}else if(a[1]==f[1]&&a[0]<=f[0]){var h=b[(g+1)%c];a[1]>=Math.min(e[1],h[1])&&a[1]<=Math.max(e[1],h[1])?++d:d+=
- 2}e=f}return d%2==0?!1:!0},isContain:function(a){var b=!1,c=this.boundary.geometry.coordinates[0],b=this.isPointInPolygon(a[0],c);if(!b)return!1;b=this.isPointInPolygon(a[1],c);if(!b)return!1;b=this.isPointInPolygon([a[0][0],a[1][1]],c);if(!b)return!1;return b=this.isPointInPolygon([a[1][0],a[0][1]],c)}});
- GeoGlobe.Visuals.Grid=GeoGlobe.Class4OL(GeoGlobe.Visuals,{type:"grid",map:null,container:null,layers:[],initialize:function(){GeoGlobe.Visuals.prototype.initialize.apply(this,arguments);this.layers=[]},addTo:function(){GeoGlobe.Visuals.prototype.addTo.apply(this,arguments);this.container.className="geoglobe-Grid-container"},render:function(){for(var a=0;a<this.layers.length;a++)this.layers[a].render()},addLayer:function(a){a.id?this.map.getLayer(a.id)?console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u91cd\u590d\uff01"):
- this.layers.push(a):console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u4e3a\u7a7a\uff01")},removeLayer:function(a){for(var b=[],c=0;c<this.layers.length;c++)a!==this.layers[c].id&&b.push(this.layers[c]);this.layers=b},moveLayer:function(a,b){this._order=this.layers.map(function(a){return a.id});this._order.splice(this._order.indexOf(a),1);this._order.splice(b?this._order.indexOf(b):this._order.length,0,a);for(var c=0;c<this._order.length;c++)for(var d=0;d<this.layers.length;d++)if(this._order[c]===
- this.layers[d].id)this.layers[d].div.style.zIndex=c},getLayer:function(a){for(var b=0;b<this.layers.length;b++)if(a===this.layers[b].id)return this.layers[b]},remove:function(){if(this.container){for(;this.layers.length;)this.removeLayer(this.layers[this.layers.length-1].id);GeoGlobe.Visuals.prototype.remove.apply(this);for(var a in this._listeners)this._listeners.hasOwnProperty(a)&&(this.off(a,this._listeners[a]),delete this._listeners[a]);this.container=this.map=null;this.layers=[];this._order=
- []}}});
- GeoGlobe.Visuals.Grid.Typhoon=GeoGlobe.Class4OL(GeoGlobe.Visuals,{_parent:null,canvas:[],canvasContext:[],initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this._initContainer();this._initCanvas()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute")},initParticles:function(){var a=this;this.Particle=function(a,c,d){this.x=a;this.y=c;this.oldY=this.oldX=-1;this.age=d;this.opacity=1};
- this.Particle.prototype.updateXY=function(b,c,d){c=a._parent.map.project([this.x,this.y]);b=c.x;c=c.y;if(d)return d.x=b,d.y=c,d;return new a.Vector(b,c)}},_initCanvas:function(){this.canvas=[];this.canvasContext=[];this.canvas.push(document.createElement("canvas"));this.canvasContext.push(this.canvas[0].getContext("2d"));this.cacheCanvas=[];this.cacheCanvasContext=[];this.cacheCanvas.push(document.createElement("canvas"));this.cacheCanvasContext.push(this.cacheCanvas[0].getContext("2d"));this.canvas[0].style.position=
- "absolute";this.div.appendChild(this.canvas[0]);this.setVisible(this.visibility)},setVisible:function(a){this.visibility=a;this.canvas[0].style.display=a?"block":"none"},render:function(){this.particles=[];this.initParticles();this.setData(this.data);var a,b=this;(function d(){requestAnimationFrame(d);if(b._parent.map.isMoving()||b.RELOADED||b.RESIZE){a=b.particles.length;for(var e=new b.Vector(0,0);a--;)b.particles[a].updateXY(b.particles[a].x,b.particles[a].y,e);b.canvas[0].width=b.width;b.RELOADED&&
- (b.RELOADED=!1);b.RESIZE&&(b.RESIZE=!1)}b.moveThings();b.draw()})();this.RENDERED=!0},moveThings:function(){for(var a=this.particles,b=0;b<a.length;b++)if(a[b].age>0&&this.inBounds(a[b].x,a[b].y)){var c=this.getValue(a[b].x,a[b].y);a[b].x+=0.01*c.x;a[b].y+=0.01*c.y;a[b].age--}else a[b]=this.makeParticle()},draw:function(){this.colors=[];this.rgb="0, 0, 0";this.background="rgb("+this.rgb+")";this.backgroundAlpha="rgba("+this.rgb+", .02)";var a=this.particles;this.canvasContext[0].globalCompositeOperation=
- "destination-out";this.first?(this.canvasContext[0].fillStyle=this.background,this.first=!1):this.canvasContext[0].fillStyle=this.backgroundAlpha;this.canvasContext[0].fillRect(0,0,this.canvas[0].width,this.canvas[0].height);this.canvasContext[0].globalCompositeOperation="source-over";this.canvasContext[0].lineWidth=this.options.lineWidth||1;this.canvasContext[0].strokeStyle=this.options.lineColor||"rgba(138,43,226,1)";for(var b=new this.Vector(0,0),c=0;c<a.length;c++){var d=this.particles[c];this.particles[c].updateXY(d.x,
- d.y,b);d.oldX!=-1&&(this.canvasContext[0].beginPath(),this.canvasContext[0].moveTo(b.x,b.y),this.canvasContext[0].lineTo(d.oldX,d.oldY),this.canvasContext[0].stroke());d.oldX=b.x;d.oldY=b.y}},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div);this.canvas[0].width=this.cacheCanvas[0].width=this.width=this._parent.map.transform.width;this.canvas[0].height=this.cacheCanvas[0].height=this.height=this._parent.map.transform.height},setData:function(a){this.data=
- a;var b=this;this.inBounds=function(a,b){return a>=this.field.x0&&a<this.field.x1&&b>=this.field.y0&&b<this.field.y1};this.bilinear=function(a,b,c){var d=Math.floor(b),e=Math.floor(c),f=Math.ceil(b),g=Math.ceil(c);b-=d;c-=e;return this.Data[d][e][a]*(1-b)*(1-c)+this.Data[f][e][a]*b*(1-c)+this.Data[d][g][a]*(1-b)*c+this.Data[f][g][a]*b*c};this.getValue=function(a,c){var d=(this.field.gridWidth-1-1.0E-6)*(a-this.field.x0)/(this.field.x1-this.field.x0),e=(this.field.gridHeight-1-1.0E-6)*(c-this.field.y0)/
- (this.field.y1-this.field.y0),f=this.bilinear("x",d,e),d=this.bilinear("y",d,e);return new b.Vector(f,d)};this.Vector=function(a,b){this.x=a;this.y=b};this.Vector.prototype.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)};this.makeParticle=function(){var a=Math.random(),b=Math.random();return new this.Particle(a*this.field.x0+(1-a)*this.field.x1,b*this.field.y0+(1-b)*this.field.y1,1+40*Math.random())};for(var c=[],d=a.gridWidth,e=a.gridHeight,f=0,g=0;g<d;g++){c[g]=[];for(var h=0;h<
- e;h++){var j=a.field[f++],l=a.field[f++],j=new this.Vector(j,l);c[g][h]=j}}this.field=a;this.numParticles=5E3;for(f=0;f<this.numParticles;f++)this.particles.push(this.makeParticle());this.Data=c}});
- GeoGlobe.Visuals.MapV=GeoGlobe.Class4OL(GeoGlobe.Visuals,{type:"mapv",map:null,container:null,layers:[],initialize:function(){GeoGlobe.Visuals.prototype.initialize.apply(this,arguments);this.layers=[];window.mapv||console.error("\u4f7f\u7528MapV\u53ef\u89c6\u5316\u56fe\u5c42\u524d\uff0c\u9700\u5f15\u5165mapv\u5e93\uff01")},addTo:function(){GeoGlobe.Visuals.prototype.addTo.apply(this,arguments);this.container.className="geoglobe-mapv-container"},render:function(){for(var a=0;a<this.layers.length;a++)this.layers[a].render()},
- addLayer:function(a){a.id?this.map.getLayer(a.id)?console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u91cd\u590d\uff01"):this.layers.push(a):console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u4e3a\u7a7a\uff01")},removeLayer:function(a){for(var b=[],c=0;c<this.layers.length;c++)a===this.layers[c].id?this.layers[c].destroy&&this.layers[c].destroy():b.push(this.layers[c]);this.layers=b},moveLayer:function(a,b){this._order=this.layers.map(function(a){return a.id});this._order.splice(this._order.indexOf(a),
- 1);this._order.splice(b?this._order.indexOf(b):this._order.length,0,a);for(var c=0;c<this._order.length;c++)for(var d=0;d<this.layers.length;d++)if(this._order[c]===this.layers[d].id)this.layers[d].div.style.zIndex=c},getLayer:function(a){for(var b=0;b<this.layers.length;b++)if(a===this.layers[b].id)return this.layers[b]},remove:function(){if(this.container){for(;this.layers.length;)this.removeLayer(this.layers[this.layers.length-1].id);GeoGlobe.Visuals.prototype.remove.apply(this);for(var a in this._listeners)this._listeners.hasOwnProperty(a)&&
- (this.off(a,this._listeners[a]),delete this._listeners[a]);this.container=this.map=null;this.layers=[];this._order=[]}}});
- GeoGlobe.Visuals.MapV.Bubble=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="bubble";c.dragdrawing=this.dragdrawing;c.container=this.div;this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,b,c)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=
- a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.Category=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="category";c.dragdrawing=this.dragdrawing;c.container=this.div;this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,b,c)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=
- a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.Choropleth=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="choropleth";c.dragdrawing=this.dragdrawing;c.container=this.div;this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,b,c)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=
- a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.Grid=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="grid";c.dragdrawing=this.dragdrawing;c.container=this.div;this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,b,c)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=
- a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.HeatMap=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="heatmap";c.dragdrawing=this.dragdrawing;c.container=this.div;this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,b,c)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=
- a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.HoneyComb=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="honeycomb";c.dragdrawing=this.dragdrawing;c.container=this.div;this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,b,c)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=
- a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.Icon=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this,b=this._parent.map,c=new mapv.DataSet(this.data),d=this.rendererOptions,e=new Image;e.src=this.icon;e.onload=function(){d.icon=e;d.draw="icon";d.dragdrawing=a.dragdrawing;d.container=a.div;a._layer&&a.div.removeChild(a._layer.canvasLayer.canvas);a._layer=new mapv.mapboxGLMapLayer(b,c,d)}},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=
- []},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.Intensity=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="intensity";c.dragdrawing=this.dragdrawing;c.container=this.div;var d=1,e;for(e in c.gradient)c.gradient.hasOwnProperty(e)&&Number(e)>d&&(d=Number(e));if(d>1){var f={};for(e in c.gradient)c.gradient.hasOwnProperty(e)&&(f[e/d]=c.gradient[e]);c.gradient=f}this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,
- b,c)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.Simple=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this,b=this._parent.map,c=new mapv.DataSet(this.data),d=this.rendererOptions;d.draw="simple";d.dragdrawing=this.dragdrawing;d.container=this.div;d.methods={};d.methods.click=function(b,c){b&&a._parent.fire("overlayerclick",{layer:a,feature:b,event:c})};d.methods.mousemove=function(b,c){b&&a._parent.fire("overlayerhover",{layer:a,feature:b,event:c})};this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=
- new mapv.mapboxGLMapLayer(b,c,d)},destroy:function(){this._parent.container.removeChild(this.div);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.MapV.Text=GeoGlobe.Class4OL({_parent:null,visibility:!0,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data);this._initContainer()},_initContainer:function(){this.div=document.createElement("div");this.div.setAttribute("id",this.id);this.div.setAttribute("style","position:absolute");this.div.style.display=this.visibility?"block":"none"},addTo:function(a){this._parent=a;this._parent.addLayer(this);this._parent.container.appendChild(this.div)},
- remove:function(){this._parent.removeLayer(this.id)},render:function(){var a=this._parent.map,b=new mapv.DataSet(this.data),c=this.rendererOptions;c.draw="text";c.dragdrawing=this.dragdrawing;c.container=this.div;this._layer&&this.div.removeChild(this._layer.canvasLayer.canvas);this._layer=new mapv.mapboxGLMapLayer(a,b,c)},destroy:function(){this._parent.container.removeChild(this._layer.canvasLayer.canvas);this.rendererOptions=this.options=this._layer=this._parent=null;this.data=[]},setVisible:function(a){this.visibility=
- a;this.div.style.display=a?"block":"none"},setData:function(a){this.data=a.map(function(a){return GeoGlobe.Util.extend(a.properties,{geometry:a.geometry})})}});
- GeoGlobe.Visuals.DeckGL=GeoGlobe.Class4OL(GeoGlobe.Visuals,{type:"deckgl",map:null,container:null,layers:[],_deckgl:null,initialize:function(){GeoGlobe.Visuals.prototype.initialize.apply(this,arguments);this.layers=[];window.deck||console.error("\u4f7f\u7528DeckGL\u53ef\u89c6\u5316\u56fe\u5c42\u524d\uff0c\u9700\u5f15\u5165deckgl\u5e93\uff01")},addTo:function(){GeoGlobe.Visuals.prototype.addTo.apply(this,arguments);this.container.className="geoglobe-deckgl-container";var a=this;this._deckgl=new deck.DeckGL({container:this.container,
- geoMap:this.map,onWebGLInitialized:function(b){a.fire("overlayerinit",{param:b})},onLayerClick:function(b,c,d){a.fire("overlayerclick",{param:{info:b,pickedInfos:c,event:d}})},onLayerHover:function(b,c,d){a.fire("overlayerhover",{param:{info:b,pickedInfos:c,event:d}})},layers:[]})},render:function(){var a=[];if(this._order)for(var b=0;b<this._order.length;b++)for(var c=0;c<this.layers.length;c++)this.layers[c].id===this._order[b]&&a.push(this.layers[c].getInnerLayer());else for(c=0;c<this.layers.length;c++)a.push(this.layers[c].getInnerLayer());
- this._deckgl.props.layers=a;this._deckgl.setProps()},addLayer:function(a){a.id?this.map.getLayer(a.id)?console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u91cd\u590d\uff01"):this.layers.push(a):console.error("\u56fe\u5c42id\u5c5e\u6027\u4e0d\u80fd\u4e3a\u7a7a\uff01")},removeLayer:function(a){for(var b=[],c=0;c<this.layers.length;c++)a!==this.layers[c].id&&b.push(this.layers[c]);this.layers=b},moveLayer:function(a,b){this._order=this.layers.map(function(a){return a.id});this._order.splice(this._order.indexOf(a),
- 1);this._order.splice(b?this._order.indexOf(b):this._order.length,0,a);this.render()},getLayer:function(a){for(var b=0;b<this.layers.length;b++)if(a===this.layers[b].id)return this.layers[b]},remove:function(){if(this.container){for(;this.layers.length;)this.removeLayer(this.layers[this.layers.length-1].id);GeoGlobe.Visuals.prototype.remove.apply(this);for(var a in this._listeners)this._listeners.hasOwnProperty(a)&&(this.off(a,this._listeners[a]),delete this._listeners[a]);this.container=this.map=
- null;this.layers=[];this._order=[];this._deckgl=null}}});
- GeoGlobe.Visuals.DeckGL.HexagonLayer=GeoGlobe.Class4OL({id:"1",name:"",visible:!0,pickable:!0,fp64:!1,opacity:1,data:[],colorDomain:null,colorRange:[[255,255,178],[254,217,118],[254,178,76],[253,141,60],[240,59,32],[189,0,38]],lowerPercentile:0,upperPercentile:100,elevationDomain:null,elevationRange:[0,1E3],elevationLowerPercentile:0,elevationUpperPercentile:100,elevationScale:1,radius:1E3,coverage:1,extruded:!1,lightSettings:{},getPosition:function(a){return a.geometry.type==="Point"?a.geometry.coordinates:
- null},getColorValue:function(a){return a.length},getElevationValue:function(a){return a.length},onSetColorDomain:function(){},onSetElevationDomain:function(){},_parent:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a)},addTo:function(a){this._parent=a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getInnerLayer:function(){var a={};GeoGlobe.Util.extend(a,this);return new deck.HexagonLayer(a)}});
- GeoGlobe.Visuals.DeckGL.ScatterplotLayer=GeoGlobe.Class4OL({id:"1",name:"",visible:!0,pickable:!0,fp64:!1,opacity:1,data:[],radiusScale:1,outline:!1,strokeWidth:1,radiusMinPixels:0,radiusMaxPixels:Number.MAX_SAFE_INTEGER,getPosition:function(a){return a.geometry.type==="Point"?a.geometry.coordinates:null},getColor:function(a){return a.color||[0,0,0,255]},getRadius:function(a){return a.radius||1},_parent:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a)},addTo:function(a){this._parent=
- a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getInnerLayer:function(){var a={};GeoGlobe.Util.extend(a,this);return new deck.ScatterplotLayer(a)}});
- GeoGlobe.Visuals.DeckGL.GeoJsonLayer=GeoGlobe.Class4OL({id:"1",name:"",visible:!0,pickable:!0,fp64:!1,data:[],filled:!0,stroked:!1,extruded:!1,wireframe:!1,lineWidthScale:1,lineWidthMinPixels:0,lineWidthMaxPixels:Number.MAX_SAFE_INTEGER,lineJointRounded:!1,lineMiterLimit:4,elevationScale:1,pointRadiusScale:1,pointRadiusMinPixels:0,pointRadiusMaxPixels:Number.MAX_SAFE_INTEGER,lightSettings:{},getLineColor:function(a){return a.properties.lineColor||[0,0,0,255]},getFillColor:function(a){return a.properties.fillColor||
- [0,0,0,255]},getRadius:function(a){return a.properties.radius||a.properties.size||1},getLineWidth:function(a){return a.properties.lineWidth||1},getElevation:function(a){return a.properties.elevation||1E3},_parent:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a)},addTo:function(a){this._parent=a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getInnerLayer:function(){var a={};GeoGlobe.Util.extend(a,this);
- return new deck.GeoJsonLayer(a)}});
- GeoGlobe.Visuals.DeckGL.PolygonLayer=GeoGlobe.Class4OL({id:"1",name:"",visible:!0,pickable:!0,fp64:!1,data:[],filled:!0,stroked:!1,extruded:!1,wireframe:!1,lineWidthScale:1,lineWidthMinPixels:0,lineWidthMaxPixels:Number.MAX_SAFE_INTEGER,lineJointRounded:!1,lineMiterLimit:4,elevationScale:1,lightSettings:{},getPolygon:function(a){return a.geometry.type==="Polygon"?a.geometry.coordinates:null},getLineColor:function(a){return a.properties.lineColor||[0,0,0,255]},getFillColor:function(a){return a.properties.fillColor||[0,
- 0,0,255]},getLineWidth:function(a){return a.properties.lineWidth||1},getElevation:function(a){return a.properties.elevation||1E3},_parent:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a)},addTo:function(a){this._parent=a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getInnerLayer:function(){var a={};GeoGlobe.Util.extend(a,this);return new deck.PolygonLayer(a)}});
- GeoGlobe.Visuals.DeckGL.LineLayer=GeoGlobe.Class4OL({id:"1",name:"",visible:!0,pickable:!0,fp64:!1,data:[],getSourcePosition:function(a){return a.geometry.type==="LineString"?a.geometry.coordinates[0]:null},getTargetPosition:function(a){return a.geometry.type==="LineString"?a.geometry.coordinates[1]:null},getColor:function(a){return a.properties.color||[0,0,0,255]},getStrokeWidth:function(){return 1},_parent:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a)},addTo:function(a){this._parent=
- a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getInnerLayer:function(){var a={};GeoGlobe.Util.extend(a,this);return new deck.LineLayer(a)}});
- GeoGlobe.Visuals.DeckGL.TrackLayer=GeoGlobe.Class4OL({id:"1",name:"",visible:!0,pickable:!0,fp64:!1,opacity:1,rounded:!1,data:[],getPath:function(a){return a.geometry.type==="LineString"?a.geometry.coordinates:null},getWidth:function(a){return a.properties.width||1},getColor:function(a){return a.properties.color||[0,0,0,255]},getDashArray:function(){return[0,0]},_parent:null,initialize:function(a){this.options=a;GeoGlobe.Util.extend(this,a);this.setData(this.data)},addTo:function(a){this._parent=
- a;this._parent.addLayer(this)},remove:function(){this._parent.removeLayer(this.id)},render:function(){this._parent.render()},getInnerLayer:function(){var a={};GeoGlobe.Util.extend(a,this);a.data=this.paths;return new deck.PathLayer(a)},_initTracker:function(){var a=this;this.tracker={status:"ready",multiple:100,current:0,currentPoint:a.trackPoints[0],startPoint:a.trackPoints[0],endPoint:a.trackPoints[a.trackPoints.length-1],play:function(){requestAnimationFrame(a.tracker.play);if(a.tracker.status===
- "playing"){a.tracker.current+=a.tracker.multiple;if(a.tracker.current<a.tracker.startPoint[1])a.tracker.current=a.tracker.startPoint[1];if(a.tracker.current>a.tracker.endPoint[1])a.tracker.current=a.tracker.endPoint[1],a.tracker.status="stop";a.tracker.currentPoint=a.trackPoints[a.tracker.current];a._updateTrackData();a.render()}},start:function(){if(this.status==="ready")this.status="playing",this.play();else if(this.status==="stop")this.status="playing"},pause:function(){this.status={playing:"pause",
- pause:"playing"}[this.status]||this.status},restart:function(){if(this.status!=="ready")this.status="playing",this.current=0}}},_linearInterpolation:function(){console.time("\u7ebf\u6027\u63d2\u503c\u8017\u65f6");this.trackPoints=[];var a,b,c,d,e,f,g,h,j,l,m,n,o;n=0;for(o=this.data.length;n<o-1;n++){a=this.data[n].geometry.coordinates[0];b=this.data[n+1].geometry.coordinates[0];c=this.data[n].geometry.coordinates[1];d=this.data[n+1].geometry.coordinates[1];e=(new Date(this.data[n].properties.time)).getTime();
- f=(new Date(this.data[n+1].properties.time)).getTime();g=b-a;h=d-c;f-=e;if(g!==0||h!==0)j=a%360*Math.PI/180,b=b%360*Math.PI/180,l=c%360*Math.PI/180,m=d%360*Math.PI/180,d=Math.sin(b-j)*Math.cos(m),j=Math.cos(l)*Math.sin(m)-Math.sin(l)*Math.cos(m)*Math.cos(b-j),j=Math.atan2(d,j)%(2*Math.PI)*180/Math.PI,j<0&&(j+=360);d=0;for(b=~~(f/(1E3/60)+0.5);d<=b;d++)this.trackPoints.push([n,this.trackPoints.length,a+g*d/b,c+h*d/b,j,e+~~(f*d/b+0.5)])}console.timeEnd("\u7ebf\u6027\u63d2\u503c\u8017\u65f6")},_updateTrackData:function(){for(var a=
- [{type:"Feature",properties:{T:0},geometry:{type:"LineString",coordinates:[]}},{type:"Feature",properties:{T:1},geometry:{type:"LineString",coordinates:[]}},{type:"Feature",properties:{T:2},geometry:{type:"LineString",coordinates:[]}},{type:"Feature",properties:{T:0},geometry:{type:"LineString",coordinates:[]}}],b=0,c=this.data.length;b<c-1;b++)b<this.tracker.startPoint[0]?(a[0].geometry.coordinates.push(this.data[b].geometry.coordinates),a[0].geometry.coordinates.push(this.data[b+1].geometry.coordinates)):
- b===this.tracker.startPoint[0]?(a[0].geometry.coordinates.push(this.data[b].geometry.coordinates),a[0].geometry.coordinates.push([this.tracker.startPoint[2],this.tracker.startPoint[3]]),b===this.tracker.currentPoint[0]?(a[1].geometry.coordinates.push([this.tracker.startPoint[2],this.tracker.startPoint[3]]),a[1].geometry.coordinates.push([this.tracker.currentPoint[2],this.tracker.currentPoint[3]]),b===this.tracker.endPoint[0]?(a[2].geometry.coordinates.push([this.tracker.currentPoint[2],this.tracker.currentPoint[3]]),
- a[2].geometry.coordinates.push([this.tracker.endPoint[2],this.tracker.endPoint[3]]),a[3].geometry.coordinates.push([this.tracker.endPoint[2],this.tracker.endPoint[3]]),a[3].geometry.coordinates.push(this.data[b+1].geometry.coordinates)):(a[2].geometry.coordinates.push([this.tracker.currentPoint[2],this.tracker.currentPoint[3]]),a[2].geometry.coordinates.push(this.data[b+1].geometry.coordinates))):(a[1].geometry.coordinates.push([this.tracker.startPoint[2],this.tracker.startPoint[3]]),a[1].geometry.coordinates.push(this.data[b+
- 1].geometry.coordinates))):b<this.tracker.endPoint[0]?b<this.tracker.currentPoint[0]?(a[1].geometry.coordinates.push(this.data[b].geometry.coordinates),a[1].geometry.coordinates.push(this.data[b+1].geometry.coordinates)):(b===this.tracker.currentPoint[0]?(a[1].geometry.coordinates.push(this.data[b].geometry.coordinates),a[1].geometry.coordinates.push([this.tracker.currentPoint[2],this.tracker.currentPoint[3]]),a[2].geometry.coordinates.push([this.tracker.currentPoint[2],this.tracker.currentPoint[3]])):
- a[2].geometry.coordinates.push(this.data[b].geometry.coordinates),a[2].geometry.coordinates.push(this.data[b+1].geometry.coordinates)):(b===this.tracker.endPoint[0]?(b===this.tracker.currentPoint[0]?(a[1].geometry.coordinates.push(this.data[b].geometry.coordinates),a[1].geometry.coordinates.push([this.tracker.currentPoint[2],this.tracker.currentPoint[3]]),a[2].geometry.coordinates.push([this.tracker.currentPoint[2],this.tracker.currentPoint[3]])):a[2].geometry.coordinates.push(this.data[b].geometry.coordinates),
- a[2].geometry.coordinates.push([this.tracker.endPoint[2],this.tracker.endPoint[3]]),a[3].geometry.coordinates.push([this.tracker.endPoint[2],this.tracker.endPoint[3]])):a[3].geometry.coordinates.push(this.data[b].geometry.coordinates),a[3].geometry.coordinates.push(this.data[b+1].geometry.coordinates));this.paths=[];a.forEach(function(a){var b=[];a.geometry.coordinates.forEach(function(a){(!b.length||a[0]!==b[b.length-1][0]||a[1]!==b[b.length-1][1])&&b.push(a)});if(b.length>1)a.geometry.coordinates=
- b,this.paths.push(a)}.bind(this))},setRange:function(a,b){if(a<=this.trackPoints[0][5])this.tracker.startPoint=this.trackPoints[0],this.tracker.currentPoint=this.trackPoints[0],this.tracker.current=0;else if(a<this.trackPoints[this.trackPoints.length-1][5])for(var c=0;c<this.trackPoints.length;c++){if(a<=this.trackPoints[c][5]){this.tracker.startPoint=this.trackPoints[c];this.tracker.currentPoint=this.trackPoints[c];this.tracker.current=c;break}}else this.tracker.startPoint=this.trackPoints[this.trackPoints.length-
- 1],this.tracker.currentPoint=this.trackPoints[this.trackPoints.length-1],this.tracker.current=this.trackPoints.length-1;if(b>=this.trackPoints[this.trackPoints.length-1][5])this.tracker.endPoint=this.trackPoints[this.trackPoints.length-1];else if(b>this.trackPoints[0][5])for(c=this.trackPoints.length-1;c>=0;c--){if(b>=this.trackPoints[c][5]){this.tracker.endPoint=this.trackPoints[c];break}}else this.tracker.endPoint=this.trackPoints[0];this._updateTrackData()},setData:function(a){this.data=a;this.paths=
- [];if(this.data.length){this.paths.push({type:"Feature",properties:{T:2},geometry:{type:"LineString",coordinates:[]}});for(a=0;a<this.data.length;a++)this.paths[0].geometry.coordinates.push(this.data[a].geometry.coordinates)}this._linearInterpolation();this._initTracker()}});
|