diff --git a/src/api/getRuteMellomPunkter.ts b/src/api/getRuteMellomPunkter.ts index 1d807f2..10148cd 100644 --- a/src/api/getRuteMellomPunkter.ts +++ b/src/api/getRuteMellomPunkter.ts @@ -34,6 +34,30 @@ export const getRuteMellomPunkter = async ( ZoomLevel: 14, }; + try { + const apiResult = await fetch(query, { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + 'X-WAAPI-TOKEN': `${apiKey}`, + }, + body: JSON.stringify(postData), + }); + + if (apiResult.ok) { + const data = await apiResult.json(); + console.log(data); + return data; + } else { + console.error('API request failed with status:', apiResult.status); + return []; + } + } catch (error) { + console.error('An error occurred while fetching data:', error); + return []; + } + // TODO: Fullfør/endre koden for å hente og returnere en kjørerute mellom to punkter // Hint: Du kan se på getHoydeFromPunkt for å få en idé om hvordan dette kan gjøres. diff --git a/src/components/MapLibreMap.tsx b/src/components/MapLibreMap.tsx index 0603694..95fd6e2 100644 --- a/src/components/MapLibreMap.tsx +++ b/src/components/MapLibreMap.tsx @@ -28,6 +28,7 @@ import DrawComponent from './DrawComponent'; import { SearchBar, type Address } from './SearchBar'; import { getBygningAtPunkt } from '../api/getBygningAtPunkt'; import type { GeoJSON } from 'geojson'; +import { getRuteMellomPunkter } from '../api/getRuteMellomPunkter'; const TRONDHEIM_COORDS: [number, number] = [10.40565401, 63.4156575]; @@ -53,6 +54,11 @@ const MONTHS = [ 'Desember', ]; +const lineStyle = { + "line-color": "#1a73e8", + "line-width": 4, +}; + type NorkartBasemapVariant = | 'standard' | 'standard-without-text' @@ -70,7 +76,9 @@ export const MapLibreMap = () => { const [pointHoyde, setPointHoydeAtPunkt] = useState( undefined ); - + const [startPunkt, setStartPunkt] = useState(undefined); + const [rute, setRute] = useState(undefined); + const [ruteCost, setRuteCost] = useState<{ Cost: number; Name: string }[] | undefined>(undefined); const [address, setAddress] = useState
(null); const [bygningsOmriss, setBygningsOmriss] = useState( undefined @@ -95,44 +103,86 @@ export const MapLibreMap = () => { const takflateData = await getTakflateDataForPunkt( e.lngLat.lng, e.lngLat.lat - ); - + ); setSolData(takflateData); - }; - return ( - - -

Dette er et overlay

-

Legg til funksjonalitet knyttet til kartet.

- -
- {address && ( - - )} - {clickPoint && pointHoyde !== undefined && ( - -
-

Latitude: {clickPoint.lat.toFixed(6)}

-

Longitude: {clickPoint.lng.toFixed(6)}

-

Height: {pointHoyde.toFixed(1)} m

-
-
- )} - {solData.length > 0 && ( + if (!startPunkt) { + setStartPunkt(e.lngLat); + return; + } + + const ruteRespons = await getRuteMellomPunkter( + startPunkt.lng, + startPunkt.lat, + e.lngLat.lng, + e.lngLat.lat + ); + if (ruteRespons?.RouteGeometry) { + setRute(ruteRespons.RouteGeometry); + setRuteCost(ruteRespons.CostList); + } + setStartPunkt(undefined); + }; + + return ( + + +

Dette er et overlay

+

Legg til funksjonalitet knyttet til kartet.

+ +
+ {address && ( + + )} + {clickPoint && pointHoyde !== undefined && ( + +
+

Latitude: {clickPoint.lat.toFixed(6)}

+

Longitude: {clickPoint.lng.toFixed(6)}

+

Height: {pointHoyde.toFixed(1)} m

+ {ruteCost && ruteCost != undefined && ( +

Tid: {ruteCost.find(o => o.Name === "time")?.Cost.toFixed(1)} m

+ )} +
+
+ )} + + {bygningsOmriss && + <> + + + + } + {rute && + <> + + + + } + {solData.length > 0 && ( { )} - - {bygningsOmriss && ( - <> - - - - )} -
- ); -}; +
+ ); + + }; + function MapFlyTo({ lng, lat }: { lng: number; lat: number }) { const map = useMap();