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.mjs
CHANGED
|
@@ -2683,7 +2683,7 @@ var CameraManager = class {
|
|
|
2683
2683
|
// src/IndoorMap/renderer/RendererManager.ts
|
|
2684
2684
|
import { min, compact as compact3, isFunction } from "lodash-es";
|
|
2685
2685
|
import { center as turfCenter2 } from "@turf/center";
|
|
2686
|
-
import * as
|
|
2686
|
+
import * as THREE4 from "three";
|
|
2687
2687
|
|
|
2688
2688
|
// src/IndoorMap/renderer/3d/Element3DRenderer.ts
|
|
2689
2689
|
import * as maptalks4 from "maptalks-gl";
|
|
@@ -3032,7 +3032,7 @@ var DEFAULT_POLYGON_OPTION = {
|
|
|
3032
3032
|
offset: 0,
|
|
3033
3033
|
altitude: 0
|
|
3034
3034
|
};
|
|
3035
|
-
var get3DRendererOption = (featureType, category, options) => {
|
|
3035
|
+
var get3DRendererOption = (featureType, category, options = {}) => {
|
|
3036
3036
|
try {
|
|
3037
3037
|
const option = options[featureType] ?? element3DRendererOptions[featureType];
|
|
3038
3038
|
return (category && option.byCategory?.[category]) ?? option?.default ?? DEFAULT_POLYGON_OPTION;
|
|
@@ -3493,6 +3493,12 @@ var Marker2DRenderer = class extends EventTarget {
|
|
|
3493
3493
|
marker.addTo(this.map);
|
|
3494
3494
|
return marker;
|
|
3495
3495
|
};
|
|
3496
|
+
createTextMarker = (position, label, options) => {
|
|
3497
|
+
return null;
|
|
3498
|
+
};
|
|
3499
|
+
createImageMarker = (position, src, options) => {
|
|
3500
|
+
return null;
|
|
3501
|
+
};
|
|
3496
3502
|
removeMarker = (marker) => {
|
|
3497
3503
|
marker.remove();
|
|
3498
3504
|
};
|
|
@@ -3504,6 +3510,7 @@ var Marker2DRenderer = class extends EventTarget {
|
|
|
3504
3510
|
|
|
3505
3511
|
// src/IndoorMap/renderer/3d/Marker3DRenderer.ts
|
|
3506
3512
|
import * as maptalks7 from "maptalks-gl";
|
|
3513
|
+
import * as THREE3 from "three";
|
|
3507
3514
|
|
|
3508
3515
|
// src/IndoorMap/renderer/3d/objects/TextSpriteMarker.ts
|
|
3509
3516
|
import { Coordinate as Coordinate2, Util as Util4 } from "maptalks";
|
|
@@ -3703,21 +3710,35 @@ var TextSpriteMarker = class extends BaseObject6 {
|
|
|
3703
3710
|
};
|
|
3704
3711
|
|
|
3705
3712
|
// src/IndoorMap/renderer/3d/Marker3DRenderer.ts
|
|
3706
|
-
var HEIGHT_METER2 = 4;
|
|
3707
|
-
var MULTIORDINAL_HEIGHT_METER3 = 9;
|
|
3708
3713
|
var Marker3DRenderer = class extends EventTarget {
|
|
3709
3714
|
isReady = false;
|
|
3710
3715
|
threeLayer;
|
|
3711
3716
|
map;
|
|
3712
|
-
materialByKey;
|
|
3713
3717
|
constructor(map, options, layer) {
|
|
3714
3718
|
super();
|
|
3715
3719
|
this.map = map;
|
|
3716
3720
|
this.threeLayer = layer;
|
|
3717
3721
|
}
|
|
3718
|
-
|
|
3722
|
+
createPointMaterialFromSvg(svgPath, size = 40) {
|
|
3723
|
+
return new THREE3.PointsMaterial({
|
|
3724
|
+
size,
|
|
3725
|
+
sizeAttenuation: false,
|
|
3726
|
+
// Always same size in screen pixels (Screen pixel)
|
|
3727
|
+
// color: fillStyle,
|
|
3728
|
+
alphaTest: 0.5,
|
|
3729
|
+
// vertexColors: THREE.VertexColors,
|
|
3730
|
+
// color: 0xffffff,
|
|
3731
|
+
transparent: true,
|
|
3732
|
+
blending: THREE3.NormalBlending,
|
|
3733
|
+
depthTest: true,
|
|
3734
|
+
// POI is hidden behind building
|
|
3735
|
+
depthWrite: true,
|
|
3736
|
+
map: new THREE3.TextureLoader().load(svgPath)
|
|
3737
|
+
});
|
|
3738
|
+
}
|
|
3739
|
+
createTextMarker = (position, label, options) => {
|
|
3719
3740
|
const combinedOptions = {
|
|
3720
|
-
altitude:
|
|
3741
|
+
altitude: 0,
|
|
3721
3742
|
text: label,
|
|
3722
3743
|
...options ?? {}
|
|
3723
3744
|
};
|
|
@@ -3726,17 +3747,37 @@ var Marker3DRenderer = class extends EventTarget {
|
|
|
3726
3747
|
this.threeLayer.addMesh([marker]);
|
|
3727
3748
|
return marker;
|
|
3728
3749
|
};
|
|
3729
|
-
createImageMarker = () => {
|
|
3730
|
-
|
|
3731
|
-
|
|
3732
|
-
|
|
3750
|
+
createImageMarker = (position, src, options) => {
|
|
3751
|
+
const [lng, lat] = position;
|
|
3752
|
+
let meshes = [];
|
|
3753
|
+
const height = options.height ?? 0;
|
|
3754
|
+
const { leg, ...markerOptions } = options;
|
|
3755
|
+
const { color: legColor = "#000000", ...legOptions } = leg ?? {};
|
|
3756
|
+
const material = this.createPointMaterialFromSvg(src, 40);
|
|
3757
|
+
const marker = this.threeLayer.toPoint(new maptalks7.Coordinate(lng, lat), { height, ...markerOptions }, material);
|
|
3758
|
+
marker.getObject3d().renderOrder = 10;
|
|
3759
|
+
meshes.push(marker);
|
|
3760
|
+
if (options.leg) {
|
|
3761
|
+
const legMaterial = new THREE3.MeshLambertMaterial({ color: legColor, transparent: true });
|
|
3762
|
+
const leg2 = this.threeLayer.toBar(new maptalks7.Coordinate(lng, lat), { ...legOptions, height }, legMaterial);
|
|
3763
|
+
const legObj = leg2.getObject3d();
|
|
3764
|
+
legObj.traverse((o) => {
|
|
3765
|
+
if (o.isMesh && o.material) {
|
|
3766
|
+
o.material.depthWrite = false;
|
|
3767
|
+
o.material.depthTest = true;
|
|
3768
|
+
o.renderOrder = 0;
|
|
3769
|
+
}
|
|
3770
|
+
});
|
|
3771
|
+
meshes = [leg2, ...meshes];
|
|
3772
|
+
}
|
|
3773
|
+
this.threeLayer.addMesh(meshes);
|
|
3774
|
+
return meshes;
|
|
3733
3775
|
};
|
|
3734
3776
|
removeMarker = (marker) => {
|
|
3735
3777
|
marker.remove();
|
|
3736
3778
|
};
|
|
3737
3779
|
showMarkers(elements, ordinalDiff = 0) {
|
|
3738
3780
|
elements.forEach((element) => {
|
|
3739
|
-
element.setAltitude(ordinalDiff * MULTIORDINAL_HEIGHT_METER3);
|
|
3740
3781
|
element.show();
|
|
3741
3782
|
});
|
|
3742
3783
|
}
|
|
@@ -4275,7 +4316,11 @@ function inBBox(pt, bbox2) {
|
|
|
4275
4316
|
|
|
4276
4317
|
// src/IndoorMap/renderer/utils/findUnitOnPoint.ts
|
|
4277
4318
|
var findUnitOnPoint = (units, point2) => {
|
|
4278
|
-
|
|
4319
|
+
try {
|
|
4320
|
+
return units.find((unit) => booleanPointInPolygon(point2, polygon(unit.geometry.coordinates)));
|
|
4321
|
+
} catch (err) {
|
|
4322
|
+
return null;
|
|
4323
|
+
}
|
|
4279
4324
|
};
|
|
4280
4325
|
|
|
4281
4326
|
// src/IndoorMap/renderer/RendererManager.ts
|
|
@@ -4345,13 +4390,13 @@ var RendererManager = class extends EventTarget {
|
|
|
4345
4390
|
}
|
|
4346
4391
|
return bad;
|
|
4347
4392
|
}
|
|
4348
|
-
const ambientLight = new
|
|
4393
|
+
const ambientLight = new THREE4.AmbientLight(16777215, 0.3);
|
|
4349
4394
|
scene.add(ambientLight);
|
|
4350
4395
|
const dirColor = 16777215;
|
|
4351
|
-
const dllight = new
|
|
4396
|
+
const dllight = new THREE4.DirectionalLight(dirColor, 0.8);
|
|
4352
4397
|
dllight.position.set(0, -10, 20).normalize();
|
|
4353
4398
|
scene.add(dllight);
|
|
4354
|
-
const hemi = new
|
|
4399
|
+
const hemi = new THREE4.HemisphereLight(16777215, 4473924, 0.4);
|
|
4355
4400
|
scene.add(hemi);
|
|
4356
4401
|
_this.elementRenderer = new Element3DRenderer(map, options.elements);
|
|
4357
4402
|
_this.markerRenderer = new Marker3DRenderer(map, {}, threeLayer);
|
|
@@ -4434,7 +4479,7 @@ var RendererManager = class extends EventTarget {
|
|
|
4434
4479
|
return openings.find((o) => o.id === openingId);
|
|
4435
4480
|
}));
|
|
4436
4481
|
const innerElements = this.elementRenderer.createGeometry(unit);
|
|
4437
|
-
const wallElements =
|
|
4482
|
+
const wallElements = [];
|
|
4438
4483
|
if (innerElements || wallElements) {
|
|
4439
4484
|
const _innerElements = Array.isArray(innerElements) ? innerElements : [innerElements];
|
|
4440
4485
|
const _wallElements = Array.isArray(wallElements) ? wallElements : [wallElements];
|
|
@@ -4489,10 +4534,12 @@ var RendererManager = class extends EventTarget {
|
|
|
4489
4534
|
for (const label of groundLabels) {
|
|
4490
4535
|
const center2 = turfCenter2(polygon(label.geometry.coordinates)).geometry.coordinates;
|
|
4491
4536
|
const unit = findUnitOnPoint(units, center2);
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4537
|
+
if (unit) {
|
|
4538
|
+
const element = this.elementRenderer.createGroundLabel(label, unit);
|
|
4539
|
+
if (element) {
|
|
4540
|
+
const _elements = Array.isArray(element) ? element : [element];
|
|
4541
|
+
this.addElementsToManager(label.id, _elements, label.properties.ordinal);
|
|
4542
|
+
}
|
|
4496
4543
|
}
|
|
4497
4544
|
}
|
|
4498
4545
|
if (this.options.type === "3D") {
|
|
@@ -4574,10 +4621,11 @@ var RendererManager = class extends EventTarget {
|
|
|
4574
4621
|
this.markerRenderer.hideMarkers(markers, ordinal);
|
|
4575
4622
|
}
|
|
4576
4623
|
};
|
|
4577
|
-
createMarker(coordinate, ordinal,
|
|
4578
|
-
const
|
|
4624
|
+
createMarker(type, coordinate, ordinal, textOrPath, options) {
|
|
4625
|
+
const meshes = type === "text" ? this.markerRenderer.createTextMarker(coordinate, textOrPath, options) : this.markerRenderer.createImageMarker(coordinate, textOrPath, options);
|
|
4579
4626
|
const markerId = `${this.markersMap.size + 1}`;
|
|
4580
|
-
|
|
4627
|
+
const markerMeshes = Array.isArray(meshes) ? meshes : [meshes];
|
|
4628
|
+
this._addMarkersToManager(markerId, markerMeshes, ordinal);
|
|
4581
4629
|
}
|
|
4582
4630
|
clearMarkers() {
|
|
4583
4631
|
for (const [markerId, marker] of this.markersMap) {
|
|
@@ -4717,6 +4765,7 @@ var IndoorMap = class extends EventTarget {
|
|
|
4717
4765
|
this.#dataClient = value;
|
|
4718
4766
|
if (!this.options.camera?.defaultView?.center) {
|
|
4719
4767
|
this.#dataClient.filterByType("venue").then((venues) => {
|
|
4768
|
+
this.#venues = venues;
|
|
4720
4769
|
const venueCenters = turfCenter3(featureCollection(venues));
|
|
4721
4770
|
const [x, y] = venueCenters.geometry.coordinates;
|
|
4722
4771
|
const center2 = new Coordinate4(x, y);
|