venue-js 1.3.1 → 1.4.0-next.1
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 +13 -6
- package/dist/index.d.ts +13 -6
- package/dist/index.js +73 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +73 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -8,7 +8,7 @@ import { Map, Coordinate as Coordinate$1 } from 'maptalks-gl';
|
|
|
8
8
|
import { BaseObject, ThreeLayer } from 'maptalks.three';
|
|
9
9
|
import * as maptalks from 'maptalks';
|
|
10
10
|
import { Coordinate, Extent, Marker, ui, LineString as LineString$1, Polygon as Polygon$1, MultiPolygon as MultiPolygon$1, MultiLineString } from 'maptalks';
|
|
11
|
-
import { BaseObjectOptionType, ExtrudePolygonOptionType, ExtrudeLineOptionType } from 'maptalks.three/dist/type';
|
|
11
|
+
import { BaseObjectOptionType, BarOptionType, ExtrudePolygonOptionType, ExtrudeLineOptionType } from 'maptalks.three/dist/type';
|
|
12
12
|
import { PolygonOptionsType } from 'maptalks/dist/geometry/Polygon';
|
|
13
13
|
import { LineStringOptionsType } from 'maptalks/dist/geometry/LineString';
|
|
14
14
|
import { MapViewType, MapAnimationOptionsType, MapPaddingType } from 'maptalks/dist/map/Map';
|
|
@@ -827,6 +827,15 @@ declare class TextSpriteMarker extends BaseObject {
|
|
|
827
827
|
setAltitude(altitude: number): this;
|
|
828
828
|
}
|
|
829
829
|
|
|
830
|
+
type ImageMarkerOptions = BaseObjectOptionType & {
|
|
831
|
+
src: string;
|
|
832
|
+
bottomHeight?: number;
|
|
833
|
+
leg?: Omit<BarOptionType, 'height'> & {
|
|
834
|
+
color: string;
|
|
835
|
+
};
|
|
836
|
+
};
|
|
837
|
+
type AnyMarkerOptions = TextMarkerOptions | ImageMarkerOptions;
|
|
838
|
+
|
|
830
839
|
type Stop = [zoom: number, value: number];
|
|
831
840
|
type MapElement = maptalks.Geometry | BaseObject;
|
|
832
841
|
/** 2D */
|
|
@@ -868,17 +877,15 @@ type BaseRenderManagerOptions = {
|
|
|
868
877
|
};
|
|
869
878
|
type RendererManagerOptions = BaseRenderManagerOptions & {
|
|
870
879
|
type: "2D";
|
|
871
|
-
elements
|
|
880
|
+
elements?: Element2DRendererOptions;
|
|
872
881
|
} | BaseRenderManagerOptions & {
|
|
873
882
|
type: "3D";
|
|
874
|
-
elements
|
|
883
|
+
elements?: Element3DRendererOptions;
|
|
875
884
|
};
|
|
876
885
|
type HighlightElementOptions = {
|
|
877
886
|
reset: boolean;
|
|
878
887
|
};
|
|
879
888
|
|
|
880
|
-
type AnyMarkerOptions = TextMarkerOptions;
|
|
881
|
-
|
|
882
889
|
declare class RendererManager extends EventTarget {
|
|
883
890
|
#private;
|
|
884
891
|
map: maptalks$1.Map;
|
|
@@ -906,7 +913,7 @@ declare class RendererManager extends EventTarget {
|
|
|
906
913
|
* ======================================================================== */
|
|
907
914
|
_getMarkersByOrdinal: (ordinal: number) => BaseObject[] | maptalks$1.ui.UIMarker[];
|
|
908
915
|
_addMarkersToManager: (id: any, markers: any, ordinal: any) => void;
|
|
909
|
-
createMarker(coordinate: Position, ordinal: number,
|
|
916
|
+
createMarker(type: 'text' | 'image', coordinate: Position, ordinal: number, textOrPath: string, options: AnyMarkerOptions): void;
|
|
910
917
|
clearMarkers(): void;
|
|
911
918
|
}
|
|
912
919
|
|
package/dist/index.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { Map, Coordinate as Coordinate$1 } from 'maptalks-gl';
|
|
|
8
8
|
import { BaseObject, ThreeLayer } from 'maptalks.three';
|
|
9
9
|
import * as maptalks from 'maptalks';
|
|
10
10
|
import { Coordinate, Extent, Marker, ui, LineString as LineString$1, Polygon as Polygon$1, MultiPolygon as MultiPolygon$1, MultiLineString } from 'maptalks';
|
|
11
|
-
import { BaseObjectOptionType, ExtrudePolygonOptionType, ExtrudeLineOptionType } from 'maptalks.three/dist/type';
|
|
11
|
+
import { BaseObjectOptionType, BarOptionType, ExtrudePolygonOptionType, ExtrudeLineOptionType } from 'maptalks.three/dist/type';
|
|
12
12
|
import { PolygonOptionsType } from 'maptalks/dist/geometry/Polygon';
|
|
13
13
|
import { LineStringOptionsType } from 'maptalks/dist/geometry/LineString';
|
|
14
14
|
import { MapViewType, MapAnimationOptionsType, MapPaddingType } from 'maptalks/dist/map/Map';
|
|
@@ -827,6 +827,15 @@ declare class TextSpriteMarker extends BaseObject {
|
|
|
827
827
|
setAltitude(altitude: number): this;
|
|
828
828
|
}
|
|
829
829
|
|
|
830
|
+
type ImageMarkerOptions = BaseObjectOptionType & {
|
|
831
|
+
src: string;
|
|
832
|
+
bottomHeight?: number;
|
|
833
|
+
leg?: Omit<BarOptionType, 'height'> & {
|
|
834
|
+
color: string;
|
|
835
|
+
};
|
|
836
|
+
};
|
|
837
|
+
type AnyMarkerOptions = TextMarkerOptions | ImageMarkerOptions;
|
|
838
|
+
|
|
830
839
|
type Stop = [zoom: number, value: number];
|
|
831
840
|
type MapElement = maptalks.Geometry | BaseObject;
|
|
832
841
|
/** 2D */
|
|
@@ -868,17 +877,15 @@ type BaseRenderManagerOptions = {
|
|
|
868
877
|
};
|
|
869
878
|
type RendererManagerOptions = BaseRenderManagerOptions & {
|
|
870
879
|
type: "2D";
|
|
871
|
-
elements
|
|
880
|
+
elements?: Element2DRendererOptions;
|
|
872
881
|
} | BaseRenderManagerOptions & {
|
|
873
882
|
type: "3D";
|
|
874
|
-
elements
|
|
883
|
+
elements?: Element3DRendererOptions;
|
|
875
884
|
};
|
|
876
885
|
type HighlightElementOptions = {
|
|
877
886
|
reset: boolean;
|
|
878
887
|
};
|
|
879
888
|
|
|
880
|
-
type AnyMarkerOptions = TextMarkerOptions;
|
|
881
|
-
|
|
882
889
|
declare class RendererManager extends EventTarget {
|
|
883
890
|
#private;
|
|
884
891
|
map: maptalks$1.Map;
|
|
@@ -906,7 +913,7 @@ declare class RendererManager extends EventTarget {
|
|
|
906
913
|
* ======================================================================== */
|
|
907
914
|
_getMarkersByOrdinal: (ordinal: number) => BaseObject[] | maptalks$1.ui.UIMarker[];
|
|
908
915
|
_addMarkersToManager: (id: any, markers: any, ordinal: any) => void;
|
|
909
|
-
createMarker(coordinate: Position, ordinal: number,
|
|
916
|
+
createMarker(type: 'text' | 'image', coordinate: Position, ordinal: number, textOrPath: string, options: AnyMarkerOptions): void;
|
|
910
917
|
clearMarkers(): void;
|
|
911
918
|
}
|
|
912
919
|
|
package/dist/index.js
CHANGED
|
@@ -2739,7 +2739,7 @@ var CameraManager = class {
|
|
|
2739
2739
|
// src/IndoorMap/renderer/RendererManager.ts
|
|
2740
2740
|
var import_lodash_es4 = require("lodash-es");
|
|
2741
2741
|
var import_center3 = require("@turf/center");
|
|
2742
|
-
var
|
|
2742
|
+
var THREE4 = __toESM(require("three"));
|
|
2743
2743
|
|
|
2744
2744
|
// src/IndoorMap/renderer/3d/Element3DRenderer.ts
|
|
2745
2745
|
var maptalks4 = __toESM(require("maptalks-gl"));
|
|
@@ -3084,7 +3084,7 @@ var DEFAULT_POLYGON_OPTION = {
|
|
|
3084
3084
|
offset: 0,
|
|
3085
3085
|
altitude: 0
|
|
3086
3086
|
};
|
|
3087
|
-
var get3DRendererOption = (featureType, category, options) => {
|
|
3087
|
+
var get3DRendererOption = (featureType, category, options = {}) => {
|
|
3088
3088
|
try {
|
|
3089
3089
|
const option = options[featureType] ?? element3DRendererOptions[featureType];
|
|
3090
3090
|
return (category && option.byCategory?.[category]) ?? option?.default ?? DEFAULT_POLYGON_OPTION;
|
|
@@ -3545,6 +3545,12 @@ var Marker2DRenderer = class extends EventTarget {
|
|
|
3545
3545
|
marker.addTo(this.map);
|
|
3546
3546
|
return marker;
|
|
3547
3547
|
};
|
|
3548
|
+
createTextMarker = (position, label, options) => {
|
|
3549
|
+
return null;
|
|
3550
|
+
};
|
|
3551
|
+
createImageMarker = (position, src, options) => {
|
|
3552
|
+
return null;
|
|
3553
|
+
};
|
|
3548
3554
|
removeMarker = (marker) => {
|
|
3549
3555
|
marker.remove();
|
|
3550
3556
|
};
|
|
@@ -3556,6 +3562,7 @@ var Marker2DRenderer = class extends EventTarget {
|
|
|
3556
3562
|
|
|
3557
3563
|
// src/IndoorMap/renderer/3d/Marker3DRenderer.ts
|
|
3558
3564
|
var maptalks7 = __toESM(require("maptalks-gl"));
|
|
3565
|
+
var THREE3 = __toESM(require("three"));
|
|
3559
3566
|
|
|
3560
3567
|
// src/IndoorMap/renderer/3d/objects/TextSpriteMarker.ts
|
|
3561
3568
|
var import_maptalks8 = require("maptalks");
|
|
@@ -3755,21 +3762,35 @@ var TextSpriteMarker = class extends import_maptalks9.BaseObject {
|
|
|
3755
3762
|
};
|
|
3756
3763
|
|
|
3757
3764
|
// src/IndoorMap/renderer/3d/Marker3DRenderer.ts
|
|
3758
|
-
var HEIGHT_METER2 = 4;
|
|
3759
|
-
var MULTIORDINAL_HEIGHT_METER3 = 9;
|
|
3760
3765
|
var Marker3DRenderer = class extends EventTarget {
|
|
3761
3766
|
isReady = false;
|
|
3762
3767
|
threeLayer;
|
|
3763
3768
|
map;
|
|
3764
|
-
materialByKey;
|
|
3765
3769
|
constructor(map, options, layer) {
|
|
3766
3770
|
super();
|
|
3767
3771
|
this.map = map;
|
|
3768
3772
|
this.threeLayer = layer;
|
|
3769
3773
|
}
|
|
3770
|
-
|
|
3774
|
+
createPointMaterialFromSvg(svgPath, size = 40) {
|
|
3775
|
+
return new THREE3.PointsMaterial({
|
|
3776
|
+
size,
|
|
3777
|
+
sizeAttenuation: false,
|
|
3778
|
+
// Always same size in screen pixels (Screen pixel)
|
|
3779
|
+
// color: fillStyle,
|
|
3780
|
+
alphaTest: 0.5,
|
|
3781
|
+
// vertexColors: THREE.VertexColors,
|
|
3782
|
+
// color: 0xffffff,
|
|
3783
|
+
transparent: true,
|
|
3784
|
+
blending: THREE3.NormalBlending,
|
|
3785
|
+
depthTest: true,
|
|
3786
|
+
// POI is hidden behind building
|
|
3787
|
+
depthWrite: true,
|
|
3788
|
+
map: new THREE3.TextureLoader().load(svgPath)
|
|
3789
|
+
});
|
|
3790
|
+
}
|
|
3791
|
+
createTextMarker = (position, label, options) => {
|
|
3771
3792
|
const combinedOptions = {
|
|
3772
|
-
altitude:
|
|
3793
|
+
altitude: 0,
|
|
3773
3794
|
text: label,
|
|
3774
3795
|
...options ?? {}
|
|
3775
3796
|
};
|
|
@@ -3778,17 +3799,37 @@ var Marker3DRenderer = class extends EventTarget {
|
|
|
3778
3799
|
this.threeLayer.addMesh([marker]);
|
|
3779
3800
|
return marker;
|
|
3780
3801
|
};
|
|
3781
|
-
createImageMarker = () => {
|
|
3782
|
-
|
|
3783
|
-
|
|
3784
|
-
|
|
3802
|
+
createImageMarker = (position, src, options) => {
|
|
3803
|
+
const [lng, lat] = position;
|
|
3804
|
+
let meshes = [];
|
|
3805
|
+
const height = options.height ?? 0;
|
|
3806
|
+
const { leg, ...markerOptions } = options;
|
|
3807
|
+
const { color: legColor = "#000000", ...legOptions } = leg ?? {};
|
|
3808
|
+
const material = this.createPointMaterialFromSvg(src, 40);
|
|
3809
|
+
const marker = this.threeLayer.toPoint(new maptalks7.Coordinate(lng, lat), { height, ...markerOptions }, material);
|
|
3810
|
+
marker.getObject3d().renderOrder = 10;
|
|
3811
|
+
meshes.push(marker);
|
|
3812
|
+
if (options.leg) {
|
|
3813
|
+
const legMaterial = new THREE3.MeshLambertMaterial({ color: legColor, transparent: true });
|
|
3814
|
+
const leg2 = this.threeLayer.toBar(new maptalks7.Coordinate(lng, lat), { ...legOptions, height }, legMaterial);
|
|
3815
|
+
const legObj = leg2.getObject3d();
|
|
3816
|
+
legObj.traverse((o) => {
|
|
3817
|
+
if (o.isMesh && o.material) {
|
|
3818
|
+
o.material.depthWrite = false;
|
|
3819
|
+
o.material.depthTest = true;
|
|
3820
|
+
o.renderOrder = 0;
|
|
3821
|
+
}
|
|
3822
|
+
});
|
|
3823
|
+
meshes = [leg2, ...meshes];
|
|
3824
|
+
}
|
|
3825
|
+
this.threeLayer.addMesh(meshes);
|
|
3826
|
+
return meshes;
|
|
3785
3827
|
};
|
|
3786
3828
|
removeMarker = (marker) => {
|
|
3787
3829
|
marker.remove();
|
|
3788
3830
|
};
|
|
3789
3831
|
showMarkers(elements, ordinalDiff = 0) {
|
|
3790
3832
|
elements.forEach((element) => {
|
|
3791
|
-
element.setAltitude(ordinalDiff * MULTIORDINAL_HEIGHT_METER3);
|
|
3792
3833
|
element.show();
|
|
3793
3834
|
});
|
|
3794
3835
|
}
|
|
@@ -4327,7 +4368,11 @@ function inBBox(pt, bbox2) {
|
|
|
4327
4368
|
|
|
4328
4369
|
// src/IndoorMap/renderer/utils/findUnitOnPoint.ts
|
|
4329
4370
|
var findUnitOnPoint = (units, point2) => {
|
|
4330
|
-
|
|
4371
|
+
try {
|
|
4372
|
+
return units.find((unit) => booleanPointInPolygon(point2, polygon(unit.geometry.coordinates)));
|
|
4373
|
+
} catch (err) {
|
|
4374
|
+
return null;
|
|
4375
|
+
}
|
|
4331
4376
|
};
|
|
4332
4377
|
|
|
4333
4378
|
// src/IndoorMap/renderer/RendererManager.ts
|
|
@@ -4397,13 +4442,13 @@ var RendererManager = class extends EventTarget {
|
|
|
4397
4442
|
}
|
|
4398
4443
|
return bad;
|
|
4399
4444
|
}
|
|
4400
|
-
const ambientLight = new
|
|
4445
|
+
const ambientLight = new THREE4.AmbientLight(16777215, 0.3);
|
|
4401
4446
|
scene.add(ambientLight);
|
|
4402
4447
|
const dirColor = 16777215;
|
|
4403
|
-
const dllight = new
|
|
4448
|
+
const dllight = new THREE4.DirectionalLight(dirColor, 0.8);
|
|
4404
4449
|
dllight.position.set(0, -10, 20).normalize();
|
|
4405
4450
|
scene.add(dllight);
|
|
4406
|
-
const hemi = new
|
|
4451
|
+
const hemi = new THREE4.HemisphereLight(16777215, 4473924, 0.4);
|
|
4407
4452
|
scene.add(hemi);
|
|
4408
4453
|
_this.elementRenderer = new Element3DRenderer(map, options.elements);
|
|
4409
4454
|
_this.markerRenderer = new Marker3DRenderer(map, {}, threeLayer);
|
|
@@ -4486,7 +4531,7 @@ var RendererManager = class extends EventTarget {
|
|
|
4486
4531
|
return openings.find((o) => o.id === openingId);
|
|
4487
4532
|
}));
|
|
4488
4533
|
const innerElements = this.elementRenderer.createGeometry(unit);
|
|
4489
|
-
const wallElements =
|
|
4534
|
+
const wallElements = [];
|
|
4490
4535
|
if (innerElements || wallElements) {
|
|
4491
4536
|
const _innerElements = Array.isArray(innerElements) ? innerElements : [innerElements];
|
|
4492
4537
|
const _wallElements = Array.isArray(wallElements) ? wallElements : [wallElements];
|
|
@@ -4541,10 +4586,12 @@ var RendererManager = class extends EventTarget {
|
|
|
4541
4586
|
for (const label of groundLabels) {
|
|
4542
4587
|
const center2 = (0, import_center3.center)(polygon(label.geometry.coordinates)).geometry.coordinates;
|
|
4543
4588
|
const unit = findUnitOnPoint(units, center2);
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4589
|
+
if (unit) {
|
|
4590
|
+
const element = this.elementRenderer.createGroundLabel(label, unit);
|
|
4591
|
+
if (element) {
|
|
4592
|
+
const _elements = Array.isArray(element) ? element : [element];
|
|
4593
|
+
this.addElementsToManager(label.id, _elements, label.properties.ordinal);
|
|
4594
|
+
}
|
|
4548
4595
|
}
|
|
4549
4596
|
}
|
|
4550
4597
|
if (this.options.type === "3D") {
|
|
@@ -4626,10 +4673,11 @@ var RendererManager = class extends EventTarget {
|
|
|
4626
4673
|
this.markerRenderer.hideMarkers(markers, ordinal);
|
|
4627
4674
|
}
|
|
4628
4675
|
};
|
|
4629
|
-
createMarker(coordinate, ordinal,
|
|
4630
|
-
const
|
|
4676
|
+
createMarker(type, coordinate, ordinal, textOrPath, options) {
|
|
4677
|
+
const meshes = type === "text" ? this.markerRenderer.createTextMarker(coordinate, textOrPath, options) : this.markerRenderer.createImageMarker(coordinate, textOrPath, options);
|
|
4631
4678
|
const markerId = `${this.markersMap.size + 1}`;
|
|
4632
|
-
|
|
4679
|
+
const markerMeshes = Array.isArray(meshes) ? meshes : [meshes];
|
|
4680
|
+
this._addMarkersToManager(markerId, markerMeshes, ordinal);
|
|
4633
4681
|
}
|
|
4634
4682
|
clearMarkers() {
|
|
4635
4683
|
for (const [markerId, marker] of this.markersMap) {
|
|
@@ -4769,6 +4817,7 @@ var IndoorMap = class extends EventTarget {
|
|
|
4769
4817
|
this.#dataClient = value;
|
|
4770
4818
|
if (!this.options.camera?.defaultView?.center) {
|
|
4771
4819
|
this.#dataClient.filterByType("venue").then((venues) => {
|
|
4820
|
+
this.#venues = venues;
|
|
4772
4821
|
const venueCenters = (0, import_center4.default)(featureCollection(venues));
|
|
4773
4822
|
const [x, y] = venueCenters.geometry.coordinates;
|
|
4774
4823
|
const center2 = new import_maptalks_gl.Coordinate(x, y);
|