mahal_map 2.0.3 → 2.2.0

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/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.7.3; всё необязательное помечено `?`, чтобы
26
+ * повторена публичная часть .d.ts версии 0.10.0; всё необязательное помечено `?`, чтобы
27
27
  * более старая сборка на странице не ломала типы у потребителя.
28
28
  */
29
29
  type Maps3DThemeName = "light" | "dark" | "navigator-light" | "navigator-dark" | "mobile-light" | "mobile-dark";
@@ -91,6 +91,12 @@ interface IMaps3DLayerState {
91
91
  available: boolean;
92
92
  /** Что нарисовано прямо сейчас. Именно это поле показывает, включён слой на деле или нет. */
93
93
  active: boolean;
94
+ /**
95
+ * Факт со стороны карты: слой есть в стиле и не погашен. Появилось в 0.8.0.
96
+ * `active !== rendered` — расхождение внутреннего признака SDK с картой.
97
+ * У слоя, который не умеет ответить фактом, повторяет `active`; у сборок до 0.8.0 — undefined.
98
+ */
99
+ rendered?: boolean;
94
100
  /** Параметры слоя: у зданий — detail, у этажей — level, у рельефа — mode. */
95
101
  params: Record<string, unknown>;
96
102
  }
@@ -101,6 +107,15 @@ interface IMaps3DSelectionStyle {
101
107
  durationMs?: number;
102
108
  easing?: "ease-out" | "linear";
103
109
  }
110
+ /**
111
+ * Облик наведения. Появился в 0.8.0: до него подсветить дом под курсором можно было,
112
+ * только заняв единственный слот выделения. Теперь слот свой, и выбор всегда главнее —
113
+ * на выбранном доме наведение не рисуется.
114
+ */
115
+ interface IMaps3DHoverStyle extends IMaps3DSelectionStyle {
116
+ /** CSS-курсор над зданием. По умолчанию "pointer"; `null` — не трогать курсор вовсе. */
117
+ cursor?: string | null;
118
+ }
104
119
  interface IMaps3DRoadHit {
105
120
  name: string;
106
121
  nameRu?: string;
@@ -109,6 +124,41 @@ interface IMaps3DRoadHit {
109
124
  props: Record<string, unknown>;
110
125
  distancePx: number;
111
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
+ }
112
162
  interface IMaps3DTrafficOptions {
113
163
  raster?: boolean;
114
164
  rasterMaxZoom?: number;
@@ -130,6 +180,11 @@ interface IMaps3DClosuresOptions {
130
180
  }
131
181
  interface IMaps3DPlacesOptions {
132
182
  highlight?: boolean;
183
+ /**
184
+ * Непрозрачность заливки парковок в режиме выделения. Не задана — кривая по зуму;
185
+ * заданная перебивает её постоянным значением на всех зумах. С 0.10.0.
186
+ */
187
+ fillOpacity?: number;
133
188
  paid?: boolean;
134
189
  free?: boolean;
135
190
  unknown?: boolean;
@@ -213,12 +268,29 @@ interface IMaps3DLayer {
213
268
  clearSelection?(): void;
214
269
  selectedBuilding?(): number | string | null;
215
270
  setSelectionStyle?(style: IMaps3DSelectionStyle): void;
271
+ onBuildingHover?(callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
272
+ setHoverEnabled?(enabled: boolean): void;
273
+ readonly hoverEnabled?: boolean;
274
+ setHoverStyle?(style: IMaps3DHoverStyle): void;
275
+ hoverBuilding?(id: number | string | null): boolean;
276
+ hoveredBuilding?(): number | string | null;
216
277
  onRoadClick?(callback: (hit: IMaps3DRoadHit | null) => void): void;
217
278
  roadAt?(point: {
218
279
  x: number;
219
280
  y: number;
220
281
  }, tolerancePx?: number): IMaps3DRoadHit | null;
221
282
  readonly roadsNamed?: boolean;
283
+ parkingAt?(point: {
284
+ x: number;
285
+ y: number;
286
+ }, tolerancePx?: number): IMaps3DParkingInfo | null;
287
+ onParkingHover?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
288
+ setParkingHoverStyle?(style: IMaps3DParkingHoverStyle): void;
289
+ setParkingHoverEnabled?(enabled: boolean): void;
290
+ readonly parkingHoverEnabled?: boolean;
291
+ hoverParking?(id: number | string | null): boolean;
292
+ hoveredParking?(): number | string | null;
293
+ onParkingClick?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
222
294
  traffic?: boolean;
223
295
  trafficRaster?: boolean;
224
296
  setTraffic?(enabled: boolean): void;
@@ -468,6 +540,9 @@ declare class MahalMap {
468
540
  private pendingRoadClick?;
469
541
  private pendingSelectionStyle?;
470
542
  private pendingLayerSubscribers;
543
+ private pendingBuildingHover?;
544
+ private pendingHoverStyle?;
545
+ private pendingHoverEnabled?;
471
546
  private constructor();
472
547
  private static getInstanceKey;
473
548
  private static normalizeLanguage;
@@ -540,6 +615,21 @@ declare class MahalMap {
540
615
  x: number;
541
616
  y: number;
542
617
  }, tolerancePx?: number): IMaps3DRoadHit | null;
618
+ static onParkingHover(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
619
+ static setParkingHoverStyle(instance: MahalMap, style: IMaps3DParkingHoverStyle): void;
620
+ static setParkingHoverEnabled(instance: MahalMap, enabled: boolean): void;
621
+ static hoverParking(instance: MahalMap, id: number | string | null): boolean;
622
+ static hoveredParking(instance: MahalMap): string | number | null;
623
+ static onParkingClick(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
624
+ static parkingAt(instance: MahalMap, point: {
625
+ x: number;
626
+ y: number;
627
+ }, tolerancePx?: number): IMaps3DParkingInfo | null;
628
+ static onBuildingHover(instance: MahalMap, callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
629
+ static setHoverEnabled(instance: MahalMap, enabled: boolean): void;
630
+ static setHoverStyle(instance: MahalMap, style: IMaps3DHoverStyle): void;
631
+ static hoverBuilding(instance: MahalMap, id: number | string | null): boolean;
632
+ static hoveredBuilding(instance: MahalMap): string | number | null;
543
633
  static setLanguage(instance: MahalMap, lang: MapLanguage): void;
544
634
  static setCenter(instance: MahalMap, center: [number, number]): void;
545
635
  static setZoom(instance: MahalMap, zoom: number): void;
@@ -641,6 +731,59 @@ declare class MahalMap {
641
731
  }, tolerancePx?: number): IMaps3DRoadHit | null;
642
732
  /** Есть ли в текущем стиле названия дорог. Нет — roadAt() всегда вернёт null. */
643
733
  get roadsNamed(): boolean;
734
+ /**
735
+ * Участок под курсором либо null. Зовётся ТОЛЬКО при смене участка, не на каждое
736
+ * движение мыши. `null` вместо колбэка — отписаться и погасить подсветку.
737
+ */
738
+ onParkingHover(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
739
+ /** Облик подсветки: color, opacity, outlineColor, outlineWidth, cursor. */
740
+ setParkingHoverStyle(style: IMaps3DParkingHoverStyle): void;
741
+ /** Вкл/выкл наведение, не теряя подписку. */
742
+ setParkingHoverEnabled(enabled: boolean): void;
743
+ /** Включено ли наведение на парковки. */
744
+ get parkingHoverEnabled(): boolean;
745
+ /** Подсветить участок программно (например, со строки списка). `null` — погасить. */
746
+ hoverParking(id: number | string | null): boolean;
747
+ /** `osm_id` подсвеченного участка или null. */
748
+ hoveredParking(): number | string | null;
749
+ /** Клик по участку: справка либо null. `null` вместо колбэка — отписаться. */
750
+ onParkingClick(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
751
+ /**
752
+ * Парковка под точкой холста (`e.point` события карты). Попадание — по границе полигона;
753
+ * допуск по умолчанию 0 — строго внутрь участка.
754
+ */
755
+ parkingAt(point: {
756
+ x: number;
757
+ y: number;
758
+ }, tolerancePx?: number): IMaps3DParkingInfo | null;
759
+ /**
760
+ * Подписаться на наведение. Колбэк приходит только в момент смены дома под курсором,
761
+ * а не на каждое движение мыши. `null` отписывает и гасит подсветку.
762
+ *
763
+ * Слежение за мышью включается самой подпиской: без неё SDK курсор не трогает и
764
+ * разбор сцены не делает.
765
+ */
766
+ onBuildingHover(callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
767
+ /**
768
+ * Включить/выключить наведение, не трогая подписку. Нужно там, где подсветка мешает:
769
+ * режим рисования, открытая карточка объекта, тач-устройство без курсора.
770
+ */
771
+ setHoverEnabled(enabled: boolean): void;
772
+ /** Включено ли наведение прямо сейчас. */
773
+ get hoverEnabled(): boolean;
774
+ /** Облик наведения: цвет, плотность, свечение, длительность и CSS-курсор. */
775
+ setHoverStyle(style: IMaps3DHoverStyle): void;
776
+ /**
777
+ * Навести на здание программно — например, когда курсор стоит на строке списка.
778
+ * Идентификатор тот же, что у selectBuilding. `null` снимает наведение.
779
+ *
780
+ * Следующее движение мыши по карте перебивает программное наведение.
781
+ *
782
+ * @returns `false`, если такого дома сейчас на карте нет.
783
+ */
784
+ hoverBuilding(id: number | string | null): boolean;
785
+ /** Идентификатор дома под наведением или `null`. */
786
+ hoveredBuilding(): number | string | null;
644
787
  /**
645
788
  * Создаёт слой Maps3D. `buildings` не форсируем в `true`: с 0.7.x видимостью объёма
646
789
  * заведует реестр слоёв, а опции облика зданий приходят из options.maps3d как есть.
@@ -959,4 +1102,4 @@ declare namespace index {
959
1102
  export { index_checkCoordinates as checkCoordinates, index_debounce as debounce, index_geojsonPolyline as geojsonPolyline, index_geometryPolyline as geometryPolyline, index_trimValue as trimValue };
960
1103
  }
961
1104
 
962
- export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, 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 };
1105
+ 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.7.3; всё необязательное помечено `?`, чтобы
26
+ * повторена публичная часть .d.ts версии 0.10.0; всё необязательное помечено `?`, чтобы
27
27
  * более старая сборка на странице не ломала типы у потребителя.
28
28
  */
29
29
  type Maps3DThemeName = "light" | "dark" | "navigator-light" | "navigator-dark" | "mobile-light" | "mobile-dark";
@@ -91,6 +91,12 @@ interface IMaps3DLayerState {
91
91
  available: boolean;
92
92
  /** Что нарисовано прямо сейчас. Именно это поле показывает, включён слой на деле или нет. */
93
93
  active: boolean;
94
+ /**
95
+ * Факт со стороны карты: слой есть в стиле и не погашен. Появилось в 0.8.0.
96
+ * `active !== rendered` — расхождение внутреннего признака SDK с картой.
97
+ * У слоя, который не умеет ответить фактом, повторяет `active`; у сборок до 0.8.0 — undefined.
98
+ */
99
+ rendered?: boolean;
94
100
  /** Параметры слоя: у зданий — detail, у этажей — level, у рельефа — mode. */
95
101
  params: Record<string, unknown>;
96
102
  }
@@ -101,6 +107,15 @@ interface IMaps3DSelectionStyle {
101
107
  durationMs?: number;
102
108
  easing?: "ease-out" | "linear";
103
109
  }
110
+ /**
111
+ * Облик наведения. Появился в 0.8.0: до него подсветить дом под курсором можно было,
112
+ * только заняв единственный слот выделения. Теперь слот свой, и выбор всегда главнее —
113
+ * на выбранном доме наведение не рисуется.
114
+ */
115
+ interface IMaps3DHoverStyle extends IMaps3DSelectionStyle {
116
+ /** CSS-курсор над зданием. По умолчанию "pointer"; `null` — не трогать курсор вовсе. */
117
+ cursor?: string | null;
118
+ }
104
119
  interface IMaps3DRoadHit {
105
120
  name: string;
106
121
  nameRu?: string;
@@ -109,6 +124,41 @@ interface IMaps3DRoadHit {
109
124
  props: Record<string, unknown>;
110
125
  distancePx: number;
111
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
+ }
112
162
  interface IMaps3DTrafficOptions {
113
163
  raster?: boolean;
114
164
  rasterMaxZoom?: number;
@@ -130,6 +180,11 @@ interface IMaps3DClosuresOptions {
130
180
  }
131
181
  interface IMaps3DPlacesOptions {
132
182
  highlight?: boolean;
183
+ /**
184
+ * Непрозрачность заливки парковок в режиме выделения. Не задана — кривая по зуму;
185
+ * заданная перебивает её постоянным значением на всех зумах. С 0.10.0.
186
+ */
187
+ fillOpacity?: number;
133
188
  paid?: boolean;
134
189
  free?: boolean;
135
190
  unknown?: boolean;
@@ -213,12 +268,29 @@ interface IMaps3DLayer {
213
268
  clearSelection?(): void;
214
269
  selectedBuilding?(): number | string | null;
215
270
  setSelectionStyle?(style: IMaps3DSelectionStyle): void;
271
+ onBuildingHover?(callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
272
+ setHoverEnabled?(enabled: boolean): void;
273
+ readonly hoverEnabled?: boolean;
274
+ setHoverStyle?(style: IMaps3DHoverStyle): void;
275
+ hoverBuilding?(id: number | string | null): boolean;
276
+ hoveredBuilding?(): number | string | null;
216
277
  onRoadClick?(callback: (hit: IMaps3DRoadHit | null) => void): void;
217
278
  roadAt?(point: {
218
279
  x: number;
219
280
  y: number;
220
281
  }, tolerancePx?: number): IMaps3DRoadHit | null;
221
282
  readonly roadsNamed?: boolean;
283
+ parkingAt?(point: {
284
+ x: number;
285
+ y: number;
286
+ }, tolerancePx?: number): IMaps3DParkingInfo | null;
287
+ onParkingHover?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
288
+ setParkingHoverStyle?(style: IMaps3DParkingHoverStyle): void;
289
+ setParkingHoverEnabled?(enabled: boolean): void;
290
+ readonly parkingHoverEnabled?: boolean;
291
+ hoverParking?(id: number | string | null): boolean;
292
+ hoveredParking?(): number | string | null;
293
+ onParkingClick?(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
222
294
  traffic?: boolean;
223
295
  trafficRaster?: boolean;
224
296
  setTraffic?(enabled: boolean): void;
@@ -468,6 +540,9 @@ declare class MahalMap {
468
540
  private pendingRoadClick?;
469
541
  private pendingSelectionStyle?;
470
542
  private pendingLayerSubscribers;
543
+ private pendingBuildingHover?;
544
+ private pendingHoverStyle?;
545
+ private pendingHoverEnabled?;
471
546
  private constructor();
472
547
  private static getInstanceKey;
473
548
  private static normalizeLanguage;
@@ -540,6 +615,21 @@ declare class MahalMap {
540
615
  x: number;
541
616
  y: number;
542
617
  }, tolerancePx?: number): IMaps3DRoadHit | null;
618
+ static onParkingHover(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
619
+ static setParkingHoverStyle(instance: MahalMap, style: IMaps3DParkingHoverStyle): void;
620
+ static setParkingHoverEnabled(instance: MahalMap, enabled: boolean): void;
621
+ static hoverParking(instance: MahalMap, id: number | string | null): boolean;
622
+ static hoveredParking(instance: MahalMap): string | number | null;
623
+ static onParkingClick(instance: MahalMap, callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
624
+ static parkingAt(instance: MahalMap, point: {
625
+ x: number;
626
+ y: number;
627
+ }, tolerancePx?: number): IMaps3DParkingInfo | null;
628
+ static onBuildingHover(instance: MahalMap, callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
629
+ static setHoverEnabled(instance: MahalMap, enabled: boolean): void;
630
+ static setHoverStyle(instance: MahalMap, style: IMaps3DHoverStyle): void;
631
+ static hoverBuilding(instance: MahalMap, id: number | string | null): boolean;
632
+ static hoveredBuilding(instance: MahalMap): string | number | null;
543
633
  static setLanguage(instance: MahalMap, lang: MapLanguage): void;
544
634
  static setCenter(instance: MahalMap, center: [number, number]): void;
545
635
  static setZoom(instance: MahalMap, zoom: number): void;
@@ -641,6 +731,59 @@ declare class MahalMap {
641
731
  }, tolerancePx?: number): IMaps3DRoadHit | null;
642
732
  /** Есть ли в текущем стиле названия дорог. Нет — roadAt() всегда вернёт null. */
643
733
  get roadsNamed(): boolean;
734
+ /**
735
+ * Участок под курсором либо null. Зовётся ТОЛЬКО при смене участка, не на каждое
736
+ * движение мыши. `null` вместо колбэка — отписаться и погасить подсветку.
737
+ */
738
+ onParkingHover(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
739
+ /** Облик подсветки: color, opacity, outlineColor, outlineWidth, cursor. */
740
+ setParkingHoverStyle(style: IMaps3DParkingHoverStyle): void;
741
+ /** Вкл/выкл наведение, не теряя подписку. */
742
+ setParkingHoverEnabled(enabled: boolean): void;
743
+ /** Включено ли наведение на парковки. */
744
+ get parkingHoverEnabled(): boolean;
745
+ /** Подсветить участок программно (например, со строки списка). `null` — погасить. */
746
+ hoverParking(id: number | string | null): boolean;
747
+ /** `osm_id` подсвеченного участка или null. */
748
+ hoveredParking(): number | string | null;
749
+ /** Клик по участку: справка либо null. `null` вместо колбэка — отписаться. */
750
+ onParkingClick(callback: ((info: IMaps3DParkingInfo | null) => void) | null): void;
751
+ /**
752
+ * Парковка под точкой холста (`e.point` события карты). Попадание — по границе полигона;
753
+ * допуск по умолчанию 0 — строго внутрь участка.
754
+ */
755
+ parkingAt(point: {
756
+ x: number;
757
+ y: number;
758
+ }, tolerancePx?: number): IMaps3DParkingInfo | null;
759
+ /**
760
+ * Подписаться на наведение. Колбэк приходит только в момент смены дома под курсором,
761
+ * а не на каждое движение мыши. `null` отписывает и гасит подсветку.
762
+ *
763
+ * Слежение за мышью включается самой подпиской: без неё SDK курсор не трогает и
764
+ * разбор сцены не делает.
765
+ */
766
+ onBuildingHover(callback: ((info: IMaps3DBuildingClickInfo | null) => void) | null): void;
767
+ /**
768
+ * Включить/выключить наведение, не трогая подписку. Нужно там, где подсветка мешает:
769
+ * режим рисования, открытая карточка объекта, тач-устройство без курсора.
770
+ */
771
+ setHoverEnabled(enabled: boolean): void;
772
+ /** Включено ли наведение прямо сейчас. */
773
+ get hoverEnabled(): boolean;
774
+ /** Облик наведения: цвет, плотность, свечение, длительность и CSS-курсор. */
775
+ setHoverStyle(style: IMaps3DHoverStyle): void;
776
+ /**
777
+ * Навести на здание программно — например, когда курсор стоит на строке списка.
778
+ * Идентификатор тот же, что у selectBuilding. `null` снимает наведение.
779
+ *
780
+ * Следующее движение мыши по карте перебивает программное наведение.
781
+ *
782
+ * @returns `false`, если такого дома сейчас на карте нет.
783
+ */
784
+ hoverBuilding(id: number | string | null): boolean;
785
+ /** Идентификатор дома под наведением или `null`. */
786
+ hoveredBuilding(): number | string | null;
644
787
  /**
645
788
  * Создаёт слой Maps3D. `buildings` не форсируем в `true`: с 0.7.x видимостью объёма
646
789
  * заведует реестр слоёв, а опции облика зданий приходят из options.maps3d как есть.
@@ -959,4 +1102,4 @@ declare namespace index {
959
1102
  export { index_checkCoordinates as checkCoordinates, index_debounce as debounce, index_geojsonPolyline as geojsonPolyline, index_geometryPolyline as geometryPolyline, index_trimValue as trimValue };
960
1103
  }
961
1104
 
962
- export { CheckJSApi, type IAdditionalParamType, type ICheckJSApiParam, type ICheckJSApiResponse, type IMahalMapOptions, type IMapMarker, type IMaps3DBuildingClickInfo, type IMaps3DBuildingsController, type IMaps3DBuildingsOptions, type IMaps3DClosuresOptions, type IMaps3DDiagnostics, 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 };
1105
+ 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 };