mahal_map 2.0.2 → 2.0.3
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/README.md +10 -1
- package/dist/index.d.mts +28 -5
- package/dist/index.d.ts +28 -5
- package/dist/index.js +1 -1
- package/dist/index.mjs +4 -5
- package/dist/mahal_map.sdk.js +1 -1
- package/package.json +2 -2
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -495,7 +495,16 @@ map.roadAt({ x: 320, y: 240 });
|
|
|
495
495
|
map.roadsNamed; // есть ли в текущем стиле названия дорог
|
|
496
496
|
```
|
|
497
497
|
|
|
498
|
-
Подписываться можно сразу после `create()
|
|
498
|
+
Подписываться можно сразу после `create()` — даже когда слой ещё не поднят (`enable3D: false`). Подписка и облик выделения запоминаются и переигрываются, как только слой появится:
|
|
499
|
+
|
|
500
|
+
```ts
|
|
501
|
+
const map = MahalMap.create({ container: "map", enable3D: false }, maplibregl, Maps3D);
|
|
502
|
+
|
|
503
|
+
map.onBuildingClick((b) => console.log(b?.props.osm_id));
|
|
504
|
+
map.setSelectionStyle({ color: "#e23b2f" });
|
|
505
|
+
|
|
506
|
+
map.toggle3DBuildings(true); // подписка и стиль выделения уже применены к новому слою
|
|
507
|
+
```
|
|
499
508
|
|
|
500
509
|
#### Вкл/выкл 3D-здания на лету
|
|
501
510
|
|
package/dist/index.d.mts
CHANGED
|
@@ -175,9 +175,12 @@ interface IMaps3DBuildingsController {
|
|
|
175
175
|
}
|
|
176
176
|
interface IMaps3DBuildingClickInfo {
|
|
177
177
|
id: string | number;
|
|
178
|
+
/** Атрибуты объекта; `props.osm_id` — идентификатор, который не меняется. */
|
|
179
|
+
props: Record<string, unknown>;
|
|
180
|
+
/** Высота здания в метрах. */
|
|
181
|
+
height: number;
|
|
182
|
+
/** Порядковый номер внутри сцены. Живёт до ближайшей пересборки геометрии. */
|
|
178
183
|
index?: number;
|
|
179
|
-
height?: number;
|
|
180
|
-
props?: Record<string, unknown>;
|
|
181
184
|
[key: string]: unknown;
|
|
182
185
|
}
|
|
183
186
|
interface IMaps3DObjectsLightOptions {
|
|
@@ -461,6 +464,10 @@ declare class MahalMap {
|
|
|
461
464
|
private buildingsEnabled;
|
|
462
465
|
private workerCheckTimer?;
|
|
463
466
|
private styleChangeHandler?;
|
|
467
|
+
private pendingBuildingClick?;
|
|
468
|
+
private pendingRoadClick?;
|
|
469
|
+
private pendingSelectionStyle?;
|
|
470
|
+
private pendingLayerSubscribers;
|
|
464
471
|
private constructor();
|
|
465
472
|
private static getInstanceKey;
|
|
466
473
|
private static normalizeLanguage;
|
|
@@ -592,7 +599,10 @@ declare class MahalMap {
|
|
|
592
599
|
getLayerState(id: Maps3DLayerId): IMaps3DLayerState | null;
|
|
593
600
|
/** Снимок всех слоёв — по нему приложение рисует свою панель. */
|
|
594
601
|
getLayers(): IMaps3DLayerState[];
|
|
595
|
-
/**
|
|
602
|
+
/**
|
|
603
|
+
* Подписка на изменения слоёв. Возвращает отписку. Работает и до появления слоя:
|
|
604
|
+
* подписка переиграется при его подключении, а отписка снимет её в любом случае.
|
|
605
|
+
*/
|
|
596
606
|
onLayers(callback: (state: IMaps3DLayerState) => void): () => void;
|
|
597
607
|
/** Пере-применить волю клиента ко всем слоям — после полной смены стиля. */
|
|
598
608
|
refreshLayers(): void;
|
|
@@ -608,14 +618,21 @@ declare class MahalMap {
|
|
|
608
618
|
* и метка окажется в чужом зале.
|
|
609
619
|
*/
|
|
610
620
|
showPlace(lon: number, lat: number, level?: number | null, zoom?: number): void;
|
|
611
|
-
/**
|
|
621
|
+
/**
|
|
622
|
+
* Клик по зданию: { id, height, props } либо null. Повторный вызов заменяет обработчик.
|
|
623
|
+
* Подписываться можно сразу после create(), даже когда слой ещё не поднят
|
|
624
|
+
* (`enable3D: false`) — подписка переиграется, как только слой появится.
|
|
625
|
+
*/
|
|
612
626
|
onBuildingClick(callback: (info: IMaps3DBuildingClickInfo | null) => void): void;
|
|
613
627
|
/** Выделить здание по osm_id. `false` — здания сейчас нет в загруженных данных. */
|
|
614
628
|
selectBuilding(id: number | string | null, style?: IMaps3DSelectionStyle): boolean;
|
|
615
629
|
clearSelection(): void;
|
|
616
630
|
selectedBuilding(): number | string | null;
|
|
617
631
|
setSelectionStyle(style: IMaps3DSelectionStyle): void;
|
|
618
|
-
/**
|
|
632
|
+
/**
|
|
633
|
+
* Клик по дороге. Приходит независимо от клика по зданию — приоритет решает приложение.
|
|
634
|
+
* Как и onBuildingClick, переживает отсутствие слоя на момент подписки.
|
|
635
|
+
*/
|
|
619
636
|
onRoadClick(callback: (hit: IMaps3DRoadHit | null) => void): void;
|
|
620
637
|
/** Дорога под точкой холста. Допуск по умолчанию — 12 px. */
|
|
621
638
|
roadAt(point: {
|
|
@@ -629,6 +646,12 @@ declare class MahalMap {
|
|
|
629
646
|
* заведует реестр слоёв, а опции облика зданий приходят из options.maps3d как есть.
|
|
630
647
|
*/
|
|
631
648
|
private createMaps3DLayer;
|
|
649
|
+
/**
|
|
650
|
+
* Переигрывает волю клиента на только что подключённом слое: подписки на клики,
|
|
651
|
+
* облик выделения и подписчиков реестра. Нужно, когда карта создана без слоя
|
|
652
|
+
* (`enable3D: false`) — тогда всё это было сказано до его появления.
|
|
653
|
+
*/
|
|
654
|
+
private applyPendingSubscriptions;
|
|
632
655
|
private attachMaps3DLayer;
|
|
633
656
|
/**
|
|
634
657
|
* Освобождает слой Maps3D одним доступным методом (destroy(), иначе remove()) и ровно один
|
package/dist/index.d.ts
CHANGED
|
@@ -175,9 +175,12 @@ interface IMaps3DBuildingsController {
|
|
|
175
175
|
}
|
|
176
176
|
interface IMaps3DBuildingClickInfo {
|
|
177
177
|
id: string | number;
|
|
178
|
+
/** Атрибуты объекта; `props.osm_id` — идентификатор, который не меняется. */
|
|
179
|
+
props: Record<string, unknown>;
|
|
180
|
+
/** Высота здания в метрах. */
|
|
181
|
+
height: number;
|
|
182
|
+
/** Порядковый номер внутри сцены. Живёт до ближайшей пересборки геометрии. */
|
|
178
183
|
index?: number;
|
|
179
|
-
height?: number;
|
|
180
|
-
props?: Record<string, unknown>;
|
|
181
184
|
[key: string]: unknown;
|
|
182
185
|
}
|
|
183
186
|
interface IMaps3DObjectsLightOptions {
|
|
@@ -461,6 +464,10 @@ declare class MahalMap {
|
|
|
461
464
|
private buildingsEnabled;
|
|
462
465
|
private workerCheckTimer?;
|
|
463
466
|
private styleChangeHandler?;
|
|
467
|
+
private pendingBuildingClick?;
|
|
468
|
+
private pendingRoadClick?;
|
|
469
|
+
private pendingSelectionStyle?;
|
|
470
|
+
private pendingLayerSubscribers;
|
|
464
471
|
private constructor();
|
|
465
472
|
private static getInstanceKey;
|
|
466
473
|
private static normalizeLanguage;
|
|
@@ -592,7 +599,10 @@ declare class MahalMap {
|
|
|
592
599
|
getLayerState(id: Maps3DLayerId): IMaps3DLayerState | null;
|
|
593
600
|
/** Снимок всех слоёв — по нему приложение рисует свою панель. */
|
|
594
601
|
getLayers(): IMaps3DLayerState[];
|
|
595
|
-
/**
|
|
602
|
+
/**
|
|
603
|
+
* Подписка на изменения слоёв. Возвращает отписку. Работает и до появления слоя:
|
|
604
|
+
* подписка переиграется при его подключении, а отписка снимет её в любом случае.
|
|
605
|
+
*/
|
|
596
606
|
onLayers(callback: (state: IMaps3DLayerState) => void): () => void;
|
|
597
607
|
/** Пере-применить волю клиента ко всем слоям — после полной смены стиля. */
|
|
598
608
|
refreshLayers(): void;
|
|
@@ -608,14 +618,21 @@ declare class MahalMap {
|
|
|
608
618
|
* и метка окажется в чужом зале.
|
|
609
619
|
*/
|
|
610
620
|
showPlace(lon: number, lat: number, level?: number | null, zoom?: number): void;
|
|
611
|
-
/**
|
|
621
|
+
/**
|
|
622
|
+
* Клик по зданию: { id, height, props } либо null. Повторный вызов заменяет обработчик.
|
|
623
|
+
* Подписываться можно сразу после create(), даже когда слой ещё не поднят
|
|
624
|
+
* (`enable3D: false`) — подписка переиграется, как только слой появится.
|
|
625
|
+
*/
|
|
612
626
|
onBuildingClick(callback: (info: IMaps3DBuildingClickInfo | null) => void): void;
|
|
613
627
|
/** Выделить здание по osm_id. `false` — здания сейчас нет в загруженных данных. */
|
|
614
628
|
selectBuilding(id: number | string | null, style?: IMaps3DSelectionStyle): boolean;
|
|
615
629
|
clearSelection(): void;
|
|
616
630
|
selectedBuilding(): number | string | null;
|
|
617
631
|
setSelectionStyle(style: IMaps3DSelectionStyle): void;
|
|
618
|
-
/**
|
|
632
|
+
/**
|
|
633
|
+
* Клик по дороге. Приходит независимо от клика по зданию — приоритет решает приложение.
|
|
634
|
+
* Как и onBuildingClick, переживает отсутствие слоя на момент подписки.
|
|
635
|
+
*/
|
|
619
636
|
onRoadClick(callback: (hit: IMaps3DRoadHit | null) => void): void;
|
|
620
637
|
/** Дорога под точкой холста. Допуск по умолчанию — 12 px. */
|
|
621
638
|
roadAt(point: {
|
|
@@ -629,6 +646,12 @@ declare class MahalMap {
|
|
|
629
646
|
* заведует реестр слоёв, а опции облика зданий приходят из options.maps3d как есть.
|
|
630
647
|
*/
|
|
631
648
|
private createMaps3DLayer;
|
|
649
|
+
/**
|
|
650
|
+
* Переигрывает волю клиента на только что подключённом слое: подписки на клики,
|
|
651
|
+
* облик выделения и подписчиков реестра. Нужно, когда карта создана без слоя
|
|
652
|
+
* (`enable3D: false`) — тогда всё это было сказано до его появления.
|
|
653
|
+
*/
|
|
654
|
+
private applyPendingSubscriptions;
|
|
632
655
|
private attachMaps3DLayer;
|
|
633
656
|
/**
|
|
634
657
|
* Освобождает слой Maps3D одним доступным методом (destroy(), иначе remove()) и ровно один
|