1
2
3
4
5
6import { MapView } from "mapgpu";
7import { RasterTileLayer } from "mapgpu/layers";
8import { RenderEngine } from "mapgpu/render";
9
10import type { RunResultObject } from "@/components/examples/ExampleCanvas";
11
12export async function run(container: HTMLElement): Promise<RunResultObject> {
13 const view = new MapView({
14 container,
15 renderEngine: new RenderEngine(),
16 mode: "2d",
17 center: [32.866, 39.925],
18 zoom: 6,
19 minZoom: 2,
20 maxZoom: 18,
21 backgroundColor: "transparent",
22 });
23
24 view.map.add(
25 new RasterTileLayer({
26 id: "osm",
27 urlTemplate: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
28 minZoom: 0,
29 maxZoom: 19,
30 attribution: "© OpenStreetMap contributors",
31 }),
32 );
33
34 await view.when();
35
36 return {
37 dispose: () => view.destroy(),
38 controls: [
39 {
40 kind: "toggle",
41 id: "mode",
42 labels: ["2D", "3D"],
43 initial: false,
44 onChange: async (on) => {
45 await view.switchTo(on ? "3d" : "2d");
46 },
47 },
48 ],
49 };
50}