osmgl 0.3.0 → 0.5.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/README.md +8 -3
- package/dist/osmgl.cjs +266 -94
- package/dist/osmgl.cjs.map +1 -1
- package/dist/osmgl.d.cts +68 -7
- package/dist/osmgl.d.ts +68 -7
- package/dist/osmgl.global.js +267 -95
- package/dist/osmgl.js +266 -94
- package/dist/osmgl.js.map +1 -1
- package/package.json +1 -1
package/dist/osmgl.d.cts
CHANGED
|
@@ -618,6 +618,13 @@ declare class Context {
|
|
|
618
618
|
constructor(gl: WebGL2RenderingContext);
|
|
619
619
|
useProgram(program: WebGLProgram | null): boolean;
|
|
620
620
|
bindVAO(vao: WebGLVertexArrayObject | null): void;
|
|
621
|
+
/**
|
|
622
|
+
* Куда уходит «экранный» кадр. По умолчанию `null` — канва. Диагностика
|
|
623
|
+
* подменяет его на свой буфер: проходы внутри рендера (тени, пикинг)
|
|
624
|
+
* возвращаются с bindFramebuffer(null), и без этой подмены весь кадр после
|
|
625
|
+
* первого же такого прохода уходил бы мимо буфера.
|
|
626
|
+
*/
|
|
627
|
+
screen: WebGLFramebuffer | null;
|
|
621
628
|
bindFramebuffer(fb: WebGLFramebuffer | null): void;
|
|
622
629
|
bindTexture(unit: number, texture: WebGLTexture | null, target?: number): void;
|
|
623
630
|
viewport(x: number, y: number, w: number, h: number): void;
|
|
@@ -744,14 +751,19 @@ interface LayerBase {
|
|
|
744
751
|
*/
|
|
745
752
|
splitBy?: string;
|
|
746
753
|
/**
|
|
747
|
-
*
|
|
754
|
+
* Накладка: слой рисуется вне общей очереди, без теста глубины. Значение говорит, ГДЕ.
|
|
748
755
|
*
|
|
749
|
-
*
|
|
750
|
-
* закрыла бы его крыша. План этажа и есть накладка —
|
|
751
|
-
* покрывает он ровно контур своего здания, поэтому соседние дома остаются
|
|
756
|
+
* `'volume'` (и `true` — прежнее написание) — поверх объёма. Нужно планам этажей: они лежат
|
|
757
|
+
* внутри здания, и в обычном порядке их закрыла бы его крыша. План этажа и есть накладка —
|
|
758
|
+
* «мы внутри», — а покрывает он ровно контур своего здания, поэтому соседние дома остаются
|
|
752
759
|
* видимыми.
|
|
760
|
+
*
|
|
761
|
+
* `'roads'` — сразу после дорог и ДО объёма. Это место разметки: зебры, перекрытия, всё, что
|
|
762
|
+
* лежит на асфальте. Дороги рисуются позже поверхностей, поэтому в общую очередь такая
|
|
763
|
+
* разметка не встаёт, но и поверх объёма ей делать нечего — зебра, висящая на стене дома,
|
|
764
|
+
* первой бросается в глаза.
|
|
753
765
|
*/
|
|
754
|
-
overlay?: boolean;
|
|
766
|
+
overlay?: boolean | 'roads' | 'volume';
|
|
755
767
|
/** Выключить слой, не удаляя из стиля. */
|
|
756
768
|
visible?: boolean;
|
|
757
769
|
/**
|
|
@@ -972,6 +984,21 @@ interface FillExtrusionLayerSpec extends LayerBase {
|
|
|
972
984
|
windowGlow?: Interpolated<number>;
|
|
973
985
|
/** Высота этажа в метрах: шаг сетки окон. */
|
|
974
986
|
floorHeight?: Interpolated<number>;
|
|
987
|
+
/**
|
|
988
|
+
* На сколько метров стекло утоплено от плоскости стены (по умолчанию 0.18).
|
|
989
|
+
* Край проёма кладёт на утопленное стекло тень со стороны, где нет солнца, —
|
|
990
|
+
* именно она и читается как глубина. Ноль возвращает плоское окно.
|
|
991
|
+
*/
|
|
992
|
+
windowRecess?: Interpolated<number>;
|
|
993
|
+
/** Глубина тени откоса, 0..1. */
|
|
994
|
+
windowRecessShade?: Interpolated<number>;
|
|
995
|
+
/**
|
|
996
|
+
* Высота в метрах, на которой цокольное затемнение сходит на нет (по умолчанию 4).
|
|
997
|
+
* Затемнение считается для ВСЕЙ стены, включая скруглённые углы и фронтоны.
|
|
998
|
+
*/
|
|
999
|
+
plinthHeight?: Interpolated<number>;
|
|
1000
|
+
/** Сила цокольного затемнения у самой земли, 0..1. */
|
|
1001
|
+
plinthShade?: Interpolated<number>;
|
|
975
1002
|
/**
|
|
976
1003
|
* Разброс цвета СКАТНЫХ кровель, 0..1. Тон берётся из хеша здания, яркость
|
|
977
1004
|
* остаётся от темы — иначе терракота всплыла бы посреди ночной карты.
|
|
@@ -3491,6 +3518,8 @@ declare class LayerRenderer {
|
|
|
3491
3518
|
* перелёт через город.
|
|
3492
3519
|
*/
|
|
3493
3520
|
private patternScale;
|
|
3521
|
+
/** Камера в метрах от мирового нуля — считается раз на кадр (см. render). */
|
|
3522
|
+
private cameraMeters;
|
|
3494
3523
|
/**
|
|
3495
3524
|
* Множитель процедурной детализации (фасады, материалы) — из профиля
|
|
3496
3525
|
* качества. Ноль не ставим даже на слабых устройствах: без окон и ряби карта
|
|
@@ -3772,6 +3801,14 @@ declare class LayerRenderer {
|
|
|
3772
3801
|
* И масштаб, И начало — тогда координата остаётся непрерывной, а размеры
|
|
3773
3802
|
* прежними.
|
|
3774
3803
|
*/
|
|
3804
|
+
/**
|
|
3805
|
+
* Накладка — слои вне общей очереди, без теста глубины.
|
|
3806
|
+
*
|
|
3807
|
+
* Позиций две, и они не взаимозаменяемы. `roads` идёт до объёма: разметка лежит на асфальте, и
|
|
3808
|
+
* дом обязан её закрывать. `volume` идёт после: план этажа лежит ВНУТРИ здания, и в обычном
|
|
3809
|
+
* порядке его закрыла бы крыша.
|
|
3810
|
+
*/
|
|
3811
|
+
private drawOverlay;
|
|
3775
3812
|
private applyTileScale;
|
|
3776
3813
|
private applyMaterial;
|
|
3777
3814
|
private drawFill;
|
|
@@ -4370,7 +4407,22 @@ declare function clipLineToRect(line: ScreenPoint[], width: number, height: numb
|
|
|
4370
4407
|
*/
|
|
4371
4408
|
declare const BUILDING_VERTEX_STRIDE = 18;
|
|
4372
4409
|
/** Множитель упаковки высоты в Uint16. */
|
|
4373
|
-
declare const BUILDING_HEIGHT_SCALE =
|
|
4410
|
+
declare const BUILDING_HEIGHT_SCALE = 32;
|
|
4411
|
+
/**
|
|
4412
|
+
* Множитель упаковки ПОЛОЖЕНИЯ вершины: сколько единиц Int16 приходится на единицу тайла.
|
|
4413
|
+
*
|
|
4414
|
+
* Было единица — то есть 0.47 м на z14, потому что координаты в MVT целые и вершину писали как
|
|
4415
|
+
* есть. Пока углы дома были прямыми, этого хватало: вершина и так стояла в узле сетки. Со
|
|
4416
|
+
* СКРУГЛЕНИЕМ хватать перестало — дуга радиусом 1.6 м это семь точек в пределах трёх единиц тайла,
|
|
4417
|
+
* и округление сажает их на ту же сетку: вместо дуги выходит лесенка со ступенью в полметра, она же
|
|
4418
|
+
* «угловатость» на ближнем зуме.
|
|
4419
|
+
*
|
|
4420
|
+
* Восемь единиц на тайловую — это 5.9 см, и дуга снова читается дугой. Потолок: тайл 0..4096, при
|
|
4421
|
+
* ×8 это 0..32768, и последнее значение на единицу больше, чем помещается в Int16, — оно
|
|
4422
|
+
* прижимается (`clampI16`). Ошибка при этом 6 см и только у вершины, стоящей ровно на дальней
|
|
4423
|
+
* границе тайла.
|
|
4424
|
+
*/
|
|
4425
|
+
declare const BUILDING_POS_SCALE = 8;
|
|
4374
4426
|
interface BuildingsMesh {
|
|
4375
4427
|
vertices: ArrayBuffer;
|
|
4376
4428
|
indices: ArrayBuffer;
|
|
@@ -5785,10 +5837,19 @@ declare class Map$1 extends Evented<MapEvents> {
|
|
|
5785
5837
|
};
|
|
5786
5838
|
/** Просит нарисовать кадр. Движок рисует по требованию, а не постоянно. */
|
|
5787
5839
|
triggerRepaint(): void;
|
|
5840
|
+
private debugFB;
|
|
5841
|
+
/**
|
|
5842
|
+
* Рисует один кадр в float-буфер и возвращает прямоугольник пикселей.
|
|
5843
|
+
* `x`, `y` — в координатах GL (снизу вверх), размеры в пикселях канвы.
|
|
5844
|
+
*/
|
|
5845
|
+
debugFloatPixels(x: number, y: number, w: number, h: number): {
|
|
5846
|
+
data: Float32Array;
|
|
5847
|
+
format: string;
|
|
5848
|
+
} | null;
|
|
5788
5849
|
private renderFrame;
|
|
5789
5850
|
private stopFrameLoop;
|
|
5790
5851
|
get isLoaded(): boolean;
|
|
5791
5852
|
destroy(): void;
|
|
5792
5853
|
}
|
|
5793
5854
|
|
|
5794
|
-
export { type AnimationOptions, AssetLoader, type AssetLoaderOptions, BASE_SOURCE, BUILDING_HEIGHT_SCALE, BUILDING_VERTEX_STRIDE, type BuildingHit, type BuildingsMesh, CITY_STYLE, type CameraOptions, Circle, type CircleOptions, type CoverOptions, DEFAULT_ICONS, DEFAULT_LIGHT, DEFAULT_SHADOWS, DEFAULT_SKY, DEFAULT_STYLE, DepthTarget, type DeviceHints, EARTH_CIRCUMFERENCE, FILL_VERTEX_STRIDE, type Filter, type FitBoundsOptions, type FitViewport, type FogPlanes, GLOBE_MAX_PITCH, GLOBE_ZOOM_MAX, GLOBE_ZOOM_MIN, GLYPH_BORDER, GLYPH_SIZE, GROUND_SCALE, GeomType, type GestureOptions, type Glyph, type GlyphMetric, GlyphSource, GroundArrows, IconSource, IndoorMask, type Interpolated, LEVEL_LIMIT, LINE_VERTEX_STRIDE, type LayerPlan, LayerRenderer, type LightSpec, type LinePlacement, type LngLat, LngLatBounds, type LngLatLike, MAX_LATITUDE, MODEL_VERTEX_STRIDE, Map$1 as Map, type MapEvents, MapObject, type MapObjectOptions, type MapOptions, Marker, type MarkerOptions, Model, ModelLayer, type ModelMesh, type ModelOptions, type ModelPrimitive, ObjectManager, type ObjectPaint, type ObjectPart, type Padding, type PlacedGlyph, type PlacedSymbol, Polygon, type PolygonOptions, Polyline, type PolylineOptions, type PolylineSegment, Popup, type PopupOptions, type Projection, type QualityName, type QualityProfile, RELIEF_STYLE, RUNTIME_FILL_STRIDE, RUNTIME_LINE_STRIDE, RasterSource, type RasterSourceOptions, RasterTile, type RoundOptions, type RuntimeMesh, SDF_EDGE, SDF_PX, SOFT_STYLE, SPLIT_SEP, SURFACE_CUT_BLEED, SURFACE_LEVEL_SCALE, SURFACE_VERTEX_STRIDE, type ScreenPoint$1 as ScreenPoint, SdfAtlas, type ShadowSettings, type SkySpec, Style, type StyleLayerSpec, type StyleSpec, type SymbolHit, SymbolRenderer, THEMES, TILE_SIZE, type ThemeSpec, TileID, Transform, VectorTile, VectorTileFeature, VectorTileLayer, abbreviateStreet, addGround, altitudeFromMercatorZ, applyTheme, arrowLabelOffset, arrowVertices, buildRuntimeFill, buildRuntimeLine, cameraForBounds, circumferenceAtLatitude, clampLat, clampPixelRatio, clipLineToRect, coordinateDigits, coveringTiles, createGround, Map$1 as default, deviceHints, distToSegment, evaluateColor, evaluateNumber, extractFeature, featureLevel, fillFootprint, fogPlanes, footprintOf, formatHash, generateBuildings, generateFill, generateLine, generateSurface, generateSymbols, globeBasis, globeFlatMix, globeRadius, globeToLocal, groundAt, iconRotation, insideFootprint, latFromMercatorY, lngFromMercatorX, lngLatToUnit, matchesFilter, mercatorMetersPerTile, mercatorX, mercatorY, mercatorZFromAltitude, metersPerPixel, metersPerTile, nextQualityDown, parseGlb, parseGlbAsync, parseGlyphs, parseHash, patchUV, pickBuilding, pickFill, pitchIntent, pixelsPerMeter, placeAlongLine, pointInRing, qualityFor, qualityProfile, raySphere, resolveTemplate, roundRing, sdfFromAlpha, shapeText, splitBucketKey, splitByGround, splitPolygons, styleWithTheme, tileOriginMeters, tileUrl, toLngLat, unitToLngLat, worldSize };
|
|
5855
|
+
export { type AnimationOptions, AssetLoader, type AssetLoaderOptions, BASE_SOURCE, BUILDING_HEIGHT_SCALE, BUILDING_POS_SCALE, BUILDING_VERTEX_STRIDE, type BuildingHit, type BuildingsMesh, CITY_STYLE, type CameraOptions, Circle, type CircleOptions, type CoverOptions, DEFAULT_ICONS, DEFAULT_LIGHT, DEFAULT_SHADOWS, DEFAULT_SKY, DEFAULT_STYLE, DepthTarget, type DeviceHints, EARTH_CIRCUMFERENCE, FILL_VERTEX_STRIDE, type Filter, type FitBoundsOptions, type FitViewport, type FogPlanes, GLOBE_MAX_PITCH, GLOBE_ZOOM_MAX, GLOBE_ZOOM_MIN, GLYPH_BORDER, GLYPH_SIZE, GROUND_SCALE, GeomType, type GestureOptions, type Glyph, type GlyphMetric, GlyphSource, GroundArrows, IconSource, IndoorMask, type Interpolated, LEVEL_LIMIT, LINE_VERTEX_STRIDE, type LayerPlan, LayerRenderer, type LightSpec, type LinePlacement, type LngLat, LngLatBounds, type LngLatLike, MAX_LATITUDE, MODEL_VERTEX_STRIDE, Map$1 as Map, type MapEvents, MapObject, type MapObjectOptions, type MapOptions, Marker, type MarkerOptions, Model, ModelLayer, type ModelMesh, type ModelOptions, type ModelPrimitive, ObjectManager, type ObjectPaint, type ObjectPart, type Padding, type PlacedGlyph, type PlacedSymbol, Polygon, type PolygonOptions, Polyline, type PolylineOptions, type PolylineSegment, Popup, type PopupOptions, type Projection, type QualityName, type QualityProfile, RELIEF_STYLE, RUNTIME_FILL_STRIDE, RUNTIME_LINE_STRIDE, RasterSource, type RasterSourceOptions, RasterTile, type RoundOptions, type RuntimeMesh, SDF_EDGE, SDF_PX, SOFT_STYLE, SPLIT_SEP, SURFACE_CUT_BLEED, SURFACE_LEVEL_SCALE, SURFACE_VERTEX_STRIDE, type ScreenPoint$1 as ScreenPoint, SdfAtlas, type ShadowSettings, type SkySpec, Style, type StyleLayerSpec, type StyleSpec, type SymbolHit, SymbolRenderer, THEMES, TILE_SIZE, type ThemeSpec, TileID, Transform, VectorTile, VectorTileFeature, VectorTileLayer, abbreviateStreet, addGround, altitudeFromMercatorZ, applyTheme, arrowLabelOffset, arrowVertices, buildRuntimeFill, buildRuntimeLine, cameraForBounds, circumferenceAtLatitude, clampLat, clampPixelRatio, clipLineToRect, coordinateDigits, coveringTiles, createGround, Map$1 as default, deviceHints, distToSegment, evaluateColor, evaluateNumber, extractFeature, featureLevel, fillFootprint, fogPlanes, footprintOf, formatHash, generateBuildings, generateFill, generateLine, generateSurface, generateSymbols, globeBasis, globeFlatMix, globeRadius, globeToLocal, groundAt, iconRotation, insideFootprint, latFromMercatorY, lngFromMercatorX, lngLatToUnit, matchesFilter, mercatorMetersPerTile, mercatorX, mercatorY, mercatorZFromAltitude, metersPerPixel, metersPerTile, nextQualityDown, parseGlb, parseGlbAsync, parseGlyphs, parseHash, patchUV, pickBuilding, pickFill, pitchIntent, pixelsPerMeter, placeAlongLine, pointInRing, qualityFor, qualityProfile, raySphere, resolveTemplate, roundRing, sdfFromAlpha, shapeText, splitBucketKey, splitByGround, splitPolygons, styleWithTheme, tileOriginMeters, tileUrl, toLngLat, unitToLngLat, worldSize };
|
package/dist/osmgl.d.ts
CHANGED
|
@@ -618,6 +618,13 @@ declare class Context {
|
|
|
618
618
|
constructor(gl: WebGL2RenderingContext);
|
|
619
619
|
useProgram(program: WebGLProgram | null): boolean;
|
|
620
620
|
bindVAO(vao: WebGLVertexArrayObject | null): void;
|
|
621
|
+
/**
|
|
622
|
+
* Куда уходит «экранный» кадр. По умолчанию `null` — канва. Диагностика
|
|
623
|
+
* подменяет его на свой буфер: проходы внутри рендера (тени, пикинг)
|
|
624
|
+
* возвращаются с bindFramebuffer(null), и без этой подмены весь кадр после
|
|
625
|
+
* первого же такого прохода уходил бы мимо буфера.
|
|
626
|
+
*/
|
|
627
|
+
screen: WebGLFramebuffer | null;
|
|
621
628
|
bindFramebuffer(fb: WebGLFramebuffer | null): void;
|
|
622
629
|
bindTexture(unit: number, texture: WebGLTexture | null, target?: number): void;
|
|
623
630
|
viewport(x: number, y: number, w: number, h: number): void;
|
|
@@ -744,14 +751,19 @@ interface LayerBase {
|
|
|
744
751
|
*/
|
|
745
752
|
splitBy?: string;
|
|
746
753
|
/**
|
|
747
|
-
*
|
|
754
|
+
* Накладка: слой рисуется вне общей очереди, без теста глубины. Значение говорит, ГДЕ.
|
|
748
755
|
*
|
|
749
|
-
*
|
|
750
|
-
* закрыла бы его крыша. План этажа и есть накладка —
|
|
751
|
-
* покрывает он ровно контур своего здания, поэтому соседние дома остаются
|
|
756
|
+
* `'volume'` (и `true` — прежнее написание) — поверх объёма. Нужно планам этажей: они лежат
|
|
757
|
+
* внутри здания, и в обычном порядке их закрыла бы его крыша. План этажа и есть накладка —
|
|
758
|
+
* «мы внутри», — а покрывает он ровно контур своего здания, поэтому соседние дома остаются
|
|
752
759
|
* видимыми.
|
|
760
|
+
*
|
|
761
|
+
* `'roads'` — сразу после дорог и ДО объёма. Это место разметки: зебры, перекрытия, всё, что
|
|
762
|
+
* лежит на асфальте. Дороги рисуются позже поверхностей, поэтому в общую очередь такая
|
|
763
|
+
* разметка не встаёт, но и поверх объёма ей делать нечего — зебра, висящая на стене дома,
|
|
764
|
+
* первой бросается в глаза.
|
|
753
765
|
*/
|
|
754
|
-
overlay?: boolean;
|
|
766
|
+
overlay?: boolean | 'roads' | 'volume';
|
|
755
767
|
/** Выключить слой, не удаляя из стиля. */
|
|
756
768
|
visible?: boolean;
|
|
757
769
|
/**
|
|
@@ -972,6 +984,21 @@ interface FillExtrusionLayerSpec extends LayerBase {
|
|
|
972
984
|
windowGlow?: Interpolated<number>;
|
|
973
985
|
/** Высота этажа в метрах: шаг сетки окон. */
|
|
974
986
|
floorHeight?: Interpolated<number>;
|
|
987
|
+
/**
|
|
988
|
+
* На сколько метров стекло утоплено от плоскости стены (по умолчанию 0.18).
|
|
989
|
+
* Край проёма кладёт на утопленное стекло тень со стороны, где нет солнца, —
|
|
990
|
+
* именно она и читается как глубина. Ноль возвращает плоское окно.
|
|
991
|
+
*/
|
|
992
|
+
windowRecess?: Interpolated<number>;
|
|
993
|
+
/** Глубина тени откоса, 0..1. */
|
|
994
|
+
windowRecessShade?: Interpolated<number>;
|
|
995
|
+
/**
|
|
996
|
+
* Высота в метрах, на которой цокольное затемнение сходит на нет (по умолчанию 4).
|
|
997
|
+
* Затемнение считается для ВСЕЙ стены, включая скруглённые углы и фронтоны.
|
|
998
|
+
*/
|
|
999
|
+
plinthHeight?: Interpolated<number>;
|
|
1000
|
+
/** Сила цокольного затемнения у самой земли, 0..1. */
|
|
1001
|
+
plinthShade?: Interpolated<number>;
|
|
975
1002
|
/**
|
|
976
1003
|
* Разброс цвета СКАТНЫХ кровель, 0..1. Тон берётся из хеша здания, яркость
|
|
977
1004
|
* остаётся от темы — иначе терракота всплыла бы посреди ночной карты.
|
|
@@ -3491,6 +3518,8 @@ declare class LayerRenderer {
|
|
|
3491
3518
|
* перелёт через город.
|
|
3492
3519
|
*/
|
|
3493
3520
|
private patternScale;
|
|
3521
|
+
/** Камера в метрах от мирового нуля — считается раз на кадр (см. render). */
|
|
3522
|
+
private cameraMeters;
|
|
3494
3523
|
/**
|
|
3495
3524
|
* Множитель процедурной детализации (фасады, материалы) — из профиля
|
|
3496
3525
|
* качества. Ноль не ставим даже на слабых устройствах: без окон и ряби карта
|
|
@@ -3772,6 +3801,14 @@ declare class LayerRenderer {
|
|
|
3772
3801
|
* И масштаб, И начало — тогда координата остаётся непрерывной, а размеры
|
|
3773
3802
|
* прежними.
|
|
3774
3803
|
*/
|
|
3804
|
+
/**
|
|
3805
|
+
* Накладка — слои вне общей очереди, без теста глубины.
|
|
3806
|
+
*
|
|
3807
|
+
* Позиций две, и они не взаимозаменяемы. `roads` идёт до объёма: разметка лежит на асфальте, и
|
|
3808
|
+
* дом обязан её закрывать. `volume` идёт после: план этажа лежит ВНУТРИ здания, и в обычном
|
|
3809
|
+
* порядке его закрыла бы крыша.
|
|
3810
|
+
*/
|
|
3811
|
+
private drawOverlay;
|
|
3775
3812
|
private applyTileScale;
|
|
3776
3813
|
private applyMaterial;
|
|
3777
3814
|
private drawFill;
|
|
@@ -4370,7 +4407,22 @@ declare function clipLineToRect(line: ScreenPoint[], width: number, height: numb
|
|
|
4370
4407
|
*/
|
|
4371
4408
|
declare const BUILDING_VERTEX_STRIDE = 18;
|
|
4372
4409
|
/** Множитель упаковки высоты в Uint16. */
|
|
4373
|
-
declare const BUILDING_HEIGHT_SCALE =
|
|
4410
|
+
declare const BUILDING_HEIGHT_SCALE = 32;
|
|
4411
|
+
/**
|
|
4412
|
+
* Множитель упаковки ПОЛОЖЕНИЯ вершины: сколько единиц Int16 приходится на единицу тайла.
|
|
4413
|
+
*
|
|
4414
|
+
* Было единица — то есть 0.47 м на z14, потому что координаты в MVT целые и вершину писали как
|
|
4415
|
+
* есть. Пока углы дома были прямыми, этого хватало: вершина и так стояла в узле сетки. Со
|
|
4416
|
+
* СКРУГЛЕНИЕМ хватать перестало — дуга радиусом 1.6 м это семь точек в пределах трёх единиц тайла,
|
|
4417
|
+
* и округление сажает их на ту же сетку: вместо дуги выходит лесенка со ступенью в полметра, она же
|
|
4418
|
+
* «угловатость» на ближнем зуме.
|
|
4419
|
+
*
|
|
4420
|
+
* Восемь единиц на тайловую — это 5.9 см, и дуга снова читается дугой. Потолок: тайл 0..4096, при
|
|
4421
|
+
* ×8 это 0..32768, и последнее значение на единицу больше, чем помещается в Int16, — оно
|
|
4422
|
+
* прижимается (`clampI16`). Ошибка при этом 6 см и только у вершины, стоящей ровно на дальней
|
|
4423
|
+
* границе тайла.
|
|
4424
|
+
*/
|
|
4425
|
+
declare const BUILDING_POS_SCALE = 8;
|
|
4374
4426
|
interface BuildingsMesh {
|
|
4375
4427
|
vertices: ArrayBuffer;
|
|
4376
4428
|
indices: ArrayBuffer;
|
|
@@ -5785,10 +5837,19 @@ declare class Map$1 extends Evented<MapEvents> {
|
|
|
5785
5837
|
};
|
|
5786
5838
|
/** Просит нарисовать кадр. Движок рисует по требованию, а не постоянно. */
|
|
5787
5839
|
triggerRepaint(): void;
|
|
5840
|
+
private debugFB;
|
|
5841
|
+
/**
|
|
5842
|
+
* Рисует один кадр в float-буфер и возвращает прямоугольник пикселей.
|
|
5843
|
+
* `x`, `y` — в координатах GL (снизу вверх), размеры в пикселях канвы.
|
|
5844
|
+
*/
|
|
5845
|
+
debugFloatPixels(x: number, y: number, w: number, h: number): {
|
|
5846
|
+
data: Float32Array;
|
|
5847
|
+
format: string;
|
|
5848
|
+
} | null;
|
|
5788
5849
|
private renderFrame;
|
|
5789
5850
|
private stopFrameLoop;
|
|
5790
5851
|
get isLoaded(): boolean;
|
|
5791
5852
|
destroy(): void;
|
|
5792
5853
|
}
|
|
5793
5854
|
|
|
5794
|
-
export { type AnimationOptions, AssetLoader, type AssetLoaderOptions, BASE_SOURCE, BUILDING_HEIGHT_SCALE, BUILDING_VERTEX_STRIDE, type BuildingHit, type BuildingsMesh, CITY_STYLE, type CameraOptions, Circle, type CircleOptions, type CoverOptions, DEFAULT_ICONS, DEFAULT_LIGHT, DEFAULT_SHADOWS, DEFAULT_SKY, DEFAULT_STYLE, DepthTarget, type DeviceHints, EARTH_CIRCUMFERENCE, FILL_VERTEX_STRIDE, type Filter, type FitBoundsOptions, type FitViewport, type FogPlanes, GLOBE_MAX_PITCH, GLOBE_ZOOM_MAX, GLOBE_ZOOM_MIN, GLYPH_BORDER, GLYPH_SIZE, GROUND_SCALE, GeomType, type GestureOptions, type Glyph, type GlyphMetric, GlyphSource, GroundArrows, IconSource, IndoorMask, type Interpolated, LEVEL_LIMIT, LINE_VERTEX_STRIDE, type LayerPlan, LayerRenderer, type LightSpec, type LinePlacement, type LngLat, LngLatBounds, type LngLatLike, MAX_LATITUDE, MODEL_VERTEX_STRIDE, Map$1 as Map, type MapEvents, MapObject, type MapObjectOptions, type MapOptions, Marker, type MarkerOptions, Model, ModelLayer, type ModelMesh, type ModelOptions, type ModelPrimitive, ObjectManager, type ObjectPaint, type ObjectPart, type Padding, type PlacedGlyph, type PlacedSymbol, Polygon, type PolygonOptions, Polyline, type PolylineOptions, type PolylineSegment, Popup, type PopupOptions, type Projection, type QualityName, type QualityProfile, RELIEF_STYLE, RUNTIME_FILL_STRIDE, RUNTIME_LINE_STRIDE, RasterSource, type RasterSourceOptions, RasterTile, type RoundOptions, type RuntimeMesh, SDF_EDGE, SDF_PX, SOFT_STYLE, SPLIT_SEP, SURFACE_CUT_BLEED, SURFACE_LEVEL_SCALE, SURFACE_VERTEX_STRIDE, type ScreenPoint$1 as ScreenPoint, SdfAtlas, type ShadowSettings, type SkySpec, Style, type StyleLayerSpec, type StyleSpec, type SymbolHit, SymbolRenderer, THEMES, TILE_SIZE, type ThemeSpec, TileID, Transform, VectorTile, VectorTileFeature, VectorTileLayer, abbreviateStreet, addGround, altitudeFromMercatorZ, applyTheme, arrowLabelOffset, arrowVertices, buildRuntimeFill, buildRuntimeLine, cameraForBounds, circumferenceAtLatitude, clampLat, clampPixelRatio, clipLineToRect, coordinateDigits, coveringTiles, createGround, Map$1 as default, deviceHints, distToSegment, evaluateColor, evaluateNumber, extractFeature, featureLevel, fillFootprint, fogPlanes, footprintOf, formatHash, generateBuildings, generateFill, generateLine, generateSurface, generateSymbols, globeBasis, globeFlatMix, globeRadius, globeToLocal, groundAt, iconRotation, insideFootprint, latFromMercatorY, lngFromMercatorX, lngLatToUnit, matchesFilter, mercatorMetersPerTile, mercatorX, mercatorY, mercatorZFromAltitude, metersPerPixel, metersPerTile, nextQualityDown, parseGlb, parseGlbAsync, parseGlyphs, parseHash, patchUV, pickBuilding, pickFill, pitchIntent, pixelsPerMeter, placeAlongLine, pointInRing, qualityFor, qualityProfile, raySphere, resolveTemplate, roundRing, sdfFromAlpha, shapeText, splitBucketKey, splitByGround, splitPolygons, styleWithTheme, tileOriginMeters, tileUrl, toLngLat, unitToLngLat, worldSize };
|
|
5855
|
+
export { type AnimationOptions, AssetLoader, type AssetLoaderOptions, BASE_SOURCE, BUILDING_HEIGHT_SCALE, BUILDING_POS_SCALE, BUILDING_VERTEX_STRIDE, type BuildingHit, type BuildingsMesh, CITY_STYLE, type CameraOptions, Circle, type CircleOptions, type CoverOptions, DEFAULT_ICONS, DEFAULT_LIGHT, DEFAULT_SHADOWS, DEFAULT_SKY, DEFAULT_STYLE, DepthTarget, type DeviceHints, EARTH_CIRCUMFERENCE, FILL_VERTEX_STRIDE, type Filter, type FitBoundsOptions, type FitViewport, type FogPlanes, GLOBE_MAX_PITCH, GLOBE_ZOOM_MAX, GLOBE_ZOOM_MIN, GLYPH_BORDER, GLYPH_SIZE, GROUND_SCALE, GeomType, type GestureOptions, type Glyph, type GlyphMetric, GlyphSource, GroundArrows, IconSource, IndoorMask, type Interpolated, LEVEL_LIMIT, LINE_VERTEX_STRIDE, type LayerPlan, LayerRenderer, type LightSpec, type LinePlacement, type LngLat, LngLatBounds, type LngLatLike, MAX_LATITUDE, MODEL_VERTEX_STRIDE, Map$1 as Map, type MapEvents, MapObject, type MapObjectOptions, type MapOptions, Marker, type MarkerOptions, Model, ModelLayer, type ModelMesh, type ModelOptions, type ModelPrimitive, ObjectManager, type ObjectPaint, type ObjectPart, type Padding, type PlacedGlyph, type PlacedSymbol, Polygon, type PolygonOptions, Polyline, type PolylineOptions, type PolylineSegment, Popup, type PopupOptions, type Projection, type QualityName, type QualityProfile, RELIEF_STYLE, RUNTIME_FILL_STRIDE, RUNTIME_LINE_STRIDE, RasterSource, type RasterSourceOptions, RasterTile, type RoundOptions, type RuntimeMesh, SDF_EDGE, SDF_PX, SOFT_STYLE, SPLIT_SEP, SURFACE_CUT_BLEED, SURFACE_LEVEL_SCALE, SURFACE_VERTEX_STRIDE, type ScreenPoint$1 as ScreenPoint, SdfAtlas, type ShadowSettings, type SkySpec, Style, type StyleLayerSpec, type StyleSpec, type SymbolHit, SymbolRenderer, THEMES, TILE_SIZE, type ThemeSpec, TileID, Transform, VectorTile, VectorTileFeature, VectorTileLayer, abbreviateStreet, addGround, altitudeFromMercatorZ, applyTheme, arrowLabelOffset, arrowVertices, buildRuntimeFill, buildRuntimeLine, cameraForBounds, circumferenceAtLatitude, clampLat, clampPixelRatio, clipLineToRect, coordinateDigits, coveringTiles, createGround, Map$1 as default, deviceHints, distToSegment, evaluateColor, evaluateNumber, extractFeature, featureLevel, fillFootprint, fogPlanes, footprintOf, formatHash, generateBuildings, generateFill, generateLine, generateSurface, generateSymbols, globeBasis, globeFlatMix, globeRadius, globeToLocal, groundAt, iconRotation, insideFootprint, latFromMercatorY, lngFromMercatorX, lngLatToUnit, matchesFilter, mercatorMetersPerTile, mercatorX, mercatorY, mercatorZFromAltitude, metersPerPixel, metersPerTile, nextQualityDown, parseGlb, parseGlbAsync, parseGlyphs, parseHash, patchUV, pickBuilding, pickFill, pitchIntent, pixelsPerMeter, placeAlongLine, pointInRing, qualityFor, qualityProfile, raySphere, resolveTemplate, roundRing, sdfFromAlpha, shapeText, splitBucketKey, splitByGround, splitPolygons, styleWithTheme, tileOriginMeters, tileUrl, toLngLat, unitToLngLat, worldSize };
|