UNPKG

thematic-earth

Version:

HTML-based, whole-Earth thematic maps using locally hosted data layers

2 lines 2.79 kB
/* 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 PointFeature from'../features/point-feature.class.js';import ProjectedPoint from'../projection/projected-point.class.js';import expect from'../dev/expect.js';export default class Crosshairs extends BaseSpatialFile{constructor(e,t,r){super(e),this.parallelFrequency=Number(t),this.meridianFrequency=Number(r),this.ticks=[],(Number.isNaN(this.parallelFrequency)||this.parallelFrequency<=0||this.parallelFrequency>30)&&(this.parallelFrequency=10),(Number.isNaN(this.meridianFrequency)||this.meridianFrequency<=0||this.meridianFrequency>30)&&(this.meridianFrequency=10);for(let e=-90;e<=90;e+=this.parallelFrequency)for(let t=-180;t<180;t+=this.meridianFrequency){var i=new PointFeature;i.setPoint(new ProjectedPoint(e,t)),i.kvPairs.latitude=e,i.kvPairs.longitude=t,this.ticks.push(i),this.addFeatureToLookupMap(i)}this.localPointsNeedGeoCoords=!0,this.localPointsNeedProjection=!0,this.localPointsNeedTransformation=!0,this.localPointsNeedPlacement=!0,this.thematicEarthElement.signal.broadcast('catalog/spatialFileAdded',{spatialFileType:'crosshairs',parallelFrequency:t,meridianFrequency:r}),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 s=0;s<this.ticks.length;s++)this.ticks[s].computeFeatureStyle(e,t,r.tessClassname,r.tessIdentifier,s,i)}))}runCourtesyValidator(e,t,r){expect(e,'Visualizer'),expect(t,'Layer'),expect(r,'Number'),super.runCourtesyValidator((()=>{for(var i=0;i<this.ticks.length;i++)this.ticks[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.ticks.length;r++)this.ticks[r].toGeoCoords(e,t)}))}projection(e,t){expect(e,'RenderClock'),expect(t,'OrthographicProjection'),super.projection(e,t,(()=>{for(var r=0;r<this.ticks.length;r++)this.ticks[r].toPlane(e,t)}))}transformation(e,t){expect(e,'RenderClock'),expect(t,'CartesianTransformation'),super.transformation(e,t,(()=>{for(var r=0;r<this.ticks.length;r++)this.ticks[r].toPixels(e,t)}))}placement(e,t){expect(e,'RenderClock'),expect(t,'Viewport'),super.placement(e,t,(()=>{for(var r=0;r<this.ticks.length;r++)this.ticks[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.ticks.length;i++)this.ticks[i].drawFeature(e,t,r)}))}discoverFeatures(e,t,r){for(var i=0;i<this.ticks.length;i++){var s=this.ticks[i];if(s.featureIsVisible(r)&&s.isPointerAtPoint(e,t))return s}return null}}