2023-04-15 07:59:50 -04:00
|
|
|
import { createSignal, Show } from 'solid-js';
|
2023-04-15 01:21:33 -04:00
|
|
|
import MapGL, { Viewport, Control, Light, Camera } from 'solid-map-gl';
|
|
|
|
import * as maplibre from 'maplibre-gl';
|
2023-04-15 07:59:50 -04:00
|
|
|
|
|
|
|
import type { JSX } from 'solid-js';
|
|
|
|
import type { MapOptions } from 'maplibre-gl';
|
|
|
|
|
2023-04-15 01:21:33 -04:00
|
|
|
import 'maplibre-gl/dist/maplibre-gl.css';
|
|
|
|
|
2023-04-15 07:59:50 -04:00
|
|
|
function BadassMap(): JSX.Element {
|
|
|
|
const options: MapOptions = {
|
|
|
|
container: '',
|
|
|
|
style: 'https://api.maptiler.com/maps/024da34e-fa66-4cb3-8f5f-0466b51e972e/style.json?key=Ukl2QNcQUCPAwuelQOvM',
|
|
|
|
maxPitch: 85,
|
|
|
|
antialias: true,
|
2023-04-15 01:21:33 -04:00
|
|
|
center: [-71.05625, 42.36],
|
|
|
|
zoom: 15.5,
|
|
|
|
bearing: 160,
|
|
|
|
pitch: 60,
|
2023-04-15 07:59:50 -04:00
|
|
|
}
|
2023-04-15 01:21:33 -04:00
|
|
|
|
2023-04-15 07:59:50 -04:00
|
|
|
const [viewport, setViewport] = createSignal<Viewport>(options);
|
|
|
|
|
|
|
|
const [rotate, setRotate] = createSignal<boolean>(true)
|
|
|
|
const toggleRotate = () => setRotate<boolean>(!rotate())
|
2023-04-15 05:34:42 -04:00
|
|
|
|
2023-04-15 01:21:33 -04:00
|
|
|
return (
|
|
|
|
<MapGL
|
|
|
|
mapLib={maplibre}
|
2023-04-15 07:59:50 -04:00
|
|
|
options={options}
|
2023-04-15 01:21:33 -04:00
|
|
|
viewport={viewport()}
|
|
|
|
onViewportChange={(evt: Viewport) => setViewport(evt)}
|
|
|
|
>
|
|
|
|
|
2023-04-15 07:03:37 -04:00
|
|
|
<Show
|
|
|
|
when={rotate()}
|
|
|
|
fallback={<button onClick={toggleRotate}> Rotation On </button>}
|
|
|
|
>
|
|
|
|
<button onClick={toggleRotate}> Rotation Off </button>
|
|
|
|
</Show>
|
2023-04-15 06:35:25 -04:00
|
|
|
|
2023-04-15 08:41:55 -04:00
|
|
|
<Control
|
|
|
|
type="navigation"
|
|
|
|
position="top-right"
|
|
|
|
options={{
|
|
|
|
showCompass: true,
|
|
|
|
showZoom: true,
|
|
|
|
visualizePitch: true,
|
|
|
|
}}
|
|
|
|
/>
|
|
|
|
|
2023-04-15 01:21:33 -04:00
|
|
|
<Control type="geolocate" position="top-right" />
|
|
|
|
<Control type="scale" position="bottom-left" />
|
|
|
|
|
|
|
|
<Light style={{
|
|
|
|
anchor: 'viewport',
|
|
|
|
color: 'white',
|
|
|
|
intensity: 0.9,
|
|
|
|
}} />
|
|
|
|
|
|
|
|
<Camera
|
2023-04-15 05:34:42 -04:00
|
|
|
rotateViewport={rotate()}
|
2023-04-15 07:03:37 -04:00
|
|
|
reverse={true}
|
2023-04-15 01:21:33 -04:00
|
|
|
/>
|
|
|
|
|
|
|
|
</MapGL>
|
|
|
|
);
|
|
|
|
};
|
2023-04-15 07:59:50 -04:00
|
|
|
|
|
|
|
export default BadassMap;
|