mahal_map 1.6.17 → 1.6.18

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 CHANGED
@@ -149,11 +149,11 @@ interface IMahalMapOptions {
149
149
  | `lang` | `"tj" \| "ru"` | Язык стандартного стиля. `tj` оставляет URL только с `token`, `ru` добавляет `lang=ru`. |
150
150
  | `center` | `[number, number]` | Центр карты в формате `[lng, lat]`. |
151
151
  | `zoom` | `number` | Начальный zoom. |
152
- | `pitch` | `number` | Начальный наклон камеры (нужен для 3D-вида). |
152
+ | `pitch` | `number` | Начальный наклон камеры (нужен для 3D-вида). Если не задан и `enable3D` включен — авто `58` (при `pitch: 0` экструзия зданий не видна, камера смотрит строго сверху). |
153
153
  | `bearing` | `number` | Начальный поворот камеры. |
154
154
  | `autoAddVectorSource` | `boolean` | Использует встроенный vector style и блокирует смену стандартного стиля через `setStyle`. |
155
155
  | `engine` | `"legacy" \| "3d"` | Переключатель движка карты. `"legacy"` (по умолчанию) — старые стили mtile.gram.tj. `"3d"` — новая платформа GramMaps (navi.gram.tj) с пресетами стиля и Maps3D. |
156
- | `enable3D` | `boolean` | Подключает детальные 3D-здания (Maps3D). Работает только при `engine: "3d"`. |
156
+ | `enable3D` | `boolean` | Подключает детальные 3D-здания (Maps3D). Работает только при `engine: "3d"`. По умолчанию `true` для `engine: "3d"` — передайте `false`, чтобы отключить. |
157
157
  | `base` | `string` | Домен платформы GramMaps для `engine: "3d"`. По умолчанию `https://navi.gram.tj`. |
158
158
  | `preset` | `string` | Имя пресета стиля GramMaps (напр. `"standard-night"`) для `engine: "3d"`. По умолчанию `road-urban-lab-v2`/`standard-night` в зависимости от `theme`. |
159
159
  | `maps3d` | `object` | Доп. опции Maps3D слоя: `traffic`, `minZoom`, `lodBias`, `memoryBudget`, `maskReplaced`, `typeReplacements`. |
@@ -214,19 +214,25 @@ MahalMap.getMaps3DLayer(map);
214
214
 
215
215
  ### 3D-здания
216
216
 
217
+ `Maps3D` рисует процедурные 3D-здания (three.js) вместо плоской `fill-extrusion` стиля: фаска кромок, вертикальный градиент и базовый цвет берутся из стиля, окна — из `metadata` пресета. При `engine: "3d"` слой создаётся и `attach`-ится к карте автоматически (`enable3D` по умолчанию `true`) — вручную поднимать `new Maps3D(...)` не нужно, только если требуется отдельный кастомный инстанс:
218
+
219
+ ```ts
220
+ const layer = new Maps3D({ apiKey, base, buildings: true });
221
+ await layer.attach(map); // attach асинхронный, дожидается load карты сам
222
+ ```
223
+
217
224
  Тема (окна/свет) приходит из `metadata` пресета стиля и применяется автоматически при `map.setStyle()` — пересоздавать слой не нужно. Ручные сеттеры перебивают её:
218
225
 
219
226
  ```ts
220
227
  const layer = map.getMaps3DLayer();
221
228
 
222
- layer?.setBuildingsEnabled(false); // 3D-здания ⇄ штатные здания стиля
223
-
224
229
  const b = layer?.buildings;
225
230
  b?.setWindowStyle(7); // тип окна 0..9 (сетка, лента, curtain wall, ...)
226
- b?.setWindowDepth(0.85);
231
+ b?.setWindowDepth(0.85); // глубина ниши окна 0..1 (реальная геометрия вблизи)
227
232
  b?.setWindowColor("#6b9ed1");
228
233
  b?.setWindowFrameColor("#f2f2f4");
229
- b?.setEdgeRadius(1.2);
234
+ b?.setEdgeRadius(1.2); // скругление кромок, м
235
+ // Свет обычно НЕ задают руками — его несёт metadata стиля, сеттеры её перебивают
230
236
  b?.setSunIntensity(3.2);
231
237
  b?.setAmbient(0.76);
232
238
  b?.setSky(0.91);
@@ -238,6 +244,26 @@ layer?.onBuildingClick((info) => {
238
244
  });
239
245
  ```
240
246
 
247
+ #### Вкл/выкл 3D-здания на лету
248
+
249
+ Переключение 3D-здания ⇄ штатные здания стиля, без пересоздания карты:
250
+
251
+ ```ts
252
+ layer?.setBuildingsEnabled(false); // напрямую через слой
253
+ ```
254
+
255
+ Либо через обёртку `MahalMap` — она же умеет пересоздать слой, если его не было (`enable3D: false` при создании):
256
+
257
+ ```ts
258
+ const map = MahalMap.getInstance("map");
259
+
260
+ map.toggle3DBuildings(false); // выкл
261
+ map.toggle3DBuildings(true); // вкл обратно
262
+
263
+ // статик-версия и SDK-фасад (mahal_map/sdk) работают так же
264
+ MahalMap.toggle3DBuildings(map, false);
265
+ ```
266
+
241
267
  ### Пробки
242
268
 
243
269
  ```ts
@@ -469,6 +495,8 @@ MahalMap.setLanguage(map, "ru");
469
495
  MahalMap.setCenter(map, [69.624024, 40.279687]);
470
496
  MahalMap.setZoom(map, 14);
471
497
  MahalMap.addMarker(map, marker);
498
+ MahalMap.getMaps3DLayer(map);
499
+ MahalMap.toggle3DBuildings(map, false);
472
500
  MahalMap.destroy(map);
473
501
  ```
474
502
 
@@ -506,6 +534,8 @@ MahalMap.setZoom(map, 14);
506
534
  | `setCenter(instance, center)` | Меняет центр карты. |
507
535
  | `setZoom(instance, zoom)` | Меняет zoom карты. |
508
536
  | `addMarker(instance, marker)` | Добавляет маркер. |
537
+ | `getMaps3DLayer(instance)` | Возвращает инстанс слоя Maps3D (только `engine: "3d"`). |
538
+ | `toggle3DBuildings(instance, enabled)` | Вкл/выкл детальные 3D-здания на лету (только `engine: "3d"`). |
509
539
  | `destroy(instance)` | Полностью удаляет карту. |
510
540
  | `loadKeyFromScriptUrl()` | Читает `apikey` из URL SDK скрипта. |
511
541
  | `loadLanguageFromScriptUrl()` | Читает `lang` из URL SDK скрипта. |
package/dist/index.d.mts CHANGED
@@ -262,6 +262,12 @@ declare class MahalMap {
262
262
  getMaps3DLayer(): IMaps3DLayer | undefined;
263
263
  /** Вкл/выкл детальные 3D-здания (Maps3D). Работает только для engine: "3d". */
264
264
  toggle3DBuildings(enabled: boolean): void;
265
+ /**
266
+ * Прячет/показывает нативные здания стиля GramMaps ("building-3d" и любые fill-extrusion /
267
+ * fill+source-layer=building), не задевая слои самого Maps3D. Нужно, иначе плоский слой стиля
268
+ * рисуется поверх процедурных 3D-зданий и визуально их перекрывает.
269
+ */
270
+ private setNativeBuildingsVisible;
265
271
  setCenter(center: [number, number]): void;
266
272
  setZoom(zoom: number): void;
267
273
  destroy(): void;
package/dist/index.d.ts CHANGED
@@ -262,6 +262,12 @@ declare class MahalMap {
262
262
  getMaps3DLayer(): IMaps3DLayer | undefined;
263
263
  /** Вкл/выкл детальные 3D-здания (Maps3D). Работает только для engine: "3d". */
264
264
  toggle3DBuildings(enabled: boolean): void;
265
+ /**
266
+ * Прячет/показывает нативные здания стиля GramMaps ("building-3d" и любые fill-extrusion /
267
+ * fill+source-layer=building), не задевая слои самого Maps3D. Нужно, иначе плоский слой стиля
268
+ * рисуется поверх процедурных 3D-зданий и визуально их перекрывает.
269
+ */
270
+ private setNativeBuildingsVisible;
265
271
  setCenter(center: [number, number]): void;
266
272
  setZoom(zoom: number): void;
267
273
  destroy(): void;