mahal_map 1.6.16 → 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 +50 -12
- package/dist/index.d.mts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/dist/mahal_map.sdk.js +1 -1
- package/package.json +3 -3
- package/dist/image-DAQQshGm.png +0 -0
- package/dist/index.html +0 -85
package/README.md
CHANGED
|
@@ -12,16 +12,24 @@ npm install mahal_map maplibre-gl
|
|
|
12
12
|
|
|
13
13
|
`maplibre-gl` является peer dependency. Его нужно установить в приложении или подключить отдельным browser script перед SDK.
|
|
14
14
|
|
|
15
|
-
Для нового 3D-движка (`engine: "3d"`) дополнительно нужен `@
|
|
15
|
+
Для нового 3D-движка (`engine: "3d"`) дополнительно нужен `@grammaps/maps3d-web`:
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm i @grammaps/maps3d-web maplibre-gl
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`three` идёт зависимостью SDK, `maplibre-gl` — peer (экземпляр карты создаёте вы через `mahal_map`).
|
|
22
|
+
|
|
23
|
+
Оффлайн-вариант: в стартере со страницы платформы лежит папка `libs/maps3d-web` со собранным `dist/` — ставится как локальная зависимость:
|
|
16
24
|
|
|
17
25
|
```sh
|
|
18
26
|
npm i ./libs/maps3d-web maplibre-gl
|
|
19
27
|
```
|
|
20
28
|
|
|
21
|
-
`package.json` запишет ссылку на локальную папку:
|
|
29
|
+
`package.json` в этом случае запишет ссылку на локальную папку:
|
|
22
30
|
|
|
23
31
|
```json
|
|
24
|
-
"@
|
|
32
|
+
"@grammaps/maps3d-web": "file:./libs/maps3d-web"
|
|
25
33
|
```
|
|
26
34
|
|
|
27
35
|
Без сборщика возьмите `lib/maps3d.global.js` из скачанного стартера (IIFE-глобал `Maps3D`, three бандлится внутрь) и подключите скриптом после `maplibre-gl`:
|
|
@@ -141,11 +149,11 @@ interface IMahalMapOptions {
|
|
|
141
149
|
| `lang` | `"tj" \| "ru"` | Язык стандартного стиля. `tj` оставляет URL только с `token`, `ru` добавляет `lang=ru`. |
|
|
142
150
|
| `center` | `[number, number]` | Центр карты в формате `[lng, lat]`. |
|
|
143
151
|
| `zoom` | `number` | Начальный zoom. |
|
|
144
|
-
| `pitch` | `number` | Начальный наклон камеры (нужен для 3D-вида).
|
|
152
|
+
| `pitch` | `number` | Начальный наклон камеры (нужен для 3D-вида). Если не задан и `enable3D` включен — авто `58` (при `pitch: 0` экструзия зданий не видна, камера смотрит строго сверху). |
|
|
145
153
|
| `bearing` | `number` | Начальный поворот камеры. |
|
|
146
154
|
| `autoAddVectorSource` | `boolean` | Использует встроенный vector style и блокирует смену стандартного стиля через `setStyle`. |
|
|
147
155
|
| `engine` | `"legacy" \| "3d"` | Переключатель движка карты. `"legacy"` (по умолчанию) — старые стили mtile.gram.tj. `"3d"` — новая платформа GramMaps (navi.gram.tj) с пресетами стиля и Maps3D. |
|
|
148
|
-
| `enable3D` | `boolean` | Подключает детальные 3D-здания (Maps3D). Работает только при `engine: "3d"`.
|
|
156
|
+
| `enable3D` | `boolean` | Подключает детальные 3D-здания (Maps3D). Работает только при `engine: "3d"`. По умолчанию `true` для `engine: "3d"` — передайте `false`, чтобы отключить. |
|
|
149
157
|
| `base` | `string` | Домен платформы GramMaps для `engine: "3d"`. По умолчанию `https://navi.gram.tj`. |
|
|
150
158
|
| `preset` | `string` | Имя пресета стиля GramMaps (напр. `"standard-night"`) для `engine: "3d"`. По умолчанию `road-urban-lab-v2`/`standard-night` в зависимости от `theme`. |
|
|
151
159
|
| `maps3d` | `object` | Доп. опции Maps3D слоя: `traffic`, `minZoom`, `lodBias`, `memoryBudget`, `maskReplaced`, `typeReplacements`. |
|
|
@@ -157,7 +165,7 @@ interface IMahalMapOptions {
|
|
|
157
165
|
```ts
|
|
158
166
|
import maplibregl from "maplibre-gl";
|
|
159
167
|
import "maplibre-gl/dist/maplibre-gl.css";
|
|
160
|
-
import { Maps3D } from "@
|
|
168
|
+
import { Maps3D } from "@grammaps/maps3d-web";
|
|
161
169
|
import { MahalMap, keyUtils } from "mahal_map";
|
|
162
170
|
|
|
163
171
|
keyUtils.saveKey("YOUR_MAP_API_KEY");
|
|
@@ -177,7 +185,7 @@ const map = MahalMap.create(
|
|
|
177
185
|
);
|
|
178
186
|
```
|
|
179
187
|
|
|
180
|
-
`Maps3D` (третий аргумент `create()`) — опционален: если не передан, SDK попробует взять его из `window.Maps3D`. `@
|
|
188
|
+
`Maps3D` (третий аргумент `create()`) — опционален: если не передан, SDK попробует взять его из `window.Maps3D`. `@grammaps/maps3d-web` — необязательный peer dependency, ставится только если используется `engine: "3d"`.
|
|
181
189
|
|
|
182
190
|
Получить слой Maps3D после создания карты:
|
|
183
191
|
|
|
@@ -187,7 +195,7 @@ const layer = map.getMaps3DLayer();
|
|
|
187
195
|
MahalMap.getMaps3DLayer(map);
|
|
188
196
|
```
|
|
189
197
|
|
|
190
|
-
`getMaps3DLayer()` возвращает реальный инстанс `Maps3D` (не обёртку) — типы `mahal_map` описывают всю его публичную поверхность, так что подключающему сервису не нужно ставить или типизировать `@
|
|
198
|
+
`getMaps3DLayer()` возвращает реальный инстанс `Maps3D` (не обёртку) — типы `mahal_map` описывают всю его публичную поверхность, так что подключающему сервису не нужно ставить или типизировать `@grammaps/maps3d-web` отдельно.
|
|
191
199
|
|
|
192
200
|
### Опции `maps3d` (расширенные)
|
|
193
201
|
|
|
@@ -206,19 +214,25 @@ MahalMap.getMaps3DLayer(map);
|
|
|
206
214
|
|
|
207
215
|
### 3D-здания
|
|
208
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
|
+
|
|
209
224
|
Тема (окна/свет) приходит из `metadata` пресета стиля и применяется автоматически при `map.setStyle()` — пересоздавать слой не нужно. Ручные сеттеры перебивают её:
|
|
210
225
|
|
|
211
226
|
```ts
|
|
212
227
|
const layer = map.getMaps3DLayer();
|
|
213
228
|
|
|
214
|
-
layer?.setBuildingsEnabled(false); // 3D-здания ⇄ штатные здания стиля
|
|
215
|
-
|
|
216
229
|
const b = layer?.buildings;
|
|
217
230
|
b?.setWindowStyle(7); // тип окна 0..9 (сетка, лента, curtain wall, ...)
|
|
218
|
-
b?.setWindowDepth(0.85);
|
|
231
|
+
b?.setWindowDepth(0.85); // глубина ниши окна 0..1 (реальная геометрия вблизи)
|
|
219
232
|
b?.setWindowColor("#6b9ed1");
|
|
220
233
|
b?.setWindowFrameColor("#f2f2f4");
|
|
221
|
-
b?.setEdgeRadius(1.2);
|
|
234
|
+
b?.setEdgeRadius(1.2); // скругление кромок, м
|
|
235
|
+
// Свет обычно НЕ задают руками — его несёт metadata стиля, сеттеры её перебивают
|
|
222
236
|
b?.setSunIntensity(3.2);
|
|
223
237
|
b?.setAmbient(0.76);
|
|
224
238
|
b?.setSky(0.91);
|
|
@@ -230,6 +244,26 @@ layer?.onBuildingClick((info) => {
|
|
|
230
244
|
});
|
|
231
245
|
```
|
|
232
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
|
+
|
|
233
267
|
### Пробки
|
|
234
268
|
|
|
235
269
|
```ts
|
|
@@ -461,6 +495,8 @@ MahalMap.setLanguage(map, "ru");
|
|
|
461
495
|
MahalMap.setCenter(map, [69.624024, 40.279687]);
|
|
462
496
|
MahalMap.setZoom(map, 14);
|
|
463
497
|
MahalMap.addMarker(map, marker);
|
|
498
|
+
MahalMap.getMaps3DLayer(map);
|
|
499
|
+
MahalMap.toggle3DBuildings(map, false);
|
|
464
500
|
MahalMap.destroy(map);
|
|
465
501
|
```
|
|
466
502
|
|
|
@@ -498,6 +534,8 @@ MahalMap.setZoom(map, 14);
|
|
|
498
534
|
| `setCenter(instance, center)` | Меняет центр карты. |
|
|
499
535
|
| `setZoom(instance, zoom)` | Меняет zoom карты. |
|
|
500
536
|
| `addMarker(instance, marker)` | Добавляет маркер. |
|
|
537
|
+
| `getMaps3DLayer(instance)` | Возвращает инстанс слоя Maps3D (только `engine: "3d"`). |
|
|
538
|
+
| `toggle3DBuildings(instance, enabled)` | Вкл/выкл детальные 3D-здания на лету (только `engine: "3d"`). |
|
|
501
539
|
| `destroy(instance)` | Полностью удаляет карту. |
|
|
502
540
|
| `loadKeyFromScriptUrl()` | Читает `apikey` из URL SDK скрипта. |
|
|
503
541
|
| `loadLanguageFromScriptUrl()` | Читает `lang` из URL SDK скрипта. |
|
package/dist/index.d.mts
CHANGED
|
@@ -248,6 +248,7 @@ declare class MahalMap {
|
|
|
248
248
|
static getMap(instance: MahalMap): Map;
|
|
249
249
|
static setStyle(instance: MahalMap, theme: Theme): void;
|
|
250
250
|
static getMaps3DLayer(instance: MahalMap): IMaps3DLayer | undefined;
|
|
251
|
+
static toggle3DBuildings(instance: MahalMap, enabled: boolean): void;
|
|
251
252
|
static setLanguage(instance: MahalMap, lang: MapLanguage): void;
|
|
252
253
|
static setCenter(instance: MahalMap, center: [number, number]): void;
|
|
253
254
|
static setZoom(instance: MahalMap, zoom: number): void;
|
|
@@ -259,6 +260,14 @@ declare class MahalMap {
|
|
|
259
260
|
setStyle(theme: Theme): void;
|
|
260
261
|
setLanguage(lang: MapLanguage): void;
|
|
261
262
|
getMaps3DLayer(): IMaps3DLayer | undefined;
|
|
263
|
+
/** Вкл/выкл детальные 3D-здания (Maps3D). Работает только для engine: "3d". */
|
|
264
|
+
toggle3DBuildings(enabled: boolean): void;
|
|
265
|
+
/**
|
|
266
|
+
* Прячет/показывает нативные здания стиля GramMaps ("building-3d" и любые fill-extrusion /
|
|
267
|
+
* fill+source-layer=building), не задевая слои самого Maps3D. Нужно, иначе плоский слой стиля
|
|
268
|
+
* рисуется поверх процедурных 3D-зданий и визуально их перекрывает.
|
|
269
|
+
*/
|
|
270
|
+
private setNativeBuildingsVisible;
|
|
262
271
|
setCenter(center: [number, number]): void;
|
|
263
272
|
setZoom(zoom: number): void;
|
|
264
273
|
destroy(): void;
|
package/dist/index.d.ts
CHANGED
|
@@ -248,6 +248,7 @@ declare class MahalMap {
|
|
|
248
248
|
static getMap(instance: MahalMap): Map;
|
|
249
249
|
static setStyle(instance: MahalMap, theme: Theme): void;
|
|
250
250
|
static getMaps3DLayer(instance: MahalMap): IMaps3DLayer | undefined;
|
|
251
|
+
static toggle3DBuildings(instance: MahalMap, enabled: boolean): void;
|
|
251
252
|
static setLanguage(instance: MahalMap, lang: MapLanguage): void;
|
|
252
253
|
static setCenter(instance: MahalMap, center: [number, number]): void;
|
|
253
254
|
static setZoom(instance: MahalMap, zoom: number): void;
|
|
@@ -259,6 +260,14 @@ declare class MahalMap {
|
|
|
259
260
|
setStyle(theme: Theme): void;
|
|
260
261
|
setLanguage(lang: MapLanguage): void;
|
|
261
262
|
getMaps3DLayer(): IMaps3DLayer | undefined;
|
|
263
|
+
/** Вкл/выкл детальные 3D-здания (Maps3D). Работает только для engine: "3d". */
|
|
264
|
+
toggle3DBuildings(enabled: boolean): void;
|
|
265
|
+
/**
|
|
266
|
+
* Прячет/показывает нативные здания стиля GramMaps ("building-3d" и любые fill-extrusion /
|
|
267
|
+
* fill+source-layer=building), не задевая слои самого Maps3D. Нужно, иначе плоский слой стиля
|
|
268
|
+
* рисуется поверх процедурных 3D-зданий и визуально их перекрывает.
|
|
269
|
+
*/
|
|
270
|
+
private setNativeBuildingsVisible;
|
|
262
271
|
setCenter(center: [number, number]): void;
|
|
263
272
|
setZoom(zoom: number): void;
|
|
264
273
|
destroy(): void;
|