mahal_map 2.1.0 → 2.2.2
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 +106 -2
- package/dist/index.d.mts +95 -6
- package/dist/index.d.ts +95 -6
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -0
- package/dist/mahal_map.sdk.js +1 -1
- package/package.json +73 -73
package/README.md
CHANGED
|
@@ -281,7 +281,7 @@ map.setStyle("light"); // → navigator-light
|
|
|
281
281
|
| `traffic` | `boolean \| { raster?, rasterMaxZoom?, graph?, opacity?, arrows? }` | `false` | Слой пробок. `raster: true` — картинкой вместо векторного слоя. |
|
|
282
282
|
| `indoor` | `boolean \| { level? }` | `false` | Планы этажей. |
|
|
283
283
|
| `closures` | `boolean \| object` | `false` | Перекрытия дорог. |
|
|
284
|
-
| `places` | `object` | — | Парковки, заправки, зарядки: `highlight`, `paid`, `free`, `unknown
|
|
284
|
+
| `places` | `object` | — | Парковки, заправки, зарядки: `highlight`, `paid`, `free`, `unknown`, `fillOpacity` (0.10.0+). |
|
|
285
285
|
| `minZoom` | `number` | `16` | Зум появления объёма. |
|
|
286
286
|
| `lodBias` | `number` | `1` | `0` — всегда детальная геометрия, `1` — упрощённая вдали. |
|
|
287
287
|
| `memoryBudget` | `number` | `30` | Сколько 3D-моделей держать в памяти. |
|
|
@@ -341,7 +341,16 @@ MahalMap.create(
|
|
|
341
341
|
| `active` | что нарисовано прямо сейчас (память SDK) |
|
|
342
342
|
| `rendered` | факт со стороны карты: слой есть в стиле и не погашен |
|
|
343
343
|
|
|
344
|
-
`rendered` появилось в Maps3D 0.8.0; у сборок постарше его нет (`undefined`). Расхождение `active !== rendered` означает, что внутренний признак SDK разошёлся с картой — это видно одной проверкой, без чтения минифицированной сборки.
|
|
344
|
+
`rendered` появилось в Maps3D 0.8.0; у сборок постарше его нет (`undefined`). Расхождение `active !== rendered` означает, что внутренний признак SDK разошёлся с картой — это видно одной проверкой, без чтения минифицированной сборки. Сравнивать поля можно только когда `rendered` есть — иначе на старой сборке любой активный слой покажется расхождением:
|
|
345
|
+
|
|
346
|
+
```ts
|
|
347
|
+
const state = map.getLayerState("terrain");
|
|
348
|
+
|
|
349
|
+
// rendered === undefined — Maps3D < 0.8.0, проверка недоступна
|
|
350
|
+
if (state?.rendered !== undefined && state.active !== state.rendered) {
|
|
351
|
+
reportLayerMismatch(state);
|
|
352
|
+
}
|
|
353
|
+
```
|
|
345
354
|
|
|
346
355
|
Слой может быть включён и при этом не нарисован — и это не ошибка:
|
|
347
356
|
|
|
@@ -392,6 +401,12 @@ map.setLayer("parking", true, {
|
|
|
392
401
|
});
|
|
393
402
|
```
|
|
394
403
|
|
|
404
|
+
Площадные парковки рисуются тремя слоями по одной геометрии: заливка в цвете подтипа, мягкая внутренняя кромка (с z14) и волосяной кант. Цвета: янтарь — платно, зелёный — бесплатно, сланцевый — неизвестно. Размеры заданы в экранных пикселях и от зума плитки не зависят.
|
|
405
|
+
|
|
406
|
+
Заливку включает только режим поиска — `highlight: true`. Без него подключение Maps3D облик карты не меняет. Постоянную плотность заливки вместо кривой по зуму задаёт `maps3d.places.fillOpacity`.
|
|
407
|
+
|
|
408
|
+
Наведение, клик и справка по участку — в разделе [Парковки: наведение, клик, справка](#парковки-наведение-клик-справка).
|
|
409
|
+
|
|
395
410
|
#### Рельеф
|
|
396
411
|
|
|
397
412
|
`auto` показывает рельеф на обзорных зумах, `on` — всегда. Режим `on` заметно дороже по трафику и времени кадра, чем `auto`.
|
|
@@ -558,6 +573,79 @@ map.setHoverEnabled(false); // подписка сохраняется
|
|
|
558
573
|
|
|
559
574
|
Цену ограничивает сам SDK: разбор не чаще раза в кадр, пропускается во время движения карты и не трогает сцену, пока курсор на том же доме. Но разбор — это чтение пикселя обратно из GPU, поэтому на слабых устройствах наведение лучше не включать.
|
|
560
575
|
|
|
576
|
+
### Парковки: наведение, клик, справка
|
|
577
|
+
|
|
578
|
+
> Нужен `@grammaps/maps3d-web` **0.10.0+**. На более старой сборке методы ничего не делают и возвращают пустые значения (`false`, `null`).
|
|
579
|
+
|
|
580
|
+
Устроено как у зданий: приложение задаёт облик и получает уведомления, подсветку и курсор рисует SDK.
|
|
581
|
+
|
|
582
|
+
```ts
|
|
583
|
+
// Режим поиска: заливка по подтипу
|
|
584
|
+
map.setLayer("parking", true, { highlight: true });
|
|
585
|
+
|
|
586
|
+
map.setParkingHoverStyle({ opacity: 0.6, outlineWidth: 2.4, cursor: "pointer" });
|
|
587
|
+
|
|
588
|
+
map.onParkingHover((p) => {
|
|
589
|
+
tooltip.textContent = p ? p.subtype : "";
|
|
590
|
+
});
|
|
591
|
+
|
|
592
|
+
map.onParkingClick((p) => {
|
|
593
|
+
if (!p) return;
|
|
594
|
+
openCard(p); // { id, subtype, fee, access, kind, capacity, props }
|
|
595
|
+
});
|
|
596
|
+
|
|
597
|
+
// Подсветить со строки списка и погасить
|
|
598
|
+
row.onmouseenter = () => map.hoverParking(osmId);
|
|
599
|
+
row.onmouseleave = () => map.hoverParking(null);
|
|
600
|
+
|
|
601
|
+
// Справка по точке холста (e.point события карты), допуск 4 px
|
|
602
|
+
map.getMap().on("contextmenu", (e) => console.log(map.parkingAt(e.point, 4)));
|
|
603
|
+
```
|
|
604
|
+
|
|
605
|
+
| Метод | Описание |
|
|
606
|
+
| ---------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
607
|
+
| `onParkingHover(callback \| null)` | Участок под курсором либо `null`. Зовётся **только при смене участка**. `null` — отписаться и погасить. |
|
|
608
|
+
| `setParkingHoverStyle(style)` | Облик подсветки: `color`, `opacity`, `outlineColor`, `outlineWidth`, `cursor`. |
|
|
609
|
+
| `setParkingHoverEnabled(enabled)` | Выключить/включить наведение, не теряя подписку. |
|
|
610
|
+
| `parkingHoverEnabled` | Геттер: включено ли наведение. |
|
|
611
|
+
| `hoverParking(id \| null)` | Подсветить участок программно по `osm_id`; `null` — погасить. `false` — участка нет в данных. |
|
|
612
|
+
| `hoveredParking()` | `osm_id` подсвеченного участка или `null`. |
|
|
613
|
+
| `onParkingClick(callback \| null)` | Клик по участку: справка либо `null`. `null` вместо колбэка — отписаться. |
|
|
614
|
+
| `parkingAt(point, tolPx?)` | Справка по точке холста. Допуск по умолчанию `0` — строго внутрь участка. |
|
|
615
|
+
|
|
616
|
+
Облик подсветки (`IMaps3DParkingHoverStyle`):
|
|
617
|
+
|
|
618
|
+
| Поле | По умолч. | Описание |
|
|
619
|
+
| -------------- | ------------ | ------------------------------------------------------------------------------------------ |
|
|
620
|
+
| `color` | цвет подтипа | Цвет заливки под курсором. По умолчанию не меняется намеренно — подтип уже покрашен смыслом. |
|
|
621
|
+
| `opacity` | `0.55` | Непрозрачность заливки под курсором. |
|
|
622
|
+
| `outlineColor` | кант подтипа | Цвет канта под курсором. |
|
|
623
|
+
| `outlineWidth` | `2.2` | Во сколько раз толще кант под курсором. |
|
|
624
|
+
| `cursor` | `"pointer"` | CSS-курсор над парковкой; `null` — не трогать. |
|
|
625
|
+
|
|
626
|
+
Справка (`IMaps3DParkingInfo`) — ровно то, что лежит в тайле. Отсутствующий атрибут — `null`.
|
|
627
|
+
|
|
628
|
+
| Поле | Тип | Описание |
|
|
629
|
+
| ---------- | -------------------------------- | --------------------------------------------------------------------- |
|
|
630
|
+
| `id` | `number \| string` | `osm_id` участка — тот же, что принимает `hoverParking()`. |
|
|
631
|
+
| `subtype` | `"paid" \| "free" \| "unknown"` | Платность. `unknown` значит «не указано», а **не** «бесплатно». |
|
|
632
|
+
| `fee` | `string \| null` | Исходное `fee` (`yes`/`no`). |
|
|
633
|
+
| `access` | `string \| null` | Кому можно: `residents`, `private`, `customers`, `permissive`… |
|
|
634
|
+
| `kind` | `string \| null` | OSM `parking=*`: `surface`, `multi-storey`, `underground`, `rooftop`… |
|
|
635
|
+
| `capacity` | `number \| null` | Число мест. |
|
|
636
|
+
| `props` | `Record<string, unknown>` | Все свойства фичи как есть. |
|
|
637
|
+
|
|
638
|
+
Поведение:
|
|
639
|
+
|
|
640
|
+
- Попадание определяется по границе полигона, а не по расстоянию до центра.
|
|
641
|
+
- Колбэк наведения вызывается при смене участка, не на каждое движение мыши. Разбор идёт не чаще раза в кадр и пропускается, пока карта движется.
|
|
642
|
+
- Подписка на наведение или клик поднимает слой заливки, даже когда режим поиска выключен, — по нему идёт опрос. Красить в этом случае слой ничего не будет.
|
|
643
|
+
|
|
644
|
+
Ограничения:
|
|
645
|
+
|
|
646
|
+
- Графика работы нет: `opening_hours` в слое `landuse` отсутствует.
|
|
647
|
+
- Названия у площадных парковок нет — оно бывает только у точек POI.
|
|
648
|
+
|
|
561
649
|
#### Вкл/выкл 3D-здания на лету
|
|
562
650
|
|
|
563
651
|
Переключение объём ⇄ штатные здания стиля, без пересоздания карты. Умеет поднять слой, если его не было (`enable3D: false` при создании):
|
|
@@ -1175,6 +1263,15 @@ MahalMap.clearSelection(map);
|
|
|
1175
1263
|
MahalMap.onRoadClick(map, (road) => console.log(road?.name));
|
|
1176
1264
|
MahalMap.roadAt(map, { x: 320, y: 240 });
|
|
1177
1265
|
|
|
1266
|
+
// Парковки
|
|
1267
|
+
MahalMap.setParkingHoverStyle(map, { opacity: 0.6, outlineWidth: 2.4 });
|
|
1268
|
+
MahalMap.onParkingHover(map, (p) => console.log(p?.subtype));
|
|
1269
|
+
MahalMap.setParkingHoverEnabled(map, false);
|
|
1270
|
+
MahalMap.hoverParking(map, 123456789);
|
|
1271
|
+
MahalMap.hoveredParking(map);
|
|
1272
|
+
MahalMap.onParkingClick(map, (p) => console.log(p?.id));
|
|
1273
|
+
MahalMap.parkingAt(map, { x: 320, y: 240 }, 4);
|
|
1274
|
+
|
|
1178
1275
|
// Наведение на здание (Maps3D 0.8.0)
|
|
1179
1276
|
MahalMap.onBuildingHover(map, (b) => console.log(b?.id));
|
|
1180
1277
|
MahalMap.setHoverStyle(map, { color: "#6b9ed1", cursor: "pointer" });
|
|
@@ -1239,6 +1336,13 @@ MahalMap.setZoom(map, 14);
|
|
|
1239
1336
|
| `setSelectionStyle(instance, style)` | Облик выделения. |
|
|
1240
1337
|
| `onRoadClick(instance, callback)` | Клик по дороге. |
|
|
1241
1338
|
| `roadAt(instance, point, tolPx?)` | Дорога под точкой холста. |
|
|
1339
|
+
| `onParkingHover(instance, callback \| null)` | Парковка под курсором (только при смене участка). |
|
|
1340
|
+
| `setParkingHoverStyle(instance, style)` | Облик подсветки парковки. |
|
|
1341
|
+
| `setParkingHoverEnabled(instance, enabled)` | Вкл/выкл наведение на парковки, не теряя подписку. |
|
|
1342
|
+
| `hoverParking(instance, id \| null)` | Подсветить парковку программно по `osm_id`. |
|
|
1343
|
+
| `hoveredParking(instance)` | `osm_id` подсвеченной парковки или `null`. |
|
|
1344
|
+
| `onParkingClick(instance, callback \| null)` | Клик по парковке. |
|
|
1345
|
+
| `parkingAt(instance, point, tolPx?)` | Справка о парковке под точкой холста. |
|
|
1242
1346
|
| `onBuildingHover(instance, cb)` | Подписка на наведение (Maps3D 0.8.0); `null` отписывает. |
|
|
1243
1347
|
| `setHoverStyle(instance, style)` | Облик наведения, включая CSS-курсор. |
|
|
1244
1348
|
| `setHoverEnabled(instance, on)` | Вкл/выкл наведение, не трогая подписку. |
|
package/dist/index.d.mts
CHANGED
|
@@ -23,7 +23,7 @@ interface IAdditionalParamType {
|
|
|
23
23
|
/**
|
|
24
24
|
* Поверхность @grammaps/maps3d-web, описанная локально. Пакет в зависимости не ставится —
|
|
25
25
|
* он приходит снаружи, как и maplibre-gl, поэтому импортировать его типы нельзя. Здесь
|
|
26
|
-
* повторена публичная часть .d.ts версии 0.
|
|
26
|
+
* повторена публичная часть .d.ts версии 0.10.0; всё необязательное помечено `?`, чтобы
|
|
27
27
|
* более старая сборка на странице не ломала типы у потребителя.
|
|
28
28
|
*/
|
|
29
29
|
type Maps3DThemeName = "light" | "dark" | "navigator-light" | "navigator-dark" | "mobile-light" | "mobile-dark";
|
|
@@ -124,6 +124,41 @@ interface IMaps3DRoadHit {
|
|
|
124
124
|
props: Record<string, unknown>;
|
|
125
125
|
distancePx: number;
|
|
126
126
|
}
|
|
127
|
+
/** Платность парковки: по ней участок и покрашен. */
|
|
128
|
+
type Maps3DParkingSubtype = "paid" | "free" | "unknown";
|
|
129
|
+
/**
|
|
130
|
+
* Справка о площадной парковке — ровно то, что есть в тайле. Отсутствующий атрибут — `null`.
|
|
131
|
+
* Графика работы и названия здесь нет: в слое `landuse` их не бывает.
|
|
132
|
+
*/
|
|
133
|
+
interface IMaps3DParkingInfo {
|
|
134
|
+
/** `osm_id` участка — он же идентификатор для hoverParking(). */
|
|
135
|
+
id: number | string;
|
|
136
|
+
/** `unknown` значит «не указано», а не «бесплатно». */
|
|
137
|
+
subtype: Maps3DParkingSubtype;
|
|
138
|
+
/** Исходное `fee` из тайла (`yes`/`no`). */
|
|
139
|
+
fee: string | null;
|
|
140
|
+
/** Кому можно: `yes`, `private`, `customers`, `residents`, `permissive`, `no`… */
|
|
141
|
+
access: string | null;
|
|
142
|
+
/** OSM `parking=*`: `surface`, `multi-storey`, `underground`, `rooftop`… */
|
|
143
|
+
kind: string | null;
|
|
144
|
+
/** Число мест. */
|
|
145
|
+
capacity: number | null;
|
|
146
|
+
/** Все свойства фичи как есть. */
|
|
147
|
+
props: Record<string, unknown>;
|
|
148
|
+
}
|
|
149
|
+
/** Облик парковки под курсором. Не заданные цвета остаются цветами подтипа. */
|
|
150
|
+
interface IMaps3DParkingHoverStyle {
|
|
151
|
+
/** Цвет заливки. Не задан — цвет подтипа. */
|
|
152
|
+
color?: string | null;
|
|
153
|
+
/** Непрозрачность заливки. По умолчанию 0.55. */
|
|
154
|
+
opacity?: number;
|
|
155
|
+
/** Цвет канта. Не задан — кант подтипа. */
|
|
156
|
+
outlineColor?: string | null;
|
|
157
|
+
/** Во сколько раз толще кант. По умолчанию 2.2. */
|
|
158
|
+
outlineWidth?: number;
|
|
159
|
+
/** CSS-курсор над парковкой. По умолчанию `pointer`; `null` — не трогать. */
|
|
160
|
+
cursor?: string | null;
|
|
161
|
+
}
|
|
127
162
|
interface IMaps3DTrafficOptions {
|
|
128
163
|
raster?: boolean;
|
|
129
164
|
rasterMaxZoom?: number;
|
|
@@ -145,6 +180,11 @@ interface IMaps3DClosuresOptions {
|
|
|
145
180
|
}
|
|
146
181
|
interface IMaps3DPlacesOptions {
|
|
147
182
|
highlight?: boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Непрозрачность заливки парковок в режиме выделения. Не задана — кривая по зуму;
|
|
185
|
+
* заданная перебивает её постоянным значением на всех зумах. С 0.10.0.
|
|
186
|
+
*/
|
|
187
|
+
fillOpacity?: number;
|
|
148
188
|
paid?: boolean;
|
|
149
189
|
free?: boolean;
|
|
150
190
|
unknown?: boolean;
|
|
@@ -190,10 +230,13 @@ interface IMaps3DBuildingsController {
|
|
|
190
230
|
}
|
|
191
231
|
interface IMaps3DBuildingClickInfo {
|
|
192
232
|
id: string | number;
|
|
193
|
-
/**
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
233
|
+
/**
|
|
234
|
+
* Атрибуты объекта; `props.osm_id` — идентификатор, который не меняется.
|
|
235
|
+
* Необязательно: peerDependency допускает сборки Maps3D от 0.5.0, где поля может не быть.
|
|
236
|
+
*/
|
|
237
|
+
props?: Record<string, unknown>;
|
|
238
|
+
/** Высота здания в метрах. Необязательно по той же причине, что и `props`. */
|
|
239
|
+
height?: number;
|
|
197
240
|
/** Порядковый номер внутри сцены. Живёт до ближайшей пересборки геометрии. */
|
|
198
241
|
index?: number;
|
|
199
242
|
[key: string]: unknown;
|
|
@@ -240,6 +283,17 @@ interface IMaps3DLayer {
|
|
|
240
283
|
y: number;
|
|
241
284
|
}, tolerancePx?: number): IMaps3DRoadHit | null;
|
|
242
285
|
readonly roadsNamed?: boolean;
|
|
286
|
+
parkingAt?(point: {
|
|
287
|
+
x: number;
|
|
288
|
+
y: number;
|
|
289
|
+
}, tolerancePx?: number): IMaps3DParkingInfo | null;
|
|
290
|
+
onParkingHover?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
291
|
+
setParkingHoverStyle?(style: IMaps3DParkingHoverStyle): void;
|
|
292
|
+
setParkingHoverEnabled?(enabled: boolean): void;
|
|
293
|
+
readonly parkingHoverEnabled?: boolean;
|
|
294
|
+
hoverParking?(id: number | string | null): boolean;
|
|
295
|
+
hoveredParking?(): number | string | null;
|
|
296
|
+
onParkingClick?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
243
297
|
traffic?: boolean;
|
|
244
298
|
trafficRaster?: boolean;
|
|
245
299
|
setTraffic?(enabled: boolean): void;
|
|
@@ -564,6 +618,16 @@ declare class MahalMap {
|
|
|
564
618
|
x: number;
|
|
565
619
|
y: number;
|
|
566
620
|
}, tolerancePx?: number): IMaps3DRoadHit | null;
|
|
621
|
+
static onParkingHover(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
622
|
+
static setParkingHoverStyle(instance: MahalMap, style: IMaps3DParkingHoverStyle): void;
|
|
623
|
+
static setParkingHoverEnabled(instance: MahalMap, enabled: boolean): void;
|
|
624
|
+
static hoverParking(instance: MahalMap, id: number | string | null): boolean;
|
|
625
|
+
static hoveredParking(instance: MahalMap): string | number | null;
|
|
626
|
+
static onParkingClick(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
627
|
+
static parkingAt(instance: MahalMap, point: {
|
|
628
|
+
x: number;
|
|
629
|
+
y: number;
|
|
630
|
+
}, tolerancePx?: number): IMaps3DParkingInfo | null;
|
|
567
631
|
static onBuildingHover(instance: MahalMap, callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
|
|
568
632
|
static setHoverEnabled(instance: MahalMap, enabled: boolean): void;
|
|
569
633
|
static setHoverStyle(instance: MahalMap, style: IMaps3DHoverStyle): void;
|
|
@@ -670,6 +734,31 @@ declare class MahalMap {
|
|
|
670
734
|
}, tolerancePx?: number): IMaps3DRoadHit | null;
|
|
671
735
|
/** Есть ли в текущем стиле названия дорог. Нет — roadAt() всегда вернёт null. */
|
|
672
736
|
get roadsNamed(): boolean;
|
|
737
|
+
/**
|
|
738
|
+
* Участок под курсором либо null. Зовётся ТОЛЬКО при смене участка, не на каждое
|
|
739
|
+
* движение мыши. `null` вместо колбэка — отписаться и погасить подсветку.
|
|
740
|
+
*/
|
|
741
|
+
onParkingHover(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
742
|
+
/** Облик подсветки: color, opacity, outlineColor, outlineWidth, cursor. */
|
|
743
|
+
setParkingHoverStyle(style: IMaps3DParkingHoverStyle): void;
|
|
744
|
+
/** Вкл/выкл наведение, не теряя подписку. */
|
|
745
|
+
setParkingHoverEnabled(enabled: boolean): void;
|
|
746
|
+
/** Включено ли наведение на парковки. */
|
|
747
|
+
get parkingHoverEnabled(): boolean;
|
|
748
|
+
/** Подсветить участок программно (например, со строки списка). `null` — погасить. */
|
|
749
|
+
hoverParking(id: number | string | null): boolean;
|
|
750
|
+
/** `osm_id` подсвеченного участка или null. */
|
|
751
|
+
hoveredParking(): number | string | null;
|
|
752
|
+
/** Клик по участку: справка либо null. `null` вместо колбэка — отписаться. */
|
|
753
|
+
onParkingClick(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
754
|
+
/**
|
|
755
|
+
* Парковка под точкой холста (`e.point` события карты). Попадание — по границе полигона;
|
|
756
|
+
* допуск по умолчанию 0 — строго внутрь участка.
|
|
757
|
+
*/
|
|
758
|
+
parkingAt(point: {
|
|
759
|
+
x: number;
|
|
760
|
+
y: number;
|
|
761
|
+
}, tolerancePx?: number): IMaps3DParkingInfo | null;
|
|
673
762
|
/**
|
|
674
763
|
* Подписаться на наведение. Колбэк приходит только в момент смены дома под курсором,
|
|
675
764
|
* а не на каждое движение мыши. `null` отписывает и гасит подсветку.
|
|
@@ -1016,4 +1105,4 @@ declare namespace index {
|
|
|
1016
1105
|
export { index_checkCoordinates as checkCoordinates, index_debounce as debounce, index_geojsonPolyline as geojsonPolyline, index_geometryPolyline as geometryPolyline, index_trimValue as trimValue };
|
|
1017
1106
|
}
|
|
1018
1107
|
|
|
1019
|
-
export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, type IMaps3DHoverStyle, type IMaps3DIndoorOptions, type IMaps3DLayer, type IMaps3DLayerOptions, type IMaps3DLayerParams, type IMaps3DLayerState, type IMaps3DMapOptionsInput, type IMaps3DMapOptionsResult, type IMaps3DObjectsLightOptions, type IMaps3DPlacesOptions, type IMaps3DRoadHit, type IMaps3DSelectionStyle, type IMaps3DTrafficOptions, type IMaps3DTransformRequestOptions, type IResponse, type IRoute, type ISearchByLocationParam, type ISearchParam, type ISearchResponse, MahalMap, MahalMapDefaultMarker, type MahalMapDefaultMarkerProps, type MapEngine, type MapLanguage, type MapStyleFamily, type Maps3DBuildingDetail, type Maps3DCtor, type Maps3DLayerId, type Maps3DTerrainMode, type Maps3DThemeName, type Maps3DTransformRequest, type MeasureIcons, type MeasureLabels, type MeasureMode, type MeasurePoint, type MeasureShape, type MeasureState, type MeasureStyleOptions, MeasureTool, type MeasureToolOptions, Router, Search, SearchByLocation, SearchPoi, type Theme, index$2 as keyUtils, index$1 as measureUtils, index as utils };
|
|
1108
|
+
export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, type IMaps3DHoverStyle, type IMaps3DIndoorOptions, type IMaps3DLayer, type IMaps3DLayerOptions, type IMaps3DLayerParams, type IMaps3DLayerState, type IMaps3DMapOptionsInput, type IMaps3DMapOptionsResult, type IMaps3DObjectsLightOptions, type IMaps3DParkingHoverStyle, type IMaps3DParkingInfo, type IMaps3DPlacesOptions, type IMaps3DRoadHit, type IMaps3DSelectionStyle, type IMaps3DTrafficOptions, type IMaps3DTransformRequestOptions, type IResponse, type IRoute, type ISearchByLocationParam, type ISearchParam, type ISearchResponse, MahalMap, MahalMapDefaultMarker, type MahalMapDefaultMarkerProps, type MapEngine, type MapLanguage, type MapStyleFamily, type Maps3DBuildingDetail, type Maps3DCtor, type Maps3DLayerId, type Maps3DParkingSubtype, type Maps3DTerrainMode, type Maps3DThemeName, type Maps3DTransformRequest, type MeasureIcons, type MeasureLabels, type MeasureMode, type MeasurePoint, type MeasureShape, type MeasureState, type MeasureStyleOptions, MeasureTool, type MeasureToolOptions, Router, Search, SearchByLocation, SearchPoi, type Theme, index$2 as keyUtils, index$1 as measureUtils, index as utils };
|
package/dist/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ interface IAdditionalParamType {
|
|
|
23
23
|
/**
|
|
24
24
|
* Поверхность @grammaps/maps3d-web, описанная локально. Пакет в зависимости не ставится —
|
|
25
25
|
* он приходит снаружи, как и maplibre-gl, поэтому импортировать его типы нельзя. Здесь
|
|
26
|
-
* повторена публичная часть .d.ts версии 0.
|
|
26
|
+
* повторена публичная часть .d.ts версии 0.10.0; всё необязательное помечено `?`, чтобы
|
|
27
27
|
* более старая сборка на странице не ломала типы у потребителя.
|
|
28
28
|
*/
|
|
29
29
|
type Maps3DThemeName = "light" | "dark" | "navigator-light" | "navigator-dark" | "mobile-light" | "mobile-dark";
|
|
@@ -124,6 +124,41 @@ interface IMaps3DRoadHit {
|
|
|
124
124
|
props: Record<string, unknown>;
|
|
125
125
|
distancePx: number;
|
|
126
126
|
}
|
|
127
|
+
/** Платность парковки: по ней участок и покрашен. */
|
|
128
|
+
type Maps3DParkingSubtype = "paid" | "free" | "unknown";
|
|
129
|
+
/**
|
|
130
|
+
* Справка о площадной парковке — ровно то, что есть в тайле. Отсутствующий атрибут — `null`.
|
|
131
|
+
* Графика работы и названия здесь нет: в слое `landuse` их не бывает.
|
|
132
|
+
*/
|
|
133
|
+
interface IMaps3DParkingInfo {
|
|
134
|
+
/** `osm_id` участка — он же идентификатор для hoverParking(). */
|
|
135
|
+
id: number | string;
|
|
136
|
+
/** `unknown` значит «не указано», а не «бесплатно». */
|
|
137
|
+
subtype: Maps3DParkingSubtype;
|
|
138
|
+
/** Исходное `fee` из тайла (`yes`/`no`). */
|
|
139
|
+
fee: string | null;
|
|
140
|
+
/** Кому можно: `yes`, `private`, `customers`, `residents`, `permissive`, `no`… */
|
|
141
|
+
access: string | null;
|
|
142
|
+
/** OSM `parking=*`: `surface`, `multi-storey`, `underground`, `rooftop`… */
|
|
143
|
+
kind: string | null;
|
|
144
|
+
/** Число мест. */
|
|
145
|
+
capacity: number | null;
|
|
146
|
+
/** Все свойства фичи как есть. */
|
|
147
|
+
props: Record<string, unknown>;
|
|
148
|
+
}
|
|
149
|
+
/** Облик парковки под курсором. Не заданные цвета остаются цветами подтипа. */
|
|
150
|
+
interface IMaps3DParkingHoverStyle {
|
|
151
|
+
/** Цвет заливки. Не задан — цвет подтипа. */
|
|
152
|
+
color?: string | null;
|
|
153
|
+
/** Непрозрачность заливки. По умолчанию 0.55. */
|
|
154
|
+
opacity?: number;
|
|
155
|
+
/** Цвет канта. Не задан — кант подтипа. */
|
|
156
|
+
outlineColor?: string | null;
|
|
157
|
+
/** Во сколько раз толще кант. По умолчанию 2.2. */
|
|
158
|
+
outlineWidth?: number;
|
|
159
|
+
/** CSS-курсор над парковкой. По умолчанию `pointer`; `null` — не трогать. */
|
|
160
|
+
cursor?: string | null;
|
|
161
|
+
}
|
|
127
162
|
interface IMaps3DTrafficOptions {
|
|
128
163
|
raster?: boolean;
|
|
129
164
|
rasterMaxZoom?: number;
|
|
@@ -145,6 +180,11 @@ interface IMaps3DClosuresOptions {
|
|
|
145
180
|
}
|
|
146
181
|
interface IMaps3DPlacesOptions {
|
|
147
182
|
highlight?: boolean;
|
|
183
|
+
/**
|
|
184
|
+
* Непрозрачность заливки парковок в режиме выделения. Не задана — кривая по зуму;
|
|
185
|
+
* заданная перебивает её постоянным значением на всех зумах. С 0.10.0.
|
|
186
|
+
*/
|
|
187
|
+
fillOpacity?: number;
|
|
148
188
|
paid?: boolean;
|
|
149
189
|
free?: boolean;
|
|
150
190
|
unknown?: boolean;
|
|
@@ -190,10 +230,13 @@ interface IMaps3DBuildingsController {
|
|
|
190
230
|
}
|
|
191
231
|
interface IMaps3DBuildingClickInfo {
|
|
192
232
|
id: string | number;
|
|
193
|
-
/**
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
233
|
+
/**
|
|
234
|
+
* Атрибуты объекта; `props.osm_id` — идентификатор, который не меняется.
|
|
235
|
+
* Необязательно: peerDependency допускает сборки Maps3D от 0.5.0, где поля может не быть.
|
|
236
|
+
*/
|
|
237
|
+
props?: Record<string, unknown>;
|
|
238
|
+
/** Высота здания в метрах. Необязательно по той же причине, что и `props`. */
|
|
239
|
+
height?: number;
|
|
197
240
|
/** Порядковый номер внутри сцены. Живёт до ближайшей пересборки геометрии. */
|
|
198
241
|
index?: number;
|
|
199
242
|
[key: string]: unknown;
|
|
@@ -240,6 +283,17 @@ interface IMaps3DLayer {
|
|
|
240
283
|
y: number;
|
|
241
284
|
}, tolerancePx?: number): IMaps3DRoadHit | null;
|
|
242
285
|
readonly roadsNamed?: boolean;
|
|
286
|
+
parkingAt?(point: {
|
|
287
|
+
x: number;
|
|
288
|
+
y: number;
|
|
289
|
+
}, tolerancePx?: number): IMaps3DParkingInfo | null;
|
|
290
|
+
onParkingHover?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
291
|
+
setParkingHoverStyle?(style: IMaps3DParkingHoverStyle): void;
|
|
292
|
+
setParkingHoverEnabled?(enabled: boolean): void;
|
|
293
|
+
readonly parkingHoverEnabled?: boolean;
|
|
294
|
+
hoverParking?(id: number | string | null): boolean;
|
|
295
|
+
hoveredParking?(): number | string | null;
|
|
296
|
+
onParkingClick?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
243
297
|
traffic?: boolean;
|
|
244
298
|
trafficRaster?: boolean;
|
|
245
299
|
setTraffic?(enabled: boolean): void;
|
|
@@ -564,6 +618,16 @@ declare class MahalMap {
|
|
|
564
618
|
x: number;
|
|
565
619
|
y: number;
|
|
566
620
|
}, tolerancePx?: number): IMaps3DRoadHit | null;
|
|
621
|
+
static onParkingHover(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
622
|
+
static setParkingHoverStyle(instance: MahalMap, style: IMaps3DParkingHoverStyle): void;
|
|
623
|
+
static setParkingHoverEnabled(instance: MahalMap, enabled: boolean): void;
|
|
624
|
+
static hoverParking(instance: MahalMap, id: number | string | null): boolean;
|
|
625
|
+
static hoveredParking(instance: MahalMap): string | number | null;
|
|
626
|
+
static onParkingClick(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
627
|
+
static parkingAt(instance: MahalMap, point: {
|
|
628
|
+
x: number;
|
|
629
|
+
y: number;
|
|
630
|
+
}, tolerancePx?: number): IMaps3DParkingInfo | null;
|
|
567
631
|
static onBuildingHover(instance: MahalMap, callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
|
|
568
632
|
static setHoverEnabled(instance: MahalMap, enabled: boolean): void;
|
|
569
633
|
static setHoverStyle(instance: MahalMap, style: IMaps3DHoverStyle): void;
|
|
@@ -670,6 +734,31 @@ declare class MahalMap {
|
|
|
670
734
|
}, tolerancePx?: number): IMaps3DRoadHit | null;
|
|
671
735
|
/** Есть ли в текущем стиле названия дорог. Нет — roadAt() всегда вернёт null. */
|
|
672
736
|
get roadsNamed(): boolean;
|
|
737
|
+
/**
|
|
738
|
+
* Участок под курсором либо null. Зовётся ТОЛЬКО при смене участка, не на каждое
|
|
739
|
+
* движение мыши. `null` вместо колбэка — отписаться и погасить подсветку.
|
|
740
|
+
*/
|
|
741
|
+
onParkingHover(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
742
|
+
/** Облик подсветки: color, opacity, outlineColor, outlineWidth, cursor. */
|
|
743
|
+
setParkingHoverStyle(style: IMaps3DParkingHoverStyle): void;
|
|
744
|
+
/** Вкл/выкл наведение, не теряя подписку. */
|
|
745
|
+
setParkingHoverEnabled(enabled: boolean): void;
|
|
746
|
+
/** Включено ли наведение на парковки. */
|
|
747
|
+
get parkingHoverEnabled(): boolean;
|
|
748
|
+
/** Подсветить участок программно (например, со строки списка). `null` — погасить. */
|
|
749
|
+
hoverParking(id: number | string | null): boolean;
|
|
750
|
+
/** `osm_id` подсвеченного участка или null. */
|
|
751
|
+
hoveredParking(): number | string | null;
|
|
752
|
+
/** Клик по участку: справка либо null. `null` вместо колбэка — отписаться. */
|
|
753
|
+
onParkingClick(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
|
|
754
|
+
/**
|
|
755
|
+
* Парковка под точкой холста (`e.point` события карты). Попадание — по границе полигона;
|
|
756
|
+
* допуск по умолчанию 0 — строго внутрь участка.
|
|
757
|
+
*/
|
|
758
|
+
parkingAt(point: {
|
|
759
|
+
x: number;
|
|
760
|
+
y: number;
|
|
761
|
+
}, tolerancePx?: number): IMaps3DParkingInfo | null;
|
|
673
762
|
/**
|
|
674
763
|
* Подписаться на наведение. Колбэк приходит только в момент смены дома под курсором,
|
|
675
764
|
* а не на каждое движение мыши. `null` отписывает и гасит подсветку.
|
|
@@ -1016,4 +1105,4 @@ declare namespace index {
|
|
|
1016
1105
|
export { index_checkCoordinates as checkCoordinates, index_debounce as debounce, index_geojsonPolyline as geojsonPolyline, index_geometryPolyline as geometryPolyline, index_trimValue as trimValue };
|
|
1017
1106
|
}
|
|
1018
1107
|
|
|
1019
|
-
export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, type IMaps3DHoverStyle, type IMaps3DIndoorOptions, type IMaps3DLayer, type IMaps3DLayerOptions, type IMaps3DLayerParams, type IMaps3DLayerState, type IMaps3DMapOptionsInput, type IMaps3DMapOptionsResult, type IMaps3DObjectsLightOptions, type IMaps3DPlacesOptions, type IMaps3DRoadHit, type IMaps3DSelectionStyle, type IMaps3DTrafficOptions, type IMaps3DTransformRequestOptions, type IResponse, type IRoute, type ISearchByLocationParam, type ISearchParam, type ISearchResponse, MahalMap, MahalMapDefaultMarker, type MahalMapDefaultMarkerProps, type MapEngine, type MapLanguage, type MapStyleFamily, type Maps3DBuildingDetail, type Maps3DCtor, type Maps3DLayerId, type Maps3DTerrainMode, type Maps3DThemeName, type Maps3DTransformRequest, type MeasureIcons, type MeasureLabels, type MeasureMode, type MeasurePoint, type MeasureShape, type MeasureState, type MeasureStyleOptions, MeasureTool, type MeasureToolOptions, Router, Search, SearchByLocation, SearchPoi, type Theme, index$2 as keyUtils, index$1 as measureUtils, index as utils };
|
|
1108
|
+
export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, type IMaps3DHoverStyle, type IMaps3DIndoorOptions, type IMaps3DLayer, type IMaps3DLayerOptions, type IMaps3DLayerParams, type IMaps3DLayerState, type IMaps3DMapOptionsInput, type IMaps3DMapOptionsResult, type IMaps3DObjectsLightOptions, type IMaps3DParkingHoverStyle, type IMaps3DParkingInfo, type IMaps3DPlacesOptions, type IMaps3DRoadHit, type IMaps3DSelectionStyle, type IMaps3DTrafficOptions, type IMaps3DTransformRequestOptions, type IResponse, type IRoute, type ISearchByLocationParam, type ISearchParam, type ISearchResponse, MahalMap, MahalMapDefaultMarker, type MahalMapDefaultMarkerProps, type MapEngine, type MapLanguage, type MapStyleFamily, type Maps3DBuildingDetail, type Maps3DCtor, type Maps3DLayerId, type Maps3DParkingSubtype, type Maps3DTerrainMode, type Maps3DThemeName, type Maps3DTransformRequest, type MeasureIcons, type MeasureLabels, type MeasureMode, type MeasurePoint, type MeasureShape, type MeasureState, type MeasureStyleOptions, MeasureTool, type MeasureToolOptions, Router, Search, SearchByLocation, SearchPoi, type Theme, index$2 as keyUtils, index$1 as measureUtils, index as utils };
|