thematic-earth
Version:
HTML-based, whole-Earth thematic maps using locally hosted data layers
2 lines • 2.54 kB
JavaScript
/* Copyright (c) 2023 Read Write Tools. Legal use subject to the Thematic Earth Software License Agreement. */
import BaseSpatialFile from'../catalog/base-spatial-file.class.js';import LineFeature from'../features/line-feature.class.js';import ProjectedPoint from'../projection/projected-point.class.js';import expect from'../dev/expect.js';export default class NamedMeridians extends BaseSpatialFile{constructor(e,t){for(var r in super(e),this.meridians=[],t)if(t.hasOwnProperty(r)){var i=new LineFeature;i.featureName=r,i.kvPairs.name=i.featureName;var a=t[r];if(a<-180||a>180)continue;for(var s=-90;s<=90;s++)i.addPoint(new ProjectedPoint(s,a));this.meridians.push(i),this.addFeatureToLookupMap(i)}this.localPointsNeedGeoCoords=!0,this.localPointsNeedProjection=!0,this.localPointsNeedTransformation=!0,this.localPointsNeedPlacement=!0,this.thematicEarthElement.signal.broadcast('catalog/spatialFileAdded',{spatialFileType:'named-meridians',namedCircles:t}),Object.seal(this)}recomputeStyles(e,t,r,i){expect(e,'RenderClock'),expect(t,'Visualizer'),expect(r,'Layer'),expect(i,'Number'),super.recomputeStyles(e,t,r,(()=>{for(var a=0;a<this.meridians.length;a++)this.meridians[a].computeFeatureStyle(e,t,r.tessClassname,r.tessIdentifier,a,i)}))}runCourtesyValidator(e,t,r){expect(e,'Visualizer'),expect(t,'Layer'),expect(r,'Number'),super.runCourtesyValidator((()=>{for(var i=0;i<this.meridians.length;i++)this.meridians[i].runCourtesyValidator(e,t.tessClassname,t.tessIdentifier,i,r)}))}rotation(e,t){expect(e,'RenderClock'),expect(t,'GeocentricCoordinates'),super.rotation(e,t,(()=>{for(var r=0;r<this.meridians.length;r++)this.meridians[r].toGeoCoords(e,t)}))}projection(e,t){expect(e,'RenderClock'),expect(t,'OrthographicProjection'),super.projection(e,t,(()=>{for(var r=0;r<this.meridians.length;r++)this.meridians[r].toPlane(e,t)}))}transformation(e,t){expect(e,'RenderClock'),expect(t,'CartesianTransformation'),super.transformation(e,t,(()=>{for(var r=0;r<this.meridians.length;r++)this.meridians[r].toPixels(e,t)}))}placement(e,t){expect(e,'RenderClock'),expect(t,'Viewport'),super.placement(e,t,(()=>{for(var r=0;r<this.meridians.length;r++)this.meridians[r].toViewportCanvas(e,t)}))}drawLayer(e,t,r){expect(e,'RenderClock'),expect(t,'Earth'),expect(r,'Layer'),super.drawLayer(e,(()=>{for(var i=0;i<this.meridians.length;i++)this.meridians[i].drawFeature(e,t,r)}))}discoverFeatures(e,t,r){for(var i=0;i<this.meridians.length;i++){var a=this.meridians[i];if(a.featureIsVisible(r)&&a.isPointerOnLine(e,t))return a}return null}}