raain-ui 2.3.22 → 2.3.24
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.
- package/CHANGELOG.md +9 -0
- package/README.md +5 -56
- package/data/wind-markers.css +2 -1
- package/drawers/CartesianDrawer.js +2 -2
- package/drawers/PolarDrawer.js +3 -3
- package/factories/DynamicDateStatusElement.js +5 -6
- package/factories/MapElement.d.ts +17 -24
- package/factories/MapElement.js +42 -140
- package/layers/MarkersLayer.d.ts +3 -3
- package/layers/MarkersLayer.js +13 -12
- package/package.json +2 -2
- package/tools/RaainDivIcon.d.ts +136 -0
- package/tools/RaainDivIcon.js +243 -0
- package/tools/index.d.ts +1 -0
- package/tools/index.js +2 -1
- package/utils/spinning-ball-wrapper.js +2 -2
- package/data/wind-markers-static.css +0 -168
- package/data/wind-markers-test.css +0 -174
- package/data/wind-markers.v1.css +0 -260
- package/data/wind-markers.v2.css +0 -619
- package/data/wind-markers.v3.css +0 -634
package/factories/MapElement.js
CHANGED
|
@@ -5,7 +5,7 @@ const leaflet_1 = require("leaflet");
|
|
|
5
5
|
const tools_1 = require("../tools");
|
|
6
6
|
const layers_1 = require("../layers");
|
|
7
7
|
class MapElementInput {
|
|
8
|
-
constructor(timeframeContainers, markers) {
|
|
8
|
+
constructor(timeframeContainers, markers = []) {
|
|
9
9
|
this.timeframeContainers = timeframeContainers;
|
|
10
10
|
this.markers = markers;
|
|
11
11
|
}
|
|
@@ -19,7 +19,6 @@ class MapElement {
|
|
|
19
19
|
const lat = typeof this.center.lat !== 'undefined' ? this.center.lat : this.center.latitude;
|
|
20
20
|
const lng = typeof this.center.lng !== 'undefined' ? this.center.lng : this.center.longitude;
|
|
21
21
|
this.center = new tools_1.MapLatLng(lat, lng);
|
|
22
|
-
this.markerStyles = [];
|
|
23
22
|
}
|
|
24
23
|
build(element, inputs) {
|
|
25
24
|
var _a;
|
|
@@ -37,7 +36,7 @@ class MapElement {
|
|
|
37
36
|
scrollWheelZoom: false,
|
|
38
37
|
renderer: (0, leaflet_1.canvas)(),
|
|
39
38
|
}).setView([this.center.lat, this.center.lng], 10);
|
|
40
|
-
// Hook into
|
|
39
|
+
// Hook into zoom events to preserve marker rotations
|
|
41
40
|
mapLeaflet.on('zoomend', this.onZoomEnd.bind(this));
|
|
42
41
|
(0, leaflet_1.tileLayer)('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
43
42
|
attribution: '©<a href="https://www.openstreetmap.org/copyright">osm</a>',
|
|
@@ -52,16 +51,12 @@ class MapElement {
|
|
|
52
51
|
}
|
|
53
52
|
}
|
|
54
53
|
compositeLayer.addToMap(mapLeaflet);
|
|
55
|
-
// if (firstLayerIdPushed) {
|
|
56
|
-
// compositeLayer.showTheFistMatchingId(firstLayerIdPushed);
|
|
57
|
-
// }
|
|
58
54
|
compositeLayer.showAll(this.alpha);
|
|
59
55
|
// Markers
|
|
60
|
-
let markersProduced = [];
|
|
61
56
|
const markersLayer = new layers_1.MarkersLayer();
|
|
62
57
|
markersLayer.setCurrentWidth(width);
|
|
63
58
|
markersLayer.setCurrentHeight(height);
|
|
64
|
-
markersProduced = markersLayer.render(inputs.markers).markers;
|
|
59
|
+
const markersProduced = markersLayer.render(inputs.markers).markers;
|
|
65
60
|
markersLayer.addToMap(mapLeaflet);
|
|
66
61
|
mapLeaflet.invalidateSize({ animate: true });
|
|
67
62
|
this.mapLeaflet = mapLeaflet;
|
|
@@ -87,142 +82,44 @@ class MapElement {
|
|
|
87
82
|
this.mapLeaflet.invalidateSize({ animate: true });
|
|
88
83
|
}
|
|
89
84
|
updateMarkers(markers) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
this.markersProduced = this.markersLayer.render(markers).markers;
|
|
85
|
+
const result = this.markersLayer.render(markers);
|
|
86
|
+
this.markersProduced = result.markers;
|
|
87
|
+
this.markersLayer.addToMap(this.mapLeaflet);
|
|
95
88
|
return this.markersProduced;
|
|
96
89
|
}
|
|
97
90
|
/**
|
|
98
|
-
*
|
|
99
|
-
* @param marker The marker to
|
|
100
|
-
* @param
|
|
101
|
-
* @
|
|
102
|
-
*
|
|
103
|
-
* Examples:
|
|
104
|
-
* - changeMarkerStyle(marker, 'marker-red')
|
|
105
|
-
* - changeMarkerStyle(marker, 'marker-wind marker-wind-200', {strength: 10})
|
|
106
|
-
* - changeMarkerStyle(marker, {classes: 'marker-wind marker-wind-200', cssVars: {strength: 10}})
|
|
91
|
+
* Set rotation for a marker using RaainDivIcon
|
|
92
|
+
* @param marker The marker to rotate (MapLatLng)
|
|
93
|
+
* @param angle Rotation angle in degrees (0 = North, 90 = East, 180 = South, 270 = West)
|
|
94
|
+
* @returns true if rotation was applied, false if marker not found or not using RaainDivIcon
|
|
107
95
|
*/
|
|
108
|
-
|
|
96
|
+
setMarkerRotation(marker, angle) {
|
|
109
97
|
const markerFound = this.getMarkerElement(marker);
|
|
110
98
|
if (!markerFound) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
const element = markerFound.getElement();
|
|
114
|
-
if (!element) {
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
// Handle different input formats
|
|
118
|
-
let classesToAdd;
|
|
119
|
-
let varsToSet;
|
|
120
|
-
if (typeof style === 'string') {
|
|
121
|
-
classesToAdd = style;
|
|
122
|
-
varsToSet = cssVars;
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
classesToAdd = style.classes;
|
|
126
|
-
varsToSet = style.cssVars;
|
|
99
|
+
return false;
|
|
127
100
|
}
|
|
128
|
-
|
|
129
|
-
if (
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
element.classList.add(className);
|
|
133
|
-
});
|
|
101
|
+
const icon = markerFound.options.icon;
|
|
102
|
+
if (icon instanceof tools_1.RaainDivIcon) {
|
|
103
|
+
icon.setRotation(angle);
|
|
104
|
+
return true;
|
|
134
105
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const currentTransform = element.style.transform || '';
|
|
147
|
-
// Get computed CSS variable value (from CSS classes, not inline styles)
|
|
148
|
-
const computedStyle = window.getComputedStyle(element);
|
|
149
|
-
const rotationValue = computedStyle.getPropertyValue('--rotation').trim() || '0deg';
|
|
150
|
-
// console.log('Rotation value from CSS:', rotationValue);
|
|
151
|
-
// Set transform-origin separately (not part of transform value)
|
|
152
|
-
element.style.transformOrigin = 'center center';
|
|
153
|
-
// Preserve existing translate3d and add rotation
|
|
154
|
-
if (currentTransform.includes('translate3d')) {
|
|
155
|
-
element.style.transform = `${currentTransform} rotate(${rotationValue})`;
|
|
156
|
-
// console.log('Applied rotation to transform:', element.style.transform);
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
element.style.transform = `rotate(${rotationValue})`;
|
|
160
|
-
}
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get the rotation angle of a marker using RaainDivIcon
|
|
110
|
+
* @param marker The marker to query (MapLatLng)
|
|
111
|
+
* @returns The rotation angle in degrees, or null if not found or not using RaainDivIcon
|
|
112
|
+
*/
|
|
113
|
+
getMarkerRotation(marker) {
|
|
114
|
+
const markerFound = this.getMarkerElement(marker);
|
|
115
|
+
if (!markerFound) {
|
|
116
|
+
return null;
|
|
161
117
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const parent = element.parentElement;
|
|
166
|
-
// console.log('Static wind marker detected, parent:', parent);
|
|
167
|
-
if (parent) {
|
|
168
|
-
// Get the marker's position from its transform style
|
|
169
|
-
const transformStyle = element.style.transform || '';
|
|
170
|
-
// console.log('Element transform:', transformStyle);
|
|
171
|
-
// Extract translate3d values using regex
|
|
172
|
-
const match = transformStyle.match(/translate3d\(([^,]+),\s*([^,]+),\s*([^)]+)\)/);
|
|
173
|
-
let leftPos = '50%';
|
|
174
|
-
let topPosSpeed = '-25px';
|
|
175
|
-
if (match) {
|
|
176
|
-
const xPos = match[1].trim();
|
|
177
|
-
const yPos = match[2].trim();
|
|
178
|
-
// console.log('Extracted position:', xPos, yPos);
|
|
179
|
-
// Position labels at the marker's exact position (from translate3d)
|
|
180
|
-
leftPos = xPos;
|
|
181
|
-
// Parse the Y position and offset it upward for labels
|
|
182
|
-
const yValue = parseFloat(yPos);
|
|
183
|
-
if (!isNaN(yValue)) {
|
|
184
|
-
topPosSpeed = `${yValue - 25}px`;
|
|
185
|
-
// topPosArrow = `${yValue - 45}px`;
|
|
186
|
-
// console.log(
|
|
187
|
-
// 'Calculated label positions - speed:',
|
|
188
|
-
// topPosSpeed,
|
|
189
|
-
// 'arrow:',
|
|
190
|
-
// topPosArrow
|
|
191
|
-
// );
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
if (this.markerStyles.length === 0) {
|
|
195
|
-
// remove all wind-speed-label
|
|
196
|
-
document.querySelectorAll('.wind-speed-label').forEach((el) => el.remove());
|
|
197
|
-
}
|
|
198
|
-
// Add speed text label
|
|
199
|
-
if (varsToSet && varsToSet['speed-text']) {
|
|
200
|
-
const speedLabel = document.createElement('div');
|
|
201
|
-
speedLabel.className = 'wind-speed-label';
|
|
202
|
-
speedLabel.textContent = String(varsToSet['speed-text']);
|
|
203
|
-
speedLabel.style.cssText = `position: absolute; left: ${leftPos}; top: ${topPosSpeed}; transform: translateX(-50%); font-size: 11px; font-weight: bold; color: rgba(255, 255, 255, 0.95); background: rgba(0, 0, 0, 0.6); padding: 2px 5px; border-radius: 3px; text-shadow: 0 0 2px rgba(0, 0, 0, 0.8); pointer-events: none; white-space: nowrap; z-index: 10000;`;
|
|
204
|
-
parent.appendChild(speedLabel);
|
|
205
|
-
// console.log(
|
|
206
|
-
// 'Added speed label:',
|
|
207
|
-
// speedLabel.textContent,
|
|
208
|
-
// 'at position',
|
|
209
|
-
// leftPos,
|
|
210
|
-
// topPosSpeed
|
|
211
|
-
// );
|
|
212
|
-
}
|
|
213
|
-
// Add direction arrow
|
|
214
|
-
// const arrow = document.createElement('div');
|
|
215
|
-
// arrow.className = 'wind-arrow-indicator';
|
|
216
|
-
// arrow.textContent = '→';
|
|
217
|
-
// arrow.style.cssText = `position: absolute; left: ${leftPos}; top: ${topPosArrow}; font-size: 18px; font-weight: bold; color: rgba(100, 150, 255, 0.95); text-shadow: 0 0 4px rgba(0, 0, 0, 0.7); pointer-events: none; transform-origin: center; z-index: 10000; transform: translateX(-50%);`;
|
|
218
|
-
// parent.appendChild(arrow);
|
|
219
|
-
// console.log('Added arrow indicator at position', leftPos, topPosArrow);
|
|
220
|
-
this.markerStyles.push({ marker: markerFound, style, cssVars });
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
console.warn('No parent element found for static wind marker');
|
|
224
|
-
}
|
|
118
|
+
const icon = markerFound.options.icon;
|
|
119
|
+
if (icon instanceof tools_1.RaainDivIcon) {
|
|
120
|
+
return icon.getRotation();
|
|
225
121
|
}
|
|
122
|
+
return null;
|
|
226
123
|
}
|
|
227
124
|
getMarkerElement(markerToFind) {
|
|
228
125
|
var _a;
|
|
@@ -237,12 +134,17 @@ class MapElement {
|
|
|
237
134
|
return founds[0];
|
|
238
135
|
}
|
|
239
136
|
onZoomEnd(event) {
|
|
240
|
-
|
|
241
|
-
//
|
|
242
|
-
this.
|
|
243
|
-
|
|
244
|
-
this.changeMarkerStyle(markerStyle.marker.getLatLng(), markerStyle.style, markerStyle.cssVars);
|
|
137
|
+
var _a;
|
|
138
|
+
// Re-apply rotation to all RaainDivIcon markers after zoom
|
|
139
|
+
if (!((_a = this.markersProduced) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
140
|
+
return;
|
|
245
141
|
}
|
|
142
|
+
this.markersProduced.forEach((marker) => {
|
|
143
|
+
const icon = marker.options.icon;
|
|
144
|
+
if (typeof icon.applyRotation === 'function') {
|
|
145
|
+
icon.applyRotation();
|
|
146
|
+
}
|
|
147
|
+
});
|
|
246
148
|
}
|
|
247
149
|
addCompositeLayer(mapLeaflet, compositeLayer, timeFrameContainer) {
|
|
248
150
|
const layerIds = [];
|
|
@@ -270,4 +172,4 @@ class MapElement {
|
|
|
270
172
|
}
|
|
271
173
|
}
|
|
272
174
|
exports.MapElement = MapElement;
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwRWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3JpZXMvTWFwRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBeUU7QUFDekUsb0NBQW1GO0FBRW5GLHNDQVFtQjtBQUVuQixNQUFhLGVBQWU7SUFDeEIsWUFDVyxtQkFBeUMsRUFDekMsT0FHSjtRQUpJLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBc0I7UUFDekMsWUFBTyxHQUFQLE9BQU8sQ0FHWDtJQUNKLENBQUM7Q0FDUDtBQVJELDBDQVFDO0FBRUQsTUFBYSxVQUFVO0lBU25CLFlBQ1csU0FJSyxFQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBQyxFQUNsQixvQkFBb0IsS0FBSztRQUw1QixXQUFNLEdBQU4sTUFBTSxDQUllO1FBQ2xCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtRQVZoQyxVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBWWIsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztRQUM1RixNQUFNLEdBQUcsR0FDTCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxpQkFBUyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQW9CLEVBQUUs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
|
|
175
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFwRWxlbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYWN0b3JpZXMvTWFwRWxlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNEQ7QUFDNUQsb0NBQWlHO0FBRWpHLHNDQVFtQjtBQUVuQixNQUFhLGVBQWU7SUFDeEIsWUFDVyxtQkFBeUMsRUFDekMsVUFHRCxFQUFFO1FBSkQsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFzQjtRQUN6QyxZQUFPLEdBQVAsT0FBTyxDQUdOO0lBQ1QsQ0FBQztDQUNQO0FBUkQsMENBUUM7QUFFRCxNQUFhLFVBQVU7SUFPbkIsWUFDVyxTQUlLLEVBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFDLEVBQ2xCLG9CQUFvQixLQUFLO1FBTDVCLFdBQU0sR0FBTixNQUFNLENBSWU7UUFDbEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFRO1FBUmhDLFVBQUssR0FBRyxDQUFDLENBQUM7UUFVYixNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQzVGLE1BQU0sR0FBRyxHQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7UUFDckYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGlCQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBb0IsRUFBRSxNQUF1Qjs7UUFDdEQsY0FBYztRQUNkLE1BQU0sS0FB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
|
package/layers/MarkersLayer.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LayerGroup, Map, Marker } from 'leaflet';
|
|
2
2
|
import { IPixiLayer } from './IPixiLayer';
|
|
3
|
-
import { MapLatLng } from '../tools
|
|
3
|
+
import { MapLatLng, RaainDivIcon } from '../tools';
|
|
4
4
|
export declare class MarkersLayer implements IPixiLayer {
|
|
5
5
|
protected _layerGroup: LayerGroup;
|
|
6
6
|
protected _width: number;
|
|
@@ -12,7 +12,7 @@ export declare class MarkersLayer implements IPixiLayer {
|
|
|
12
12
|
setCurrentHeight(height: number): void;
|
|
13
13
|
render(markers: {
|
|
14
14
|
iconsLatLng: MapLatLng[];
|
|
15
|
-
|
|
15
|
+
raainDivIcon?: RaainDivIcon;
|
|
16
16
|
}[]): {
|
|
17
17
|
markers: Marker[];
|
|
18
18
|
};
|
package/layers/MarkersLayer.js
CHANGED
|
@@ -34,18 +34,12 @@ class MarkersLayer {
|
|
|
34
34
|
if (this._layerGroup) {
|
|
35
35
|
this._layerGroup.clearLayers();
|
|
36
36
|
}
|
|
37
|
-
if (!markers) {
|
|
38
|
-
return { markers: [] };
|
|
39
|
-
}
|
|
40
37
|
// Add markers
|
|
41
38
|
const ms = [];
|
|
42
39
|
let x;
|
|
43
40
|
let y;
|
|
44
41
|
for (const marker of markers) {
|
|
45
|
-
|
|
46
|
-
if (marker.iconOptions) {
|
|
47
|
-
iconOption = (0, leaflet_1.icon)(marker.iconOptions);
|
|
48
|
-
}
|
|
42
|
+
const raainDivIcon = marker.raainDivIcon;
|
|
49
43
|
for (const iconsLatLng of marker.iconsLatLng) {
|
|
50
44
|
x = iconsLatLng.lat;
|
|
51
45
|
y = iconsLatLng.lng;
|
|
@@ -54,14 +48,21 @@ class MarkersLayer {
|
|
|
54
48
|
title: iconsLatLng.name,
|
|
55
49
|
alt: iconsLatLng.id,
|
|
56
50
|
};
|
|
57
|
-
if (
|
|
58
|
-
options.icon =
|
|
51
|
+
if (raainDivIcon) {
|
|
52
|
+
options.icon = raainDivIcon;
|
|
53
|
+
}
|
|
54
|
+
const leafletMarkerInstance = (0, leaflet_1.marker)([x, y], options);
|
|
55
|
+
if (raainDivIcon) {
|
|
56
|
+
raainDivIcon.bindToMarker(leafletMarkerInstance);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.warn('raain-ui >> no raainDivIcon provided for this marker!');
|
|
59
60
|
}
|
|
60
|
-
ms.push(
|
|
61
|
+
ms.push(leafletMarkerInstance);
|
|
61
62
|
}
|
|
62
63
|
else {
|
|
63
64
|
// implement your own error handling
|
|
64
|
-
console.error('MARKER ERROR: ', iconsLatLng.id, 'x: ', x, ' y: ', y);
|
|
65
|
+
console.error('raain-ui >> MARKER ERROR: ', iconsLatLng.id, 'x: ', x, ' y: ', y);
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
}
|
|
@@ -70,4 +71,4 @@ class MarkersLayer {
|
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
exports.MarkersLayer = MarkersLayer;
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWFya2Vyc0xheWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xheWVycy9NYXJrZXJzTGF5ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQW9HO0FBSXBHLE1BQWEsWUFBWTtJQUtyQjtRQUNJLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDakMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDbEM7SUFDTCxDQUFDO0lBRU0sYUFBYSxDQUFDLEdBQVE7UUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBRUQsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUNoQyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUNyQztJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBYztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQWtFO1FBRzVFLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ2xDO1FBRUQsY0FBYztRQUNkLE1BQU0sRUFBRSxHQUFhLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQVMsQ0FBQztRQUNkLElBQUksQ0FBUyxDQUFDO1FBQ2QsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7WUFDMUIsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUV6QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUU7Z0JBQzFDLENBQUMsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDO2dCQUNwQixDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztnQkFFcEIsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7b0JBQzlELE1BQU0sT0FBTyxHQUFrQjt3QkFDM0IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxJQUFJO3dCQUN2QixHQUFHLEVBQUUsV0FBVyxDQUFDLEVBQUU7cUJBQ3RCLENBQUM7b0JBRUYsSUFBSSxZQUFZLEVBQUU7d0JBQ2QsT0FBTyxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7cUJBQy9CO29CQUVELE1BQU0scUJBQXFCLEdBQUcsSUFBQSxnQkFBYSxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUU3RCxJQUFJLFlBQVksRUFBRTt3QkFDZCxZQUFZLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUM7cUJBQ3BEO3lCQUFNO3dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsdURBQXVELENBQUMsQ0FBQztxQkFDekU7b0JBRUQsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2lCQUNsQztxQkFBTTtvQkFDSCxvQ0FBb0M7b0JBQ3BDLE9BQU8sQ0FBQyxLQUFLLENBQ1QsNEJBQTRCLEVBQzVCLFdBQVcsQ0FBQyxFQUFFLEVBQ2QsS0FBSyxFQUNMLENBQUMsRUFDRCxNQUFNLEVBQ04sQ0FBQyxDQUNKLENBQUM7aUJBQ0w7YUFDSjtTQUNKO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFBLG9CQUFVLEVBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsT0FBTyxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUMsQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUE3RkQsb0NBNkZDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "raain-ui",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.24",
|
|
4
4
|
"author": "contact@raain.io",
|
|
5
5
|
"homepage": "https://github.com/raainio/raain-ui",
|
|
6
6
|
"description": "raain.io ui layers",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"geolib": "~3.3.4",
|
|
36
36
|
"leaflet": "~1.9.4",
|
|
37
37
|
"pixi.js": "~5.3.12",
|
|
38
|
-
"raain-model": "~3.
|
|
38
|
+
"raain-model": "~3.1.1",
|
|
39
39
|
"satellite-view": "~2.1.2",
|
|
40
40
|
"spinning-ball": "~0.5.0",
|
|
41
41
|
"tile-setter": "~0.1.12",
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { DivIcon, DivIconOptions, Marker, PointExpression } from 'leaflet';
|
|
2
|
+
/**
|
|
3
|
+
* Extended DivIconOptions to include rotation and dynamic sizing properties
|
|
4
|
+
*/
|
|
5
|
+
export interface RaainDivIconOptions extends DivIconOptions {
|
|
6
|
+
html?: string | HTMLElement | false;
|
|
7
|
+
iconSize?: PointExpression | undefined;
|
|
8
|
+
iconAnchor?: PointExpression | undefined;
|
|
9
|
+
popupAnchor?: PointExpression | undefined;
|
|
10
|
+
className?: string | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* Initial rotation angle in degrees (0 = North, 90 = East, 180 = South, 270 = West)
|
|
13
|
+
*/
|
|
14
|
+
rotationAngle?: number;
|
|
15
|
+
/**
|
|
16
|
+
* CSS transform-origin for rotation (default: 'center center')
|
|
17
|
+
*/
|
|
18
|
+
rotationOrigin?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Dynamic width in pixels (overrides iconSize width if provided)
|
|
21
|
+
*/
|
|
22
|
+
width?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Dynamic height in pixels (overrides iconSize height if provided)
|
|
25
|
+
*/
|
|
26
|
+
height?: number;
|
|
27
|
+
/**
|
|
28
|
+
* HTML template with {width} and {height} placeholders for dynamic sizing
|
|
29
|
+
* Use this for icons that need to change size at runtime using setSize()
|
|
30
|
+
*/
|
|
31
|
+
htmlTemplate?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* A DivIcon with built-in rotation and dynamic sizing support
|
|
35
|
+
*
|
|
36
|
+
* Usage:
|
|
37
|
+
* ```typescript
|
|
38
|
+
* // Basic usage with rotation
|
|
39
|
+
* const icon = new RaainDivIcon({
|
|
40
|
+
* html: '<div style="width: 30px; height: 30px; background: red;"></div>',
|
|
41
|
+
* rotationAngle: 0,
|
|
42
|
+
* className: 'my-custom-marker'
|
|
43
|
+
* });
|
|
44
|
+
*
|
|
45
|
+
* // With dynamic sizing (for wind speed visualization)
|
|
46
|
+
* const windIcon = new RaainDivIcon({
|
|
47
|
+
* htmlTemplate: `<div style="width: {width}px; height: {height}px; background: blue;"></div>`,
|
|
48
|
+
* width: 40,
|
|
49
|
+
* height: 40,
|
|
50
|
+
* rotationAngle: 45
|
|
51
|
+
* });
|
|
52
|
+
*
|
|
53
|
+
* const marker = L.marker([51.505, -0.09], { icon: windIcon }).addTo(map);
|
|
54
|
+
*
|
|
55
|
+
* // Update rotation dynamically
|
|
56
|
+
* windIcon.setRotation(90);
|
|
57
|
+
*
|
|
58
|
+
* // Update size dynamically (e.g., based on wind speed)
|
|
59
|
+
* windIcon.setSize(60, 60);
|
|
60
|
+
*
|
|
61
|
+
* // Update both size and rotation
|
|
62
|
+
* windIcon.update({ width: 50, height: 50, rotationAngle: 180 });
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class RaainDivIcon extends DivIcon {
|
|
66
|
+
options: RaainDivIconOptions;
|
|
67
|
+
private _icon;
|
|
68
|
+
private _marker;
|
|
69
|
+
constructor(options: RaainDivIconOptions);
|
|
70
|
+
/**
|
|
71
|
+
* Process size options and generate HTML from template if needed
|
|
72
|
+
*/
|
|
73
|
+
private static _processSizeOptions;
|
|
74
|
+
/**
|
|
75
|
+
* Override createIcon to store reference and apply initial rotation
|
|
76
|
+
*/
|
|
77
|
+
createIcon(oldIcon?: HTMLElement): HTMLElement;
|
|
78
|
+
/**
|
|
79
|
+
* Set the rotation angle in degrees
|
|
80
|
+
* @param angle Rotation angle (0 = North, 90 = East, 180 = South, 270 = West)
|
|
81
|
+
*/
|
|
82
|
+
setRotation(angle: number): this;
|
|
83
|
+
/**
|
|
84
|
+
* Get the current rotation angle
|
|
85
|
+
*/
|
|
86
|
+
getRotation(): number;
|
|
87
|
+
/**
|
|
88
|
+
* Set the size (width and height) of the icon dynamically
|
|
89
|
+
* @param width New width in pixels
|
|
90
|
+
* @param height New height in pixels
|
|
91
|
+
*/
|
|
92
|
+
setSize(width: number, height: number): this;
|
|
93
|
+
/**
|
|
94
|
+
* Get the current size
|
|
95
|
+
*/
|
|
96
|
+
getSize(): {
|
|
97
|
+
width: number;
|
|
98
|
+
height: number;
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Update multiple properties at once (size, rotation)
|
|
102
|
+
* @param updates Object with properties to update
|
|
103
|
+
*/
|
|
104
|
+
update(updates: {
|
|
105
|
+
width?: number;
|
|
106
|
+
height?: number;
|
|
107
|
+
rotationAngle?: number;
|
|
108
|
+
}): this;
|
|
109
|
+
/**
|
|
110
|
+
* Set the transform origin for rotation
|
|
111
|
+
* @param origin CSS transform-origin value (e.g., 'center center', '50% 50%')
|
|
112
|
+
*/
|
|
113
|
+
setRotationOrigin(origin: string): this;
|
|
114
|
+
/**
|
|
115
|
+
* Apply the current rotation to the icon element
|
|
116
|
+
* This preserves any existing translate3d transformations from Leaflet
|
|
117
|
+
*/
|
|
118
|
+
applyRotation(): this;
|
|
119
|
+
/**
|
|
120
|
+
* Bind this icon to a marker for automatic rotation updates
|
|
121
|
+
* @param marker The Leaflet marker to bind to
|
|
122
|
+
*/
|
|
123
|
+
bindToMarker(marker: Marker): this;
|
|
124
|
+
/**
|
|
125
|
+
* Unbind from the current marker
|
|
126
|
+
*/
|
|
127
|
+
unbindFromMarker(): this;
|
|
128
|
+
/**
|
|
129
|
+
* Get the icon HTML element (if created)
|
|
130
|
+
*/
|
|
131
|
+
getIconElement(): HTMLElement | null;
|
|
132
|
+
/**
|
|
133
|
+
* Internal method to update the icon's size
|
|
134
|
+
*/
|
|
135
|
+
private _updateSize;
|
|
136
|
+
}
|