@mapcreator/sdk 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +29 -0
  2. package/dist/{esm/HighlightManager.d.ts → HighlightManager.d.ts} +2 -2
  3. package/dist/{esm/MCMap.d.ts → MCMap.d.ts} +1 -1
  4. package/dist/{esm/PopupManager.d.ts → PopupManager.d.ts} +4 -4
  5. package/dist/{esm/Registry.d.ts → Registry.d.ts} +3 -3
  6. package/dist/{esm/adornments → adornments}/categoricalLegend.d.ts +1 -1
  7. package/dist/{esm/adornments → adornments}/connectedLegend.d.ts +2 -2
  8. package/dist/{esm/adornments → adornments}/customAdornment.d.ts +1 -1
  9. package/dist/{esm/adornments → adornments}/heading.d.ts +1 -1
  10. package/dist/adornments/insetMap.d.ts +3 -0
  11. package/dist/{esm/adornments → adornments}/manualLegend.d.ts +1 -1
  12. package/dist/adornments/northArrow.d.ts +3 -0
  13. package/dist/adornments/scalebar.d.ts +3 -0
  14. package/dist/{esm/constants → constants}/index.d.ts +2 -2
  15. package/dist/{esm/controls → controls}/fullscreenControls.d.ts +1 -1
  16. package/dist/{esm/controls → controls}/geocoderControl.d.ts +1 -1
  17. package/dist/{esm/controls → controls}/geolocationControls.d.ts +1 -1
  18. package/dist/controls/refreshMapControls.d.ts +3 -0
  19. package/dist/controls/webControls.d.ts +4 -0
  20. package/dist/{esm/controls → controls}/zoomControls.d.ts +1 -1
  21. package/dist/index.d.ts +3 -0
  22. package/dist/locales/da_DK/strings.json.d.ts +10 -0
  23. package/dist/locales/de_DE/strings.json.d.ts +10 -0
  24. package/dist/locales/en_GB/strings.json.d.ts +10 -0
  25. package/dist/locales/es_ES/strings.json.d.ts +10 -0
  26. package/dist/locales/fr_FR/strings.json.d.ts +10 -0
  27. package/dist/locales/it_IT/strings.json.d.ts +10 -0
  28. package/dist/locales/nl_NL/strings.json.d.ts +10 -0
  29. package/dist/mapcreator-sdk.js +39590 -0
  30. package/dist/models/area.d.ts +5 -0
  31. package/dist/models/circle.d.ts +5 -0
  32. package/dist/models/dot.d.ts +3 -0
  33. package/dist/models/line.d.ts +4 -0
  34. package/dist/models/marker.d.ts +5 -0
  35. package/dist/models/polygon.d.ts +5 -0
  36. package/dist/{esm/renderAdornments.d.ts → renderAdornments.d.ts} +3 -3
  37. package/dist/{esm/types → types}/index.d.ts +1 -1
  38. package/dist/{esm/types → types}/mapstyle.d.ts +2 -6
  39. package/dist/{esm/utils → utils}/choropleth.d.ts +3 -3
  40. package/dist/{esm/utils → utils}/geolocation.d.ts +1 -1
  41. package/dist/{esm/utils → utils}/graphhopper.d.ts +1 -1
  42. package/dist/{esm/utils → utils}/helpers.d.ts +2 -2
  43. package/dist/{esm/utils → utils}/language.d.ts +1 -1
  44. package/dist/{esm/utils → utils}/models.d.ts +4 -4
  45. package/dist/{esm/utils → utils}/overlays.d.ts +1 -1
  46. package/dist/{esm/utils → utils}/svgHelpers.d.ts +3 -4
  47. package/dist/{esm/utils → utils}/template.d.ts +2 -2
  48. package/dist/{esm/utils → utils}/youtube.d.ts +1 -1
  49. package/package.json +8 -6
  50. package/dist/esm/HighlightManager.js +0 -203
  51. package/dist/esm/MCMap.js +0 -254
  52. package/dist/esm/PopupManager.js +0 -297
  53. package/dist/esm/Registry.js +0 -74
  54. package/dist/esm/adornments/categoricalLegend.js +0 -141
  55. package/dist/esm/adornments/connectedLegend.js +0 -393
  56. package/dist/esm/adornments/customAdornment.js +0 -29
  57. package/dist/esm/adornments/heading.js +0 -71
  58. package/dist/esm/adornments/insetMap.d.ts +0 -3
  59. package/dist/esm/adornments/insetMap.js +0 -351
  60. package/dist/esm/adornments/manualLegend.js +0 -15
  61. package/dist/esm/adornments/northArrow.d.ts +0 -3
  62. package/dist/esm/adornments/northArrow.js +0 -24
  63. package/dist/esm/adornments/scalebar.d.ts +0 -3
  64. package/dist/esm/adornments/scalebar.js +0 -176
  65. package/dist/esm/constants/index.js +0 -53
  66. package/dist/esm/controls/controls.js +0 -7
  67. package/dist/esm/controls/fullscreenControls.js +0 -29
  68. package/dist/esm/controls/geocoderControl.js +0 -202
  69. package/dist/esm/controls/geolocationControls.js +0 -65
  70. package/dist/esm/controls/refreshMapControls.d.ts +0 -3
  71. package/dist/esm/controls/refreshMapControls.js +0 -26
  72. package/dist/esm/controls/webControls.d.ts +0 -4
  73. package/dist/esm/controls/webControls.js +0 -40
  74. package/dist/esm/controls/zoomControls.js +0 -23
  75. package/dist/esm/i18n.js +0 -21
  76. package/dist/esm/index.d.ts +0 -5
  77. package/dist/esm/index.js +0 -5
  78. package/dist/esm/locales/da_DK/strings.json +0 -7
  79. package/dist/esm/locales/de_DE/strings.json +0 -7
  80. package/dist/esm/locales/en_GB/strings.json +0 -7
  81. package/dist/esm/locales/es_ES/strings.json +0 -7
  82. package/dist/esm/locales/fr_FR/strings.json +0 -7
  83. package/dist/esm/locales/it_IT/strings.json +0 -7
  84. package/dist/esm/locales/nl_NL/strings.json +0 -7
  85. package/dist/esm/models/area.d.ts +0 -5
  86. package/dist/esm/models/area.js +0 -165
  87. package/dist/esm/models/circle.d.ts +0 -5
  88. package/dist/esm/models/circle.js +0 -110
  89. package/dist/esm/models/dot.d.ts +0 -3
  90. package/dist/esm/models/dot.js +0 -42
  91. package/dist/esm/models/line.d.ts +0 -4
  92. package/dist/esm/models/line.js +0 -117
  93. package/dist/esm/models/marker.d.ts +0 -5
  94. package/dist/esm/models/marker.js +0 -179
  95. package/dist/esm/models/polygon.d.ts +0 -5
  96. package/dist/esm/models/polygon.js +0 -80
  97. package/dist/esm/renderAdornments.js +0 -129
  98. package/dist/esm/types/geometry.js +0 -1
  99. package/dist/esm/types/index.js +0 -1
  100. package/dist/esm/types/jobObject.js +0 -1
  101. package/dist/esm/types/mapstyle.js +0 -1
  102. package/dist/esm/utils/browser.js +0 -6
  103. package/dist/esm/utils/choropleth.js +0 -110
  104. package/dist/esm/utils/fullscreen.js +0 -40
  105. package/dist/esm/utils/geolocation.js +0 -93
  106. package/dist/esm/utils/graphhopper.js +0 -41
  107. package/dist/esm/utils/helpers.js +0 -116
  108. package/dist/esm/utils/language.js +0 -170
  109. package/dist/esm/utils/models.js +0 -103
  110. package/dist/esm/utils/overlays.js +0 -87
  111. package/dist/esm/utils/scalebar.js +0 -52
  112. package/dist/esm/utils/svgHelpers.js +0 -1512
  113. package/dist/esm/utils/template.js +0 -120
  114. package/dist/esm/utils/youtube.js +0 -64
  115. /package/dist/{esm/controls → controls}/controls.d.ts +0 -0
  116. /package/dist/{esm/i18n.d.ts → i18n.d.ts} +0 -0
  117. /package/dist/{esm/types → types}/geometry.d.ts +0 -0
  118. /package/dist/{esm/types → types}/jobObject.d.ts +0 -0
  119. /package/dist/{esm/utils → utils}/browser.d.ts +0 -0
  120. /package/dist/{esm/utils → utils}/fullscreen.d.ts +0 -0
  121. /package/dist/{esm/utils → utils}/scalebar.d.ts +0 -0
@@ -1,103 +0,0 @@
1
- import { degToRad, radToDeg, calcDistance, numberRe, fnv32b } from '@/utils/helpers';
2
- import { lineString, polygon as makePolygon } from '@turf/helpers';
3
- import { polygonSmooth } from '@turf/polygon-smooth';
4
- import bboxClip from '@turf/bbox-clip';
5
- export function calculateCircle(center, radius) {
6
- const circle = [];
7
- const steps = 100;
8
- const interval = (Math.PI * 2) / steps;
9
- for (let i = 0; i < steps; i++) {
10
- circle.push(calculateCirclePoint(center, radius, i * interval));
11
- }
12
- if (containsNorthPole(center, radius)) {
13
- const first = circle[0];
14
- const last = circle[circle.length - 1];
15
- const lng = (last[0] + first[0] - 360) / 2;
16
- const lat = (first[1] + last[1]) / 2;
17
- circle.push([lng, lat]);
18
- circle.push([lng, 90]);
19
- circle.push([lng + 360, 90]);
20
- circle.push([lng + 360, lat]);
21
- }
22
- if (containsSouthPole(center, radius)) {
23
- const first = circle[49];
24
- const last = circle[50];
25
- const lng = (last[0] + first[0] - 360) / 2;
26
- const lat = (first[1] + last[1]) / 2;
27
- circle.splice(50, 0, [lng + 360, lat], [lng + 360, -90], [lng, -90], [lng, lat]);
28
- }
29
- circle.push(circle[0]);
30
- return circle;
31
- }
32
- export function calculateRadiusLine(center, radius, bearing) {
33
- const points = [];
34
- const steps = 100;
35
- const interval = radius / steps;
36
- for (let i = 0; i <= steps; i++) {
37
- points.push(calculateCirclePoint(center, i * interval, degToRad(bearing)));
38
- }
39
- const bbox = [-Infinity, -85.051129, Infinity, 85.051129];
40
- return bboxClip(lineString(points), bbox).geometry.coordinates;
41
- }
42
- function calculateCirclePoint(center, radius, bearing) {
43
- const earthRadius = 6378.1;
44
- const radiusRatio = radius / earthRadius;
45
- const lngCenter = degToRad(center.lng);
46
- const latCenter = degToRad(center.lat);
47
- const lat = Math.asin(Math.sin(latCenter) * Math.cos(radiusRatio) +
48
- Math.cos(latCenter) * Math.sin(radiusRatio) * Math.cos(bearing));
49
- const lng = lngCenter +
50
- Math.atan2(Math.sin(bearing) * Math.sin(radiusRatio) * Math.cos(latCenter), Math.cos(radiusRatio) - Math.sin(latCenter) * Math.sin(lat));
51
- return [radToDeg(lng), radToDeg(lat)];
52
- }
53
- function containsNorthPole(center, radius) {
54
- return calcDistance(center, { lng: 0, lat: 90 }) / 1000 < radius;
55
- }
56
- function containsSouthPole(center, radius) {
57
- return calcDistance(center, { lng: 0, lat: -90 }) / 1000 < radius;
58
- }
59
- export function calculatePolygonGeometry(polygon) {
60
- const { polygonType } = polygon;
61
- const anchorPoints = typeof polygon.anchorPoints?.[0]?.[0] === 'number'
62
- ? [polygon.anchorPoints]
63
- : polygon.anchorPoints;
64
- if (polygonType === 'smooth') {
65
- return (polygonSmooth(makePolygon(anchorPoints), { iterations: 4 }).features?.[0]?.geometry
66
- ?.coordinates ?? anchorPoints.slice());
67
- }
68
- return anchorPoints.slice();
69
- }
70
- export function getAreaLayerId(groupId, area) {
71
- const key = fnv32b(`${area.vectorUrl}/${area.sourceLayerId}`);
72
- return `${groupId}-${key}`;
73
- }
74
- export function getAreaSourceId(area) {
75
- return `custom-area-${fnv32b(area.vectorUrl)}`;
76
- }
77
- export function getBoundValues(modelBindings, dataColumn) {
78
- return modelBindings.reduce((result, bindings) => {
79
- const value = bindings.dataBindings?.[dataColumn];
80
- if (typeof value === 'object' && value !== null && value.t === 'n') {
81
- result.push(value.v);
82
- }
83
- else if (typeof value === 'number') {
84
- result.push(value);
85
- }
86
- else if (typeof value === 'string' && value) {
87
- result.push(numberRe.test(value) ? Number(value) : value);
88
- }
89
- return result;
90
- }, []);
91
- }
92
- export function getLineAngle(line, map) {
93
- const n = line.length;
94
- if (n < 2) {
95
- return 0;
96
- }
97
- const endPoint = map.projectWithScaleCorrection(line[n - 1]);
98
- const penultimatePoint = map.projectWithScaleCorrection(line[n - 2]);
99
- const dx = endPoint.x - penultimatePoint.x;
100
- const dy = penultimatePoint.y - endPoint.y;
101
- const thetaDeg = Math.atan2(dy, dx) * (180 / Math.PI);
102
- return (90 - thetaDeg + 360) % 360;
103
- }
@@ -1,87 +0,0 @@
1
- export async function loadOverlays(overlays, map, vapiUrl, accessToken, styleOverrides) {
2
- const urls = overlays.map(overlay => `${vapiUrl}/styles/${overlay}.json?access_token=${accessToken}`);
3
- const promises = urls.map(url => fetch(url).then(result => result.json()));
4
- const data = await Promise.all(promises);
5
- await Promise.all(data.map(item => addOverlay(item, map, accessToken, styleOverrides)));
6
- }
7
- async function addOverlay(data, map, accessToken, styleOverrides) {
8
- for (const sourceId in data.sources) {
9
- if (map.getSource(sourceId) === undefined) {
10
- map.addSource(sourceId, data.sources[sourceId]);
11
- }
12
- }
13
- if (data.sprite !== undefined) {
14
- await loadSprite(map, data.sprite, accessToken);
15
- }
16
- for (const layer of data.layers) {
17
- if (map.getLayer(layer.id) !== undefined) {
18
- map.removeLayer(layer.id);
19
- }
20
- const addBefore = layer.metadata?.['mc-add-before'] ?? 'mc-before-none';
21
- map.addLayer(applyOverrides(layer, styleOverrides), addBefore);
22
- }
23
- }
24
- function applyOverrides(layer, styleOverrides) {
25
- const overrides = styleOverrides ?? {};
26
- const override = overrides[layer.id] ?? {};
27
- const result = {
28
- ...layer,
29
- layout: { ...layer.layout, ...override.layout },
30
- paint: { ...layer.paint, ...override.paint },
31
- metadata: {
32
- ...layer.metadata,
33
- ...override.metadata,
34
- },
35
- };
36
- if (override.minzoom !== undefined) {
37
- result.minzoom = override.minzoom;
38
- }
39
- if (override.maxzoom !== undefined) {
40
- result.maxzoom = override.maxzoom;
41
- }
42
- if ('filter' in override && result.type !== 'background') {
43
- result.filter = override.filter;
44
- }
45
- return result;
46
- }
47
- async function loadSprite(map, spriteUrl, accessToken) {
48
- try {
49
- const spriteJsonUrl = `${spriteUrl}.json?access_token=${accessToken}`;
50
- const spriteImageUrl = `${spriteUrl}.png?access_token=${accessToken}`;
51
- const [spriteJsonResponse, spriteImageResponse] = await Promise.all([
52
- fetch(spriteJsonUrl),
53
- fetch(spriteImageUrl),
54
- ]);
55
- if (!spriteJsonResponse.ok || !spriteImageResponse.ok) {
56
- throw new Error(`Failed to load sprite from ${spriteUrl}`);
57
- }
58
- const spriteJson = await spriteJsonResponse.json();
59
- const spriteImageBlob = await spriteImageResponse.blob();
60
- const spriteImage = await new Promise((resolve, reject) => {
61
- const img = new Image();
62
- img.onload = () => resolve(img);
63
- img.onerror = err => reject(err);
64
- img.src = URL.createObjectURL(spriteImageBlob);
65
- });
66
- const canvas = document.createElement('canvas');
67
- const context = canvas.getContext('2d', { willReadFrequently: true });
68
- if (!context) {
69
- throw new Error('Failed to get canvas context');
70
- }
71
- for (const [name, sprite] of Object.entries(spriteJson)) {
72
- if (map.hasImage(name)) {
73
- continue;
74
- }
75
- const { x, y, width, height, pixelRatio } = sprite;
76
- canvas.width = width * pixelRatio;
77
- canvas.height = height * pixelRatio;
78
- context.clearRect(0, 0, canvas.width, canvas.height);
79
- context.drawImage(spriteImage, x, y, width, height, 0, 0, canvas.width, canvas.height);
80
- const imageData = context.getImageData(0, 0, canvas.width, canvas.height);
81
- map.addImage(name, imageData, { pixelRatio });
82
- }
83
- }
84
- catch (error) {
85
- console.error(error);
86
- }
87
- }
@@ -1,52 +0,0 @@
1
- const significantNumbers = [10, 5, 3, 2, 1];
2
- export function floatToFraction(x, error = 0.000001) {
3
- const n = Math.floor(x);
4
- x -= n;
5
- if (x < error) {
6
- return [n, 1];
7
- }
8
- else if (1 - error < x) {
9
- return [n + 1, 1];
10
- }
11
- // The lower fraction is 0/1
12
- let lowerN = 0;
13
- let lowerD = 1;
14
- // The upper fraction is 1/1
15
- let upperN = 1;
16
- let upperD = 1;
17
- // eslint-disable-next-line no-constant-condition
18
- while (true) {
19
- // The middle fraction is (lowerN upperN) / (lower_d + upperD)
20
- const middleN = lowerN + upperN;
21
- const middleD = lowerD + upperD;
22
- // If x + error < middle
23
- if (middleD * (x + error) < middleN) {
24
- // Middle is the new upper
25
- upperN = middleN;
26
- upperD = middleD;
27
- }
28
- else if (middleN < (x - error) * middleD) {
29
- // Middle is the new lower
30
- lowerN = middleN;
31
- lowerD = middleD;
32
- }
33
- else {
34
- // Middle is best fraction
35
- return [n * middleD + middleN, middleD];
36
- }
37
- }
38
- }
39
- export function getRoundNum(num) {
40
- const pow10 = 10 ** Math.floor(Math.log10(num));
41
- const d = num / pow10;
42
- for (const n of significantNumbers) {
43
- if (d >= n) {
44
- return n * pow10;
45
- }
46
- }
47
- return getDecimalRoundNum(d) * pow10;
48
- }
49
- function getDecimalRoundNum(d) {
50
- const multiplier = 10 ** Math.ceil(-Math.log(d) / Math.LN10);
51
- return Math.round(d * multiplier) / multiplier;
52
- }