venue-js 1.2.0-next.8 → 1.2.0-next.9
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 +16 -6
- package/dist/index.d.ts +16 -6
- package/dist/index.js +108 -29
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +105 -26
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -777,7 +777,7 @@ function isNumber(num) {
|
|
|
777
777
|
import turfDistance from "@turf/distance";
|
|
778
778
|
import turfCenter3 from "@turf/center";
|
|
779
779
|
import { PerspectiveCamera } from "three";
|
|
780
|
-
import { ThreeLayer as
|
|
780
|
+
import { ThreeLayer as ThreeLayer4 } from "maptalks.three";
|
|
781
781
|
|
|
782
782
|
// src/IndoorMap/constants.ts
|
|
783
783
|
var defaultLayerOption = { enableAltitude: true };
|
|
@@ -3103,6 +3103,7 @@ var CameraManager = class {
|
|
|
3103
3103
|
};
|
|
3104
3104
|
|
|
3105
3105
|
// src/IndoorMap/renderer/RendererManager.ts
|
|
3106
|
+
import _isFunction from "lodash/isFunction";
|
|
3106
3107
|
import _min from "lodash/min";
|
|
3107
3108
|
import { center as turfCenter2 } from "@turf/center";
|
|
3108
3109
|
import * as THREE3 from "three";
|
|
@@ -3110,6 +3111,7 @@ import * as THREE3 from "three";
|
|
|
3110
3111
|
// src/IndoorMap/renderer/3d/Element3DRenderer.ts
|
|
3111
3112
|
import * as maptalks4 from "maptalks-gl";
|
|
3112
3113
|
import * as THREE from "three";
|
|
3114
|
+
import { BaseObject as BaseObject5 } from "maptalks.three";
|
|
3113
3115
|
import turfBuffer2 from "@turf/buffer";
|
|
3114
3116
|
|
|
3115
3117
|
// src/IndoorMap/renderer/3d/element3DRendererOptions.ts
|
|
@@ -3160,6 +3162,7 @@ var Element3DRenderer = class extends EventTarget {
|
|
|
3160
3162
|
map;
|
|
3161
3163
|
gltfLayer;
|
|
3162
3164
|
threeLayer;
|
|
3165
|
+
scene;
|
|
3163
3166
|
// private dracoLoader: DRACOLoader
|
|
3164
3167
|
lineMaterial;
|
|
3165
3168
|
materialByColorMap;
|
|
@@ -3291,6 +3294,9 @@ var Element3DRenderer = class extends EventTarget {
|
|
|
3291
3294
|
treeMarker.addTo(this.gltfLayer);
|
|
3292
3295
|
return treeMarker;
|
|
3293
3296
|
}
|
|
3297
|
+
async createBuilding(coordinate, ordinal) {
|
|
3298
|
+
return Promise.resolve(null);
|
|
3299
|
+
}
|
|
3294
3300
|
createElement(f) {
|
|
3295
3301
|
switch (f.feature_type) {
|
|
3296
3302
|
default:
|
|
@@ -3312,6 +3318,34 @@ var Element3DRenderer = class extends EventTarget {
|
|
|
3312
3318
|
}
|
|
3313
3319
|
});
|
|
3314
3320
|
}
|
|
3321
|
+
createHighlightController(element) {
|
|
3322
|
+
if (!(element instanceof BaseObject5)) {
|
|
3323
|
+
return null;
|
|
3324
|
+
}
|
|
3325
|
+
switch (element.type) {
|
|
3326
|
+
case "ExtrudePolygon": {
|
|
3327
|
+
const mesh = element.getObject3d();
|
|
3328
|
+
const originalMaterial = mesh.material;
|
|
3329
|
+
const highlightMaterial = this.getOrCreateMaterialByColor("#ff0000");
|
|
3330
|
+
return {
|
|
3331
|
+
start: () => {
|
|
3332
|
+
mesh.material = highlightMaterial;
|
|
3333
|
+
},
|
|
3334
|
+
clear: () => {
|
|
3335
|
+
mesh.material = originalMaterial;
|
|
3336
|
+
}
|
|
3337
|
+
};
|
|
3338
|
+
}
|
|
3339
|
+
default: {
|
|
3340
|
+
return {
|
|
3341
|
+
start() {
|
|
3342
|
+
},
|
|
3343
|
+
clear() {
|
|
3344
|
+
}
|
|
3345
|
+
};
|
|
3346
|
+
}
|
|
3347
|
+
}
|
|
3348
|
+
}
|
|
3315
3349
|
render() {
|
|
3316
3350
|
this.threeLayer._needsUpdate = !this.threeLayer._needsUpdate;
|
|
3317
3351
|
if (this.threeLayer._needsUpdate) {
|
|
@@ -3419,7 +3453,10 @@ var Element2DRenderer = class extends EventTarget {
|
|
|
3419
3453
|
async createEscalator(f, coordinates) {
|
|
3420
3454
|
return Promise.resolve(null);
|
|
3421
3455
|
}
|
|
3422
|
-
async createTree(
|
|
3456
|
+
async createTree(coordinates) {
|
|
3457
|
+
return Promise.resolve(null);
|
|
3458
|
+
}
|
|
3459
|
+
async createBuilding(coordinate, ordinal) {
|
|
3423
3460
|
return Promise.resolve(null);
|
|
3424
3461
|
}
|
|
3425
3462
|
createElement = (imdfFeature) => {
|
|
@@ -3439,6 +3476,15 @@ var Element2DRenderer = class extends EventTarget {
|
|
|
3439
3476
|
element.hide();
|
|
3440
3477
|
});
|
|
3441
3478
|
}
|
|
3479
|
+
createHighlightController(element) {
|
|
3480
|
+
if (!(element instanceof maptalks5.Geometry)) return null;
|
|
3481
|
+
return {
|
|
3482
|
+
start() {
|
|
3483
|
+
},
|
|
3484
|
+
clear() {
|
|
3485
|
+
}
|
|
3486
|
+
};
|
|
3487
|
+
}
|
|
3442
3488
|
};
|
|
3443
3489
|
|
|
3444
3490
|
// src/IndoorMap/renderer/2d/Marker2DRenderer.ts
|
|
@@ -3476,7 +3522,7 @@ import * as maptalks7 from "maptalks-gl";
|
|
|
3476
3522
|
// src/IndoorMap/renderer/3d/objects/TextSpriteMarker.ts
|
|
3477
3523
|
import { Coordinate as Coordinate2, Util as Util4 } from "maptalks";
|
|
3478
3524
|
import * as THREE2 from "three";
|
|
3479
|
-
import { BaseObject as
|
|
3525
|
+
import { BaseObject as BaseObject6 } from "maptalks.three";
|
|
3480
3526
|
import { isNil, set } from "lodash";
|
|
3481
3527
|
|
|
3482
3528
|
// src/IndoorMap/renderer/utils/interpolateStops.ts
|
|
@@ -3514,7 +3560,7 @@ var OPTIONS4 = {
|
|
|
3514
3560
|
altitude: 0,
|
|
3515
3561
|
opacity: 1
|
|
3516
3562
|
};
|
|
3517
|
-
var TextSpriteMarker = class extends
|
|
3563
|
+
var TextSpriteMarker = class extends BaseObject6 {
|
|
3518
3564
|
#altitudeOffset = 0;
|
|
3519
3565
|
constructor(coordinate, options, layer, properties = {}) {
|
|
3520
3566
|
options = Util4.extend({}, OPTIONS4, options, { layer });
|
|
@@ -3782,6 +3828,9 @@ var RendererManager = class extends EventTarget {
|
|
|
3782
3828
|
options;
|
|
3783
3829
|
// Client for fetching data
|
|
3784
3830
|
#dataClient;
|
|
3831
|
+
#isClicked = false;
|
|
3832
|
+
#onClickElement = (e) => {
|
|
3833
|
+
};
|
|
3785
3834
|
/** Elements: Responsible for converting feature info elements and add to map */
|
|
3786
3835
|
elementRenderer;
|
|
3787
3836
|
markerRenderer;
|
|
@@ -3790,6 +3839,7 @@ var RendererManager = class extends EventTarget {
|
|
|
3790
3839
|
currentOrdinals;
|
|
3791
3840
|
markersMap;
|
|
3792
3841
|
markersByOrdinal;
|
|
3842
|
+
highlightControllers = [];
|
|
3793
3843
|
constructor(map, dataClient, options) {
|
|
3794
3844
|
super();
|
|
3795
3845
|
this.map = map;
|
|
@@ -3808,7 +3858,7 @@ var RendererManager = class extends EventTarget {
|
|
|
3808
3858
|
scene.add(ambientLight);
|
|
3809
3859
|
const dirColor = 16777215;
|
|
3810
3860
|
const dllight = new THREE3.DirectionalLight(dirColor, 0.8);
|
|
3811
|
-
dllight.position.set(0, -10,
|
|
3861
|
+
dllight.position.set(0, -10, 20).normalize();
|
|
3812
3862
|
scene.add(dllight);
|
|
3813
3863
|
const hemi = new THREE3.HemisphereLight(16777215, 4473924, 0.4);
|
|
3814
3864
|
scene.add(hemi);
|
|
@@ -3825,19 +3875,27 @@ var RendererManager = class extends EventTarget {
|
|
|
3825
3875
|
this.#createElements();
|
|
3826
3876
|
}
|
|
3827
3877
|
}
|
|
3878
|
+
set onClickElement(func) {
|
|
3879
|
+
this.#onClickElement = func;
|
|
3880
|
+
}
|
|
3881
|
+
handleClickElement = (e) => {
|
|
3882
|
+
console.log(`handleClickElement`, this.#isClicked);
|
|
3883
|
+
if (this.#isClicked) return;
|
|
3884
|
+
this.#isClicked = true;
|
|
3885
|
+
const onClickElement = this.#onClickElement;
|
|
3886
|
+
if (!_isFunction(onClickElement)) return;
|
|
3887
|
+
this.#onClickElement(e);
|
|
3888
|
+
this.#isClicked = false;
|
|
3889
|
+
};
|
|
3828
3890
|
getElementsByOrdinal = (ordinal) => {
|
|
3829
3891
|
const exist = this.elementsByOrdinal.get(ordinal);
|
|
3830
3892
|
if (!exist) this.elementsByOrdinal.set(ordinal, []);
|
|
3831
3893
|
return this.elementsByOrdinal.get(ordinal);
|
|
3832
3894
|
};
|
|
3833
|
-
getMarkersByOrdinal = (ordinal) => {
|
|
3834
|
-
const exist = this.markersByOrdinal.get(ordinal);
|
|
3835
|
-
if (!exist) this.markersByOrdinal.set(ordinal, []);
|
|
3836
|
-
return this.markersByOrdinal.get(ordinal);
|
|
3837
|
-
};
|
|
3838
3895
|
addElementsToManager = (id, elements, ordinal) => {
|
|
3839
3896
|
this.elementsMap.set(id, elements);
|
|
3840
3897
|
elements.forEach((el) => {
|
|
3898
|
+
el.on("click", (e) => this.handleClickElement(id));
|
|
3841
3899
|
this.getElementsByOrdinal(ordinal).push(el);
|
|
3842
3900
|
});
|
|
3843
3901
|
const inOrdinal = Array.isArray(this.currentOrdinals) ? this.currentOrdinals.includes(ordinal) : ordinal === this.currentOrdinals;
|
|
@@ -3847,18 +3905,6 @@ var RendererManager = class extends EventTarget {
|
|
|
3847
3905
|
this.elementRenderer.hideElements(elements, ordinal);
|
|
3848
3906
|
}
|
|
3849
3907
|
};
|
|
3850
|
-
addMarkersToManager = (id, markers, ordinal) => {
|
|
3851
|
-
this.markersMap.set(id, markers);
|
|
3852
|
-
markers.forEach((el) => {
|
|
3853
|
-
this.getMarkersByOrdinal(ordinal).push(el);
|
|
3854
|
-
});
|
|
3855
|
-
const inOrdinal = Array.isArray(this.currentOrdinals) ? this.currentOrdinals.includes(ordinal) : ordinal === this.currentOrdinals;
|
|
3856
|
-
if (inOrdinal) {
|
|
3857
|
-
this.markerRenderer.showMarkers(markers, ordinal);
|
|
3858
|
-
} else {
|
|
3859
|
-
this.markerRenderer.hideMarkers(markers, ordinal);
|
|
3860
|
-
}
|
|
3861
|
-
};
|
|
3862
3908
|
async #createElements() {
|
|
3863
3909
|
await delay(this.options.delayBeforeCreateElements ?? 0);
|
|
3864
3910
|
const levels = await this.#dataClient.filterByType("level", {
|
|
@@ -3960,14 +4006,48 @@ var RendererManager = class extends EventTarget {
|
|
|
3960
4006
|
}
|
|
3961
4007
|
}
|
|
3962
4008
|
}
|
|
4009
|
+
highlightElements = (elemIds, options) => {
|
|
4010
|
+
const { reset = true } = options ?? {};
|
|
4011
|
+
if (reset) {
|
|
4012
|
+
this.clearHighlightElements();
|
|
4013
|
+
}
|
|
4014
|
+
const elements = elemIds.map((id) => this.elementsMap.get(id)).flat();
|
|
4015
|
+
elements.forEach((element) => {
|
|
4016
|
+
const controller = this.elementRenderer.createHighlightController(element);
|
|
4017
|
+
controller.start();
|
|
4018
|
+
this.highlightControllers.push(controller);
|
|
4019
|
+
});
|
|
4020
|
+
};
|
|
4021
|
+
clearHighlightElements = () => {
|
|
4022
|
+
this.highlightControllers.forEach((controller) => {
|
|
4023
|
+
if (_isFunction(controller?.clear)) controller.clear();
|
|
4024
|
+
});
|
|
4025
|
+
};
|
|
3963
4026
|
/**
|
|
3964
4027
|
* ========================================================================
|
|
3965
4028
|
* Markers
|
|
3966
4029
|
* ======================================================================== */
|
|
4030
|
+
_getMarkersByOrdinal = (ordinal) => {
|
|
4031
|
+
const exist = this.markersByOrdinal.get(ordinal);
|
|
4032
|
+
if (!exist) this.markersByOrdinal.set(ordinal, []);
|
|
4033
|
+
return this.markersByOrdinal.get(ordinal);
|
|
4034
|
+
};
|
|
4035
|
+
_addMarkersToManager = (id, markers, ordinal) => {
|
|
4036
|
+
this.markersMap.set(id, markers);
|
|
4037
|
+
markers.forEach((el) => {
|
|
4038
|
+
this._getMarkersByOrdinal(ordinal).push(el);
|
|
4039
|
+
});
|
|
4040
|
+
const inOrdinal = Array.isArray(this.currentOrdinals) ? this.currentOrdinals.includes(ordinal) : ordinal === this.currentOrdinals;
|
|
4041
|
+
if (inOrdinal) {
|
|
4042
|
+
this.markerRenderer.showMarkers(markers, ordinal);
|
|
4043
|
+
} else {
|
|
4044
|
+
this.markerRenderer.hideMarkers(markers, ordinal);
|
|
4045
|
+
}
|
|
4046
|
+
};
|
|
3967
4047
|
createMarker(coordinate, ordinal, text, options) {
|
|
3968
4048
|
const marker = this.markerRenderer.createMarker(coordinate, ordinal, text, options);
|
|
3969
4049
|
const markerId = `${this.markersMap.size + 1}`;
|
|
3970
|
-
this.
|
|
4050
|
+
this._addMarkersToManager(markerId, [marker], ordinal);
|
|
3971
4051
|
}
|
|
3972
4052
|
clearMarkers() {
|
|
3973
4053
|
for (const [markerId, marker] of this.markersMap) {
|
|
@@ -4065,7 +4145,7 @@ var IndoorMap = class extends EventTarget {
|
|
|
4065
4145
|
layers: []
|
|
4066
4146
|
});
|
|
4067
4147
|
const groupLayer = new GroupGLLayer("group", [], {}).addTo(this.map);
|
|
4068
|
-
const threeLayer = new
|
|
4148
|
+
const threeLayer = new ThreeLayer4("three", {
|
|
4069
4149
|
forceRenderOnMoving: true,
|
|
4070
4150
|
forceRenderOnRotating: true
|
|
4071
4151
|
});
|
|
@@ -4167,7 +4247,7 @@ var IndoorMap = class extends EventTarget {
|
|
|
4167
4247
|
this.map.setDevicePixelRatio(value);
|
|
4168
4248
|
}
|
|
4169
4249
|
set onClickElement(func) {
|
|
4170
|
-
this
|
|
4250
|
+
this.rendererManager.onClickElement = func;
|
|
4171
4251
|
}
|
|
4172
4252
|
set locale(value) {
|
|
4173
4253
|
this.#locale = value || defaultOptions.locale;
|
|
@@ -4216,7 +4296,6 @@ var IndoorMap = class extends EventTarget {
|
|
|
4216
4296
|
} = this.#styler;
|
|
4217
4297
|
let elements = {};
|
|
4218
4298
|
let object3ds = [];
|
|
4219
|
-
const scene = this.threeLayer.getScene();
|
|
4220
4299
|
for (const feature2 of this.#features) {
|
|
4221
4300
|
try {
|
|
4222
4301
|
const { feature_type: featureType, properties, id } = feature2;
|