diff --git a/src/website/utils/voyagePath.ts b/src/website/utils/voyagePath.ts new file mode 100644 index 000000000..d327af978 --- /dev/null +++ b/src/website/utils/voyagePath.ts @@ -0,0 +1,431 @@ +// 421 GPS fixes from backup tracker, Aug 20–24 2026 (UTC). Used for static voyage path display. +export const VOYAGE_PATH: [number, number][] = [ + [48.834475, -125.137001], + [48.838466, -125.136638], + [48.841556, -125.14638], + [48.836063, -125.15891], + [48.829776, -125.170368], + [48.82365, -125.181376], + [48.81776, -125.192428], + [48.812331, -125.203565], + [48.808061, -125.214336], + [48.805315, -125.225365], + [48.802341, -125.23721], + [48.79849, -125.250106], + [48.794906, -125.263216], + [48.791313, -125.27579], + [48.788308, -125.288858], + [48.785508, -125.301325], + [48.781978, -125.313148], + [48.777976, -125.324521], + [48.773675, -125.33598], + [48.76888, -125.347803], + [48.763075, -125.35909], + [48.757538, -125.370761], + [48.752828, -125.383358], + [48.749846, -125.396811], + [48.74666, -125.410373], + [48.742765, -125.42342], + [48.737808, -125.433805], + [48.736006, -125.431938], + [48.734858, -125.42872], + [48.734193, -125.42814], + [48.733291, -125.42769], + [48.732003, -125.426873], + [48.730426, -125.426036], + [48.728796, -125.425501], + [48.727123, -125.424835], + [48.72533, -125.424535], + [48.723668, -125.424663], + [48.722048, -125.425136], + [48.720148, -125.425393], + [48.718453, -125.425586], + [48.716543, -125.425995], + [48.714301, -125.42651], + [48.711951, -125.427066], + [48.709763, -125.428075], + [48.707541, -125.429191], + [48.705343, -125.430415], + [48.703218, -125.431595], + [48.701245, -125.43284], + [48.699173, -125.434041], + [48.697221, -125.435006], + [48.69515, -125.436143], + [48.693155, -125.437516], + [48.691148, -125.438718], + [48.689335, -125.44022], + [48.687415, -125.441808], + [48.68543, -125.443331], + [48.683348, -125.445198], + [48.681428, -125.447195], + [48.679465, -125.449255], + [48.67747, -125.451356], + [48.675473, -125.453546], + [48.673393, -125.45595], + [48.671343, -125.458373], + [48.669348, -125.461013], + [48.667298, -125.463825], + [48.665528, -125.466678], + [48.663918, -125.469811], + [48.662395, -125.473093], + [48.661086, -125.476505], + [48.659691, -125.479766], + [48.65834, -125.483115], + [48.65701, -125.48644], + [48.655453, -125.489616], + [48.654145, -125.493113], + [48.652793, -125.496396], + [48.651656, -125.499808], + [48.650615, -125.503113], + [48.649628, -125.506396], + [48.648941, -125.509658], + [48.648071, -125.512855], + [48.647193, -125.515988], + [48.646141, -125.519013], + [48.645003, -125.522168], + [48.64405, -125.52543], + [48.64318, -125.528883], + [48.642311, -125.532253], + [48.641506, -125.535321], + [48.640498, -125.538433], + [48.639628, -125.54163], + [48.639275, -125.545126], + [48.638738, -125.548131], + [48.638363, -125.551093], + [48.637848, -125.554031], + [48.637396, -125.557186], + [48.637043, -125.560748], + [48.636775, -125.564375], + [48.636518, -125.567443], + [48.636281, -125.570705], + [48.636078, -125.573816], + [48.636056, -125.576928], + [48.636195, -125.580468], + [48.636291, -125.584223], + [48.636485, -125.587741], + [48.63684, -125.59154], + [48.637193, -125.595381], + [48.63773, -125.598943], + [48.638288, -125.602376], + [48.638996, -125.605616], + [48.639565, -125.609028], + [48.640198, -125.61229], + [48.640648, -125.615036], + [48.641388, -125.617503], + [48.642193, -125.619693], + [48.642568, -125.621495], + [48.64304, -125.623383], + [48.64347, -125.625743], + [48.643523, -125.62759], + [48.643545, -125.62967], + [48.643351, -125.631558], + [48.643061, -125.633146], + [48.642848, -125.634435], + [48.642343, -125.635571], + [48.641775, -125.636945], + [48.641173, -125.63821], + [48.640411, -125.639776], + [48.63949, -125.640893], + [48.638363, -125.64246], + [48.637355, -125.643768], + [48.636366, -125.645141], + [48.635411, -125.646621], + [48.634533, -125.64776], + [48.63362, -125.64924], + [48.63273, -125.65072], + [48.631753, -125.652136], + [48.63067, -125.653616], + [48.629533, -125.655076], + [48.628375, -125.656191], + [48.627098, -125.657501], + [48.625531, -125.65881], + [48.624115, -125.660226], + [48.62228, -125.662458], + [48.620756, -125.665011], + [48.619586, -125.667393], + [48.618653, -125.670075], + [48.61816, -125.672778], + [48.617946, -125.67589], + [48.617978, -125.67928], + [48.617956, -125.6825], + [48.617913, -125.685353], + [48.617731, -125.688035], + [48.617785, -125.69089], + [48.617925, -125.6934], + [48.618031, -125.696296], + [48.61815, -125.699601], + [48.618375, -125.70267], + [48.618825, -125.705523], + [48.619683, -125.70767], + [48.621571, -125.70679], + [48.623075, -125.705395], + [48.624221, -125.7043], + [48.624405, -125.704901], + [48.624243, -125.70636], + [48.624255, -125.707498], + [48.62405, -125.709921], + [48.62404, -125.711123], + [48.624083, -125.712733], + [48.624221, -125.713205], + [48.622913, -125.713956], + [48.62227, -125.714343], + [48.621283, -125.715071], + [48.620425, -125.716016], + [48.61933, -125.716875], + [48.618235, -125.717453], + [48.617066, -125.71814], + [48.615961, -125.71857], + [48.614856, -125.718655], + [48.613483, -125.719041], + [48.612131, -125.71945], + [48.610715, -125.719663], + [48.609213, -125.71917], + [48.607721, -125.719856], + [48.60608, -125.721101], + [48.604566, -125.72299], + [48.60313, -125.724363], + [48.601626, -125.725586], + [48.599975, -125.725286], + [48.597808, -125.725115], + [48.595876, -125.726145], + [48.594075, -125.726595], + [48.591993, -125.72771], + [48.589675, -125.729426], + [48.587583, -125.731636], + [48.585876, -125.734061], + [48.58415, -125.73668], + [48.582798, -125.739726], + [48.581575, -125.742881], + [48.580501, -125.746078], + [48.579386, -125.74964], + [48.578475, -125.753696], + [48.577111, -125.757473], + [48.575921, -125.761141], + [48.574858, -125.765476], + [48.573753, -125.769875], + [48.572853, -125.77436], + [48.572026, -125.779123], + [48.57105, -125.783973], + [48.570266, -125.788821], + [48.569805, -125.793693], + [48.569323, -125.798391], + [48.568755, -125.807125], + [48.568346, -125.811931], + [48.567906, -125.81721], + [48.567681, -125.82161], + [48.567616, -125.826436], + [48.567573, -125.831243], + [48.567456, -125.835921], + [48.567401, -125.840256], + [48.56736, -125.844311], + [48.567413, -125.848366], + [48.567756, -125.852336], + [48.568411, -125.855876], + [48.568936, -125.858881], + [48.569345, -125.861863], + [48.56987, -125.864803], + [48.570395, -125.867486], + [48.570781, -125.870233], + [48.571415, -125.873171], + [48.572186, -125.875768], + [48.57297, -125.878471], + [48.573571, -125.880811], + [48.573743, -125.882956], + [48.573335, -125.885253], + [48.572863, -125.887806], + [48.572186, -125.890445], + [48.571543, -125.893128], + [48.57076, -125.896131], + [48.570116, -125.899243], + [48.569345, -125.902355], + [48.568678, -125.905873], + [48.568121, -125.909778], + [48.567648, -125.913663], + [48.567285, -125.917268], + [48.567016, -125.92098], + [48.567026, -125.923811], + [48.567016, -125.92671], + [48.567048, -125.930163], + [48.567756, -125.934198], + [48.568721, -125.938188], + [48.568968, -125.942095], + [48.56928, -125.9457], + [48.570116, -125.949755], + [48.571286, -125.954131], + [48.572263, -125.958295], + [48.573421, -125.962306], + [48.574548, -125.965548], + [48.575803, -125.968315], + [48.57724, -125.971341], + [48.57885, -125.973573], + [48.580191, -125.975418], + [48.581575, -125.976855], + [48.582948, -125.978208], + [48.583925, -125.979753], + [48.585416, -125.981105], + [48.58665, -125.981983], + [48.588088, -125.982113], + [48.589728, -125.98119], + [48.590523, -125.980868], + [48.5918, -125.979001], + [48.592293, -125.978165], + [48.592165, -125.976383], + [48.591981, -125.975331], + [48.59194, -125.973916], + [48.591681, -125.972478], + [48.591541, -125.971126], + [48.591145, -125.970568], + [48.59018, -125.97014], + [48.589546, -125.97029], + [48.588108, -125.971685], + [48.587433, -125.972736], + [48.586681, -125.974216], + [48.586038, -125.975761], + [48.585351, -125.977306], + [48.584771, -125.978315], + [48.583678, -125.97986], + [48.583281, -125.980116], + [48.582186, -125.980868], + [48.58179, -125.981361], + [48.581006, -125.982155], + [48.580835, -125.982113], + [48.579848, -125.982048], + [48.579225, -125.982691], + [48.578045, -125.983528], + [48.577411, -125.983915], + [48.576746, -125.985095], + [48.575866, -125.986748], + [48.574923, -125.988163], + [48.57413, -125.989451], + [48.573506, -125.990888], + [48.572841, -125.99267], + [48.572111, -125.994473], + [48.571425, -125.996188], + [48.571156, -125.99842], + [48.571146, -126.000545], + [48.571081, -126.002283], + [48.571458, -126.00327], + [48.571995, -126.005286], + [48.571973, -126.006596], + [48.571596, -126.008226], + [48.571801, -126.009213], + [48.572283, -126.01078], + [48.572563, -126.010093], + [48.572488, -126.007583], + [48.572413, -126.006896], + [48.572295, -126.005416], + [48.572133, -126.004365], + [48.571833, -126.002605], + [48.571383, -126.000395], + [48.570953, -125.997863], + [48.570331, -125.995931], + [48.569355, -125.994021], + [48.5684, -125.992026], + [48.567113, -125.989966], + [48.56561, -125.988528], + [48.564226, -125.98722], + [48.56281, -125.986318], + [48.561146, -125.985073], + [48.559656, -125.983443], + [48.557928, -125.98164], + [48.556073, -125.979451], + [48.554098, -125.977413], + [48.552125, -125.975783], + [48.5503, -125.97353], + [48.548251, -125.971748], + [48.546331, -125.970118], + [48.5441, -125.969195], + [48.542115, -125.968036], + [48.540076, -125.967436], + [48.537736, -125.966063], + [48.535291, -125.965205], + [48.532736, -125.964775], + [48.53027, -125.965225], + [48.527898, -125.966341], + [48.525506, -125.966235], + [48.522898, -125.965933], + [48.520291, -125.966126], + [48.518113, -125.966276], + [48.515753, -125.966363], + [48.513103, -125.96677], + [48.510238, -125.968186], + [48.50746, -125.969903], + [48.504691, -125.972241], + [48.501978, -125.974451], + [48.499328, -125.977391], + [48.496838, -125.980783], + [48.494393, -125.98383], + [48.492043, -125.98649], + [48.489511, -125.988593], + [48.487033, -125.990288], + [48.484651, -125.991511], + [48.482323, -125.9931], + [48.480263, -125.994558], + [48.478438, -125.996618], + [48.476636, -125.998141], + [48.475101, -125.999665], + [48.473836, -126.001338], + [48.47271, -126.002583], + [48.471873, -126.003785], + [48.471133, -126.005351], + [48.470488, -126.006896], + [48.470178, -126.008485], + [48.470006, -126.010308], + [48.469813, -126.011831], + [48.469705, -126.01299], + [48.46992, -126.014471], + [48.469931, -126.015071], + [48.469501, -126.012883], + [48.469448, -126.011831], + [48.469201, -126.010008], + [48.468825, -126.008161], + [48.468375, -126.006253], + [48.468085, -126.003635], + [48.467763, -126.000803], + [48.467163, -125.998206], + [48.466218, -125.996575], + [48.465178, -125.99546], + [48.464051, -125.994515], + [48.462903, -125.993141], + [48.461745, -125.991833], + [48.460531, -125.990996], + [48.459448, -125.99016], + [48.458225, -125.98943], + [48.456723, -125.98855], + [48.455275, -125.987691], + [48.453601, -125.98692], + [48.451735, -125.986748], + [48.4499, -125.986383], + [48.448108, -125.985245], + [48.44607, -125.984323], + [48.44386, -125.98325], + [48.442175, -125.97971], + [48.439901, -125.977563], + [48.439611, -125.972843], + [48.443945, -125.963186], + [48.448495, -125.955011], + [48.446478, -125.951106], + [48.443323, -125.948918], + [48.444868, -125.945248], + [48.45417, -125.936665], + [48.466786, -125.92568], + [48.48154, -125.912461], + [48.498705, -125.897248], + [48.51497, -125.882741], + [48.598386, -125.807961], + [48.597755, -125.805023], + [48.783298, -125.640035], + [48.923027, -125.514647], + [48.942085, -125.540493], + [48.949244, -125.550219], + [48.950883, -125.558495], + [48.950121, -125.558666], + [48.950165, -125.558625] +]; + +// Last recorded fix — used as static marker position since live telemetry is offline. +export const LAST_KNOWN_POSITION = { latitude: 48.950165, longitude: -125.558625 }; + +// Center and zoom that fits the full voyage path. +export const VOYAGE_CENTER: [number, number] = [48.69, -125.58]; +export const VOYAGE_ZOOM = 9; diff --git a/src/website/views/components/Map/Map.tsx b/src/website/views/components/Map/Map.tsx index d39f141d1..fa63d4830 100644 --- a/src/website/views/components/Map/Map.tsx +++ b/src/website/views/components/Map/Map.tsx @@ -8,6 +8,7 @@ import { GPS, GPSState } from '@/stores/GPS/GPSTypes'; import { GlobalPathState } from '@/stores/GlobalPath/GlobalPathTypes'; import { LocalPathState } from '@/stores/LocalPath/LocalPathTypes'; import { AISShipsState } from '@/stores/AISShips/AISShipsTypes'; +import { VOYAGE_PATH, LAST_KNOWN_POSITION, VOYAGE_CENTER, VOYAGE_ZOOM } from '@/utils/voyagePath'; // Dynamically import Maps component with SSR disabled const Maps = dynamic(() => import('../Maps/Maps'), { @@ -20,20 +21,6 @@ const convertToLatLng = (obj: any): [number, number] => { return [obj.latitude, obj.longitude]; }; -// Polaris launch track (Bamfield, BC). Anchors the start of the drawn track only: -// the boat marker and map center still come from the newest real GPS fix. -// Waypoints curve north around the Bamfield peninsula through water so the -// straight Bamfield→first-GPS segment does not cut land. -const START_PATH: [number, number][] = [ - [48.8340485, -125.1369535], // Bamfield launch - [48.8355, -125.1378], - [48.8375, -125.138], - [48.8395, -125.14], - [48.8405, -125.15], - [48.839, -125.16], - [48.832, -125.168], - [48.822, -125.18], -]; const Map = ({ gps, @@ -86,19 +73,10 @@ const Map = ({
convertToLatLng(gpsPoint)), - ]} + gpsLocation={gpsData[gpsData.length - 1] ?? { ...LAST_KNOWN_POSITION, speed: 0, heading: 0, timestamp: '' }} + gpsPath={VOYAGE_PATH} + center={VOYAGE_CENTER} + zoom={VOYAGE_ZOOM} globalPath={globalPathData.waypoints.map((waypoint) => convertToLatLng(waypoint), )} diff --git a/src/website/views/components/Maps/Maps.tsx b/src/website/views/components/Maps/Maps.tsx index df696167a..688cd10bc 100644 --- a/src/website/views/components/Maps/Maps.tsx +++ b/src/website/views/components/Maps/Maps.tsx @@ -27,6 +27,8 @@ export interface IMapsProps { showLocalPath: boolean; aisShips: AISShip[]; showAIShips: boolean; + center?: L.LatLngExpression; + zoom?: number; } export interface IMapsState { @@ -77,6 +79,8 @@ const Maps: React.FC = ({ showLocalPath, aisShips, showAIShips, + center, + zoom, }) => { const mapRef = useRef(null); const resizeObserverRef = useRef(null); @@ -209,8 +213,8 @@ const Maps: React.FC = ({ return ( {

Last updated August 31, 2026

- Research data collected during POLARIS's voyage will be - available shortly. We are actively working to prepare it for sharing. + POLARIS is back home after successfully completing its first + autonomous ocean voyage. Research data collected throughout the + journey will be available shortly. We have improvements planned and + are actively working toward our next mission.