@mapless/core 1.0.7 → 1.0.11
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.js +500 -13
- package/dist/types/Mapless/mana/movable.d.ts +19 -3
- package/dist/types/Mapless/mana/movable.d.ts.map +1 -1
- package/dist/types/Mapless/mana-3d/airspace.d.ts +13 -0
- package/dist/types/Mapless/mana-3d/airspace.d.ts.map +1 -1
- package/dist/types/Mapless/mana-3d/mapModel.d.ts +22 -0
- package/dist/types/Mapless/mana-3d/mapModel.d.ts.map +1 -1
- package/dist/types/Mapless/mana-three/index.d.ts +2 -1
- package/dist/types/Mapless/mana-three/index.d.ts.map +1 -1
- package/dist/types/Mapless/mana-three/instancedModel.d.ts +127 -0
- package/dist/types/Mapless/mana-three/instancedModel.d.ts.map +1 -0
- package/dist/types/Mapless/mana-three/three.d.ts +13 -1
- package/dist/types/Mapless/mana-three/three.d.ts.map +1 -1
- package/dist/types/Mapless/types.d.ts +20 -0
- package/dist/types/Mapless/types.d.ts.map +1 -1
- package/dist/types/Three/MapThree.d.ts +39 -0
- package/dist/types/Three/MapThree.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { area as turf_area, center as turf_center, centroid, circle, distance as turf_distance, ellipse, length as turf_length, pointsWithinPolygon, polygon as turf_polygon } from "@turf/turf";
|
|
2
2
|
import mapbox_gl, { LngLat, MapMouseEvent, Marker, MercatorCoordinate, Popup } from "mapbox-gl";
|
|
3
|
-
import { AmbientLight, AnimationMixer, BoxGeometry, BoxHelper, BufferGeometry, CatmullRomCurve3, Clock, Color, ConeGeometry, CurvePath, CylinderGeometry, DirectionalLight, DoubleSide, Group, Line, LineBasicMaterial, LineCurve3, LoopRepeat, Matrix4, Mesh, MeshBasicMaterial, PerspectiveCamera, PointLight, Scene, SphereGeometry, SpotLight, TorusGeometry, TubeGeometry, Vector3, WebGLRenderer } from "three";
|
|
3
|
+
import { AmbientLight, AnimationMixer, BoxGeometry, BoxHelper, BufferGeometry, CatmullRomCurve3, Clock, Color, ConeGeometry, CurvePath, CylinderGeometry, DirectionalLight, DoubleSide, Group, InstancedMesh, Line, LineBasicMaterial, LineCurve3, LoopRepeat, Matrix4, Mesh, MeshBasicMaterial, Object3D, PerspectiveCamera, PointLight, Raycaster, Scene, SphereGeometry, SpotLight, TorusGeometry, TubeGeometry, Vector3, Vector4, WebGLRenderer } from "three";
|
|
4
4
|
import gcoord from "gcoord";
|
|
5
5
|
import mapbox_gl_draw from "@mapbox/mapbox-gl-draw";
|
|
6
6
|
import "@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css";
|
|
7
|
-
import { GLTFLoader, Line2, LineGeometry, LineMaterial } from "three-stdlib";
|
|
7
|
+
import { DRACOLoader, GLTFLoader, Line2, LineGeometry, LineMaterial } from "three-stdlib";
|
|
8
8
|
class MapThree {
|
|
9
9
|
mapless = void 0;
|
|
10
10
|
scene = null;
|
|
@@ -16,6 +16,7 @@ class MapThree {
|
|
|
16
16
|
renderableObjects = new Map();
|
|
17
17
|
isInitialized = false;
|
|
18
18
|
customLayerId = null;
|
|
19
|
+
lastProjectionMatrix = null;
|
|
19
20
|
constructor(props){
|
|
20
21
|
const { mapless } = props;
|
|
21
22
|
this.mapless = mapless;
|
|
@@ -54,6 +55,7 @@ class MapThree {
|
|
|
54
55
|
renderableObj.mesh.visible = false;
|
|
55
56
|
});
|
|
56
57
|
this.camera.projectionMatrix = m;
|
|
58
|
+
this.lastProjectionMatrix = m.clone();
|
|
57
59
|
this.renderer.resetState();
|
|
58
60
|
this.renderer.render(this.scene, this.camera);
|
|
59
61
|
this.renderableObjects.forEach((renderableObj)=>{
|
|
@@ -317,6 +319,140 @@ class MapThree {
|
|
|
317
319
|
this.removeRenderableObject(id);
|
|
318
320
|
});
|
|
319
321
|
}
|
|
322
|
+
raycast(point, objects, tolerance = 30) {
|
|
323
|
+
if (!this.camera || !this.scene || !this.renderer) return null;
|
|
324
|
+
const map = this.mapless?.map;
|
|
325
|
+
if (!map) return null;
|
|
326
|
+
const mapContainer = map.getCanvas();
|
|
327
|
+
const ndcX = point.x / mapContainer.width * 2 - 1;
|
|
328
|
+
const ndcY = 2 * -(point.y / mapContainer.height) + 1;
|
|
329
|
+
const targetObjects = objects || Array.from(this.renderableObjects.values()).map((obj)=>obj.mesh);
|
|
330
|
+
let closestHit = null;
|
|
331
|
+
let minDistance = 1 / 0;
|
|
332
|
+
const screenPositions = new Map();
|
|
333
|
+
for (const targetObj of targetObjects){
|
|
334
|
+
const renderableObj = Array.from(this.renderableObjects.values()).find((obj)=>obj.mesh === targetObj);
|
|
335
|
+
if (renderableObj && this.lastProjectionMatrix) {
|
|
336
|
+
let l;
|
|
337
|
+
if (renderableObj.transform.matrix) l = renderableObj.transform.matrix.clone();
|
|
338
|
+
else {
|
|
339
|
+
l = new Matrix4().makeTranslation(renderableObj.transform.translateX, renderableObj.transform.translateY, renderableObj.transform.translateZ).scale(new Vector3(renderableObj.transform.scale, -renderableObj.transform.scale, renderableObj.transform.scale));
|
|
340
|
+
if (void 0 !== renderableObj.transform.rotateX || void 0 !== renderableObj.transform.rotateY || void 0 !== renderableObj.transform.rotateZ) {
|
|
341
|
+
const rotationX = new Matrix4().makeRotationAxis(new Vector3(1, 0, 0), renderableObj.transform.rotateX || 0);
|
|
342
|
+
const rotationY = new Matrix4().makeRotationAxis(new Vector3(0, 1, 0), renderableObj.transform.rotateY || 0);
|
|
343
|
+
const rotationZ = new Matrix4().makeRotationAxis(new Vector3(0, 0, 1), renderableObj.transform.rotateZ || 0);
|
|
344
|
+
l.multiply(rotationX).multiply(rotationY).multiply(rotationZ);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const mvpMatrix = this.lastProjectionMatrix.clone().multiply(l);
|
|
348
|
+
const inverseMVP = mvpMatrix.invert();
|
|
349
|
+
const nearPoint = new Vector4(ndcX, ndcY, -1, 1).applyMatrix4(inverseMVP);
|
|
350
|
+
nearPoint.divideScalar(nearPoint.w);
|
|
351
|
+
const farPoint = new Vector4(ndcX, ndcY, 1, 1).applyMatrix4(inverseMVP);
|
|
352
|
+
farPoint.divideScalar(farPoint.w);
|
|
353
|
+
const origin = new Vector3(nearPoint.x, nearPoint.y, nearPoint.z);
|
|
354
|
+
const direction = new Vector3(farPoint.x - nearPoint.x, farPoint.y - nearPoint.y, farPoint.z - nearPoint.z).normalize();
|
|
355
|
+
const raycaster = new Raycaster(origin, direction);
|
|
356
|
+
const intersects = raycaster.intersectObject(targetObj, true);
|
|
357
|
+
const centerPoint = new Vector4(0, 0, 0, 1).applyMatrix4(mvpMatrix);
|
|
358
|
+
const screenX = (centerPoint.x / centerPoint.w + 1) * 0.5 * mapContainer.width;
|
|
359
|
+
const screenY = (-centerPoint.y / centerPoint.w + 1) * 0.5 * mapContainer.height;
|
|
360
|
+
const depth = centerPoint.z / centerPoint.w;
|
|
361
|
+
const scale = renderableObj.transform.scale;
|
|
362
|
+
const screenRadius = 50 * scale / Math.abs(depth);
|
|
363
|
+
screenPositions.set(targetObj, {
|
|
364
|
+
x: screenX,
|
|
365
|
+
y: screenY,
|
|
366
|
+
radius: screenRadius
|
|
367
|
+
});
|
|
368
|
+
if (intersects.length > 0 && intersects[0].distance < minDistance) {
|
|
369
|
+
minDistance = intersects[0].distance;
|
|
370
|
+
closestHit = {
|
|
371
|
+
object: intersects[0].object,
|
|
372
|
+
distance: intersects[0].distance,
|
|
373
|
+
point: intersects[0].point
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
if (!closestHit) for (const [obj, screenPos] of screenPositions){
|
|
379
|
+
const dx = screenPos.x - point.x;
|
|
380
|
+
const dy = screenPos.y - point.y;
|
|
381
|
+
const distance = Math.sqrt(dx * dx + dy * dy);
|
|
382
|
+
if (distance < Math.max(screenPos.radius, tolerance)) return {
|
|
383
|
+
object: obj,
|
|
384
|
+
distance: 0,
|
|
385
|
+
point: new Vector3()
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
return closestHit;
|
|
389
|
+
}
|
|
390
|
+
registerRenderableObjectClick(id, onClick, tolerance = 30) {
|
|
391
|
+
const renderableObj = this.renderableObjects.get(id);
|
|
392
|
+
if (!renderableObj) {
|
|
393
|
+
console.warn(`RenderableObject with id "${id}" not found`);
|
|
394
|
+
return null;
|
|
395
|
+
}
|
|
396
|
+
const map = this.mapless?.map;
|
|
397
|
+
if (!map) {
|
|
398
|
+
console.warn('Map not initialized');
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
const handleClick = (e)=>{
|
|
402
|
+
map.triggerRepaint();
|
|
403
|
+
requestAnimationFrame(()=>{
|
|
404
|
+
const point = {
|
|
405
|
+
x: e.point.x,
|
|
406
|
+
y: e.point.y
|
|
407
|
+
};
|
|
408
|
+
const hit = this.raycast(point, [
|
|
409
|
+
renderableObj.mesh
|
|
410
|
+
], tolerance);
|
|
411
|
+
if (hit?.object) onClick(hit.object, hit.point);
|
|
412
|
+
});
|
|
413
|
+
};
|
|
414
|
+
map.on('click', handleClick);
|
|
415
|
+
return ()=>{
|
|
416
|
+
map.off('click', handleClick);
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
registerGlobalClick(onClick) {
|
|
420
|
+
const map = this.mapless?.map;
|
|
421
|
+
if (!map) {
|
|
422
|
+
console.warn('Map not initialized');
|
|
423
|
+
return null;
|
|
424
|
+
}
|
|
425
|
+
const handleClick = (e)=>{
|
|
426
|
+
const point = {
|
|
427
|
+
x: e.point.x,
|
|
428
|
+
y: e.point.y
|
|
429
|
+
};
|
|
430
|
+
const hit = this.raycast(point);
|
|
431
|
+
if (hit) {
|
|
432
|
+
let renderableId;
|
|
433
|
+
for (const [id, obj] of this.renderableObjects)if (this.isObjectInHierarchy(hit.object, obj.mesh)) {
|
|
434
|
+
renderableId = id;
|
|
435
|
+
break;
|
|
436
|
+
}
|
|
437
|
+
onClick({
|
|
438
|
+
...hit,
|
|
439
|
+
renderableId
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
};
|
|
443
|
+
map.on('click', handleClick);
|
|
444
|
+
return ()=>{
|
|
445
|
+
map.off('click', handleClick);
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
isObjectInHierarchy(obj, root) {
|
|
449
|
+
let current = obj;
|
|
450
|
+
while(current){
|
|
451
|
+
if (current === root) return true;
|
|
452
|
+
current = current.parent;
|
|
453
|
+
}
|
|
454
|
+
return false;
|
|
455
|
+
}
|
|
320
456
|
dispose() {
|
|
321
457
|
this.clear();
|
|
322
458
|
this.clearRenderableObjects();
|
|
@@ -13781,8 +13917,15 @@ const stateColorRule = [
|
|
|
13781
13917
|
];
|
|
13782
13918
|
class MovableManager extends EmitManager {
|
|
13783
13919
|
movables = void 0;
|
|
13920
|
+
iconRotationAlignment = 'map';
|
|
13921
|
+
showNameByDefault;
|
|
13922
|
+
iconBaseSize;
|
|
13923
|
+
circleBaseRadius;
|
|
13784
13924
|
constructor(mapless, options){
|
|
13785
13925
|
super(mapless, options, 'movable');
|
|
13926
|
+
this.showNameByDefault = options?.showNameByDefault ?? false;
|
|
13927
|
+
this.iconBaseSize = options?.iconBaseSize ?? 0.3;
|
|
13928
|
+
this.circleBaseRadius = options?.circleBaseRadius ?? 8;
|
|
13786
13929
|
this.onInitialized();
|
|
13787
13930
|
this.setupClickHandler();
|
|
13788
13931
|
this.setupHoverHandler();
|
|
@@ -13849,8 +13992,8 @@ class MovableManager extends EmitManager {
|
|
|
13849
13992
|
],
|
|
13850
13993
|
true
|
|
13851
13994
|
],
|
|
13852
|
-
0.
|
|
13853
|
-
|
|
13995
|
+
this.iconBaseSize + 0.1,
|
|
13996
|
+
this.iconBaseSize
|
|
13854
13997
|
],
|
|
13855
13998
|
'icon-rotate': [
|
|
13856
13999
|
'get',
|
|
@@ -13858,8 +14001,11 @@ class MovableManager extends EmitManager {
|
|
|
13858
14001
|
],
|
|
13859
14002
|
'icon-allow-overlap': true,
|
|
13860
14003
|
'icon-ignore-placement': true,
|
|
13861
|
-
'icon-rotation-alignment':
|
|
13862
|
-
'text-field': [
|
|
14004
|
+
'icon-rotation-alignment': this.iconRotationAlignment,
|
|
14005
|
+
'text-field': this.showNameByDefault ? [
|
|
14006
|
+
'get',
|
|
14007
|
+
'name'
|
|
14008
|
+
] : [
|
|
13863
14009
|
'case',
|
|
13864
14010
|
[
|
|
13865
14011
|
'==',
|
|
@@ -13927,8 +14073,8 @@ class MovableManager extends EmitManager {
|
|
|
13927
14073
|
],
|
|
13928
14074
|
true
|
|
13929
14075
|
],
|
|
13930
|
-
|
|
13931
|
-
|
|
14076
|
+
this.circleBaseRadius + 2,
|
|
14077
|
+
this.circleBaseRadius
|
|
13932
14078
|
],
|
|
13933
14079
|
'circle-color': stateColorRule,
|
|
13934
14080
|
'circle-stroke-width': [
|
|
@@ -14111,12 +14257,19 @@ class MovableManager extends EmitManager {
|
|
|
14111
14257
|
padding: padding ?? 50
|
|
14112
14258
|
});
|
|
14113
14259
|
}
|
|
14260
|
+
setIconRotationAlignment(alignment) {
|
|
14261
|
+
this.iconRotationAlignment = alignment;
|
|
14262
|
+
if (this.map && this.idHub?.detailLayerId) this.map.setLayoutProperty(this.idHub.detailLayerId, 'icon-rotation-alignment', alignment);
|
|
14263
|
+
}
|
|
14264
|
+
getIconRotationAlignment() {
|
|
14265
|
+
return this.iconRotationAlignment;
|
|
14266
|
+
}
|
|
14114
14267
|
destroy() {
|
|
14115
14268
|
super.destroy();
|
|
14116
14269
|
this.movables = void 0;
|
|
14117
14270
|
}
|
|
14118
14271
|
}
|
|
14119
|
-
const attachMovable = (mapless, name)=>mapless?.use(MovableManager, name);
|
|
14272
|
+
const attachMovable = (mapless, name, options)=>mapless?.use(MovableManager, name, options);
|
|
14120
14273
|
const getMovable = (mapless, name)=>mapless?.get(MovableManager, name);
|
|
14121
14274
|
const detachMovable = (mapless, name)=>mapless?.unuse(MovableManager, name);
|
|
14122
14275
|
const hasAzimuth = (station)=>maplessPreset.movableTypes.includes(station.category || '');
|
|
@@ -16674,6 +16827,21 @@ class AirspaceManager extends manager_Manager {
|
|
|
16674
16827
|
});
|
|
16675
16828
|
}
|
|
16676
16829
|
}
|
|
16830
|
+
setFillExtrusionVisible(visible) {
|
|
16831
|
+
if (this.map && this.idHub?.fillLayerId) this.map.setLayoutProperty(this.idHub.fillLayerId, 'visibility', visible ? 'visible' : 'none');
|
|
16832
|
+
}
|
|
16833
|
+
isFillExtrusionVisible() {
|
|
16834
|
+
if (this.map && this.idHub?.fillLayerId) {
|
|
16835
|
+
const visibility = this.map.getLayoutProperty(this.idHub.fillLayerId, 'visibility');
|
|
16836
|
+
return 'none' !== visibility;
|
|
16837
|
+
}
|
|
16838
|
+
return true;
|
|
16839
|
+
}
|
|
16840
|
+
toggleFillExtrusion() {
|
|
16841
|
+
const currentState = this.isFillExtrusionVisible();
|
|
16842
|
+
this.setFillExtrusionVisible(!currentState);
|
|
16843
|
+
return !currentState;
|
|
16844
|
+
}
|
|
16677
16845
|
destroy() {
|
|
16678
16846
|
super.destroy();
|
|
16679
16847
|
this.zones = {};
|
|
@@ -17182,6 +17350,47 @@ class MapModelManager extends EmitManager {
|
|
|
17182
17350
|
previousId
|
|
17183
17351
|
});
|
|
17184
17352
|
}
|
|
17353
|
+
hideLayer(id) {
|
|
17354
|
+
if (void 0 === id) return void this.models.forEach((modelData)=>{
|
|
17355
|
+
if (this.map?.getLayer(modelData.layerId)) this.map?.setLayoutProperty(modelData.layerId, 'visibility', 'none');
|
|
17356
|
+
});
|
|
17357
|
+
const modelData = this.models.get(id);
|
|
17358
|
+
if (!modelData) return;
|
|
17359
|
+
if (!this.map) return;
|
|
17360
|
+
if (this.map.getLayer(modelData.layerId)) this.map.setLayoutProperty(modelData.layerId, 'visibility', 'none');
|
|
17361
|
+
}
|
|
17362
|
+
showLayer(id) {
|
|
17363
|
+
if (void 0 === id) return void this.models.forEach((modelData)=>{
|
|
17364
|
+
if (this.map?.getLayer(modelData.layerId)) this.map?.setLayoutProperty(modelData.layerId, 'visibility', 'visible');
|
|
17365
|
+
});
|
|
17366
|
+
const modelData = this.models.get(id);
|
|
17367
|
+
if (!modelData) return;
|
|
17368
|
+
if (!this.map) return;
|
|
17369
|
+
if (this.map.getLayer(modelData.layerId)) this.map.setLayoutProperty(modelData.layerId, 'visibility', 'visible');
|
|
17370
|
+
}
|
|
17371
|
+
toggleLayer(id) {
|
|
17372
|
+
if (void 0 === id) {
|
|
17373
|
+
this.models.forEach((modelData)=>{
|
|
17374
|
+
const isVisible = this.isLayerVisible(modelData.id);
|
|
17375
|
+
if (isVisible) this.hideLayer(modelData.id);
|
|
17376
|
+
else this.showLayer(modelData.id);
|
|
17377
|
+
});
|
|
17378
|
+
return true;
|
|
17379
|
+
}
|
|
17380
|
+
const isVisible = this.isLayerVisible(id);
|
|
17381
|
+
if (isVisible) this.hideLayer(id);
|
|
17382
|
+
else this.showLayer(id);
|
|
17383
|
+
return !isVisible;
|
|
17384
|
+
}
|
|
17385
|
+
isLayerVisible(id) {
|
|
17386
|
+
const modelData = this.models.get(id);
|
|
17387
|
+
if (!modelData) return false;
|
|
17388
|
+
if (!this.map) return false;
|
|
17389
|
+
const layer = this.map.getLayer(modelData.layerId);
|
|
17390
|
+
if (!layer) return false;
|
|
17391
|
+
const visibility = layer.visibility;
|
|
17392
|
+
return 'none' !== visibility;
|
|
17393
|
+
}
|
|
17185
17394
|
destroy() {
|
|
17186
17395
|
if (this.map && this.globalClickHandler) this.map.off('click', this.globalClickHandler);
|
|
17187
17396
|
this.selectedModelId = null;
|
|
@@ -17600,6 +17809,260 @@ const curve3d = Curve3DManager;
|
|
|
17600
17809
|
const attachCurve3D = (mapless, name, options)=>mapless?.use(Curve3DManager, name, options);
|
|
17601
17810
|
const getCurve3D = (mapless, name)=>mapless?.get(Curve3DManager, name);
|
|
17602
17811
|
const detachCurve3D = (mapless, name)=>mapless?.unuse(Curve3DManager, name);
|
|
17812
|
+
class InstancedModelManager extends manager_Manager {
|
|
17813
|
+
scene = null;
|
|
17814
|
+
camera = null;
|
|
17815
|
+
renderer = null;
|
|
17816
|
+
customLayerId;
|
|
17817
|
+
isInitialized = false;
|
|
17818
|
+
instancedMeshes = new Map();
|
|
17819
|
+
rotationAngles = new Map();
|
|
17820
|
+
autoRotateEnabled = new Map();
|
|
17821
|
+
rotationSpeeds = new Map();
|
|
17822
|
+
renderCount = 0;
|
|
17823
|
+
constructor(mapless){
|
|
17824
|
+
super(mapless);
|
|
17825
|
+
this.map = mapless.map;
|
|
17826
|
+
this.customLayerId = `instanced-model-layer-${this.gmid}`;
|
|
17827
|
+
}
|
|
17828
|
+
initThree() {
|
|
17829
|
+
if (this.isInitialized || !this.map) return;
|
|
17830
|
+
const canvas = this.map.getCanvas();
|
|
17831
|
+
const gl = canvas.getContext('webgl2') || canvas.getContext('webgl');
|
|
17832
|
+
if (!gl) return void console.error('InstancedModelManager: WebGL context not available');
|
|
17833
|
+
this.scene = new Scene();
|
|
17834
|
+
this.camera = new PerspectiveCamera(75, canvas.width / canvas.height, 0.1, 10000);
|
|
17835
|
+
this.renderer = new WebGLRenderer({
|
|
17836
|
+
canvas: canvas,
|
|
17837
|
+
context: gl,
|
|
17838
|
+
antialias: false
|
|
17839
|
+
});
|
|
17840
|
+
this.renderer.autoClear = false;
|
|
17841
|
+
this.renderer.setClearColor(0x000000, 0);
|
|
17842
|
+
this.renderer.setPixelRatio(window.devicePixelRatio);
|
|
17843
|
+
const ambientLight = new AmbientLight(0xffffff, 0.6);
|
|
17844
|
+
this.scene.add(ambientLight);
|
|
17845
|
+
const directionalLight = new DirectionalLight(0xffffff, 0.8);
|
|
17846
|
+
directionalLight.position.set(0, -70, 100);
|
|
17847
|
+
this.scene.add(directionalLight);
|
|
17848
|
+
const directionalLight2 = new DirectionalLight(0xffffff, 0.5);
|
|
17849
|
+
directionalLight2.position.set(0, 70, 100);
|
|
17850
|
+
this.scene.add(directionalLight2);
|
|
17851
|
+
this.setupCustomLayer();
|
|
17852
|
+
this.isInitialized = true;
|
|
17853
|
+
console.log('InstancedModelManager: Initialized', {
|
|
17854
|
+
canvas: `${canvas.width}x${canvas.height}`,
|
|
17855
|
+
customLayerId: this.customLayerId
|
|
17856
|
+
});
|
|
17857
|
+
}
|
|
17858
|
+
setupCustomLayer() {
|
|
17859
|
+
if (!this.map) return;
|
|
17860
|
+
const customLayer = {
|
|
17861
|
+
id: this.customLayerId,
|
|
17862
|
+
type: 'custom',
|
|
17863
|
+
renderingMode: '3d',
|
|
17864
|
+
onAdd: ()=>{
|
|
17865
|
+
console.log('InstancedModelManager: Custom layer added');
|
|
17866
|
+
},
|
|
17867
|
+
render: (_gl, matrix)=>{
|
|
17868
|
+
if (!this.camera || !this.renderer || !this.scene) return;
|
|
17869
|
+
this.renderCount++;
|
|
17870
|
+
if (this.renderCount % 60 === 0) console.log('InstancedModelManager: Rendering', {
|
|
17871
|
+
frame: this.renderCount,
|
|
17872
|
+
instanceCount: this.instancedMeshes.size
|
|
17873
|
+
});
|
|
17874
|
+
this.updateAutoRotate();
|
|
17875
|
+
this.camera.projectionMatrix = new Matrix4().fromArray(matrix);
|
|
17876
|
+
_gl.enable(_gl.DEPTH_TEST);
|
|
17877
|
+
this.renderer.resetState();
|
|
17878
|
+
this.renderer.render(this.scene, this.camera);
|
|
17879
|
+
if (this.map) this.map.triggerRepaint();
|
|
17880
|
+
}
|
|
17881
|
+
};
|
|
17882
|
+
this.map.addLayer(customLayer);
|
|
17883
|
+
}
|
|
17884
|
+
updateAutoRotate() {
|
|
17885
|
+
this.autoRotateEnabled.forEach((enabled, id)=>{
|
|
17886
|
+
if (!enabled) return;
|
|
17887
|
+
const instancedMesh = this.instancedMeshes.get(id);
|
|
17888
|
+
const angles = this.rotationAngles.get(id);
|
|
17889
|
+
const speed = this.rotationSpeeds.get(id) || 0.01;
|
|
17890
|
+
if (!instancedMesh || !angles) return;
|
|
17891
|
+
const dummy = new Object3D();
|
|
17892
|
+
const count = instancedMesh.count;
|
|
17893
|
+
for(let i = 0; i < count; i++){
|
|
17894
|
+
instancedMesh.getMatrixAt(i, dummy.matrix);
|
|
17895
|
+
dummy.matrix.decompose(dummy.position, dummy.quaternion, dummy.scale);
|
|
17896
|
+
angles[i] += speed;
|
|
17897
|
+
dummy.rotation.set(0, 0, angles[i]);
|
|
17898
|
+
dummy.updateMatrix();
|
|
17899
|
+
instancedMesh.setMatrixAt(i, dummy.matrix);
|
|
17900
|
+
}
|
|
17901
|
+
instancedMesh.instanceMatrix.needsUpdate = true;
|
|
17902
|
+
});
|
|
17903
|
+
}
|
|
17904
|
+
generateInstances(config) {
|
|
17905
|
+
const instances = [];
|
|
17906
|
+
for(let i = 0; i < config.count; i++){
|
|
17907
|
+
const lngOffset = (Math.random() - 0.5) * config.spread * 2;
|
|
17908
|
+
const latOffset = (Math.random() - 0.5) * config.spread * 2;
|
|
17909
|
+
const altitude = 100 * Math.random() + 50;
|
|
17910
|
+
const rotation = Math.random() * Math.PI * 2;
|
|
17911
|
+
const scaleVariation = 0.8 + 0.4 * Math.random();
|
|
17912
|
+
instances.push({
|
|
17913
|
+
lngLat: [
|
|
17914
|
+
config.center[0] + lngOffset,
|
|
17915
|
+
config.center[1] + latOffset
|
|
17916
|
+
],
|
|
17917
|
+
altitude,
|
|
17918
|
+
rotation,
|
|
17919
|
+
scale: scaleVariation
|
|
17920
|
+
});
|
|
17921
|
+
}
|
|
17922
|
+
return instances;
|
|
17923
|
+
}
|
|
17924
|
+
async load(id, config) {
|
|
17925
|
+
this.initThree();
|
|
17926
|
+
if (!this.scene || !this.map) throw new Error('Three.js scene not initialized');
|
|
17927
|
+
this.remove(id);
|
|
17928
|
+
const dracoLoader = new DRACOLoader();
|
|
17929
|
+
dracoLoader.setDecoderPath('https://www.gstatic.com/draco/versioned/decoders/1.5.6/');
|
|
17930
|
+
const loader = new GLTFLoader();
|
|
17931
|
+
loader.setDRACOLoader(dracoLoader);
|
|
17932
|
+
try {
|
|
17933
|
+
console.log('InstancedModel: Loading model', config.url);
|
|
17934
|
+
const gltf = await new Promise((resolve, reject)=>{
|
|
17935
|
+
loader.load(config.url, resolve, void 0, reject);
|
|
17936
|
+
});
|
|
17937
|
+
const gltfScene = gltf.scene;
|
|
17938
|
+
let meshToUse = null;
|
|
17939
|
+
gltfScene.traverse((object)=>{
|
|
17940
|
+
if (object instanceof Mesh && !meshToUse) meshToUse = object;
|
|
17941
|
+
});
|
|
17942
|
+
if (!meshToUse) throw new Error('No mesh found in model');
|
|
17943
|
+
const mesh = meshToUse;
|
|
17944
|
+
const materialToUse = Array.isArray(mesh.material) ? mesh.material[0] : mesh.material;
|
|
17945
|
+
const instancedMesh = new InstancedMesh(mesh.geometry.clone(), materialToUse.clone(), config.count);
|
|
17946
|
+
instancedMesh.castShadow = true;
|
|
17947
|
+
instancedMesh.receiveShadow = true;
|
|
17948
|
+
if ('side' in instancedMesh.material) instancedMesh.material.side = DoubleSide;
|
|
17949
|
+
const instances = this.generateInstances(config);
|
|
17950
|
+
const angles = new Float32Array(config.count);
|
|
17951
|
+
const meterInMercator = mapbox_gl.MercatorCoordinate.fromLngLat(config.center, 0).meterInMercatorCoordinateUnits();
|
|
17952
|
+
console.log('InstancedModel: Creating instances', {
|
|
17953
|
+
instanceCount: config.count,
|
|
17954
|
+
center: config.center,
|
|
17955
|
+
scale: config.scale,
|
|
17956
|
+
meterInMercator,
|
|
17957
|
+
firstInstanceLngLat: instances[0].lngLat,
|
|
17958
|
+
firstInstanceAlt: instances[0].altitude
|
|
17959
|
+
});
|
|
17960
|
+
const dummy = new Object3D();
|
|
17961
|
+
instances.forEach((instance, i)=>{
|
|
17962
|
+
const mercator = mapbox_gl.MercatorCoordinate.fromLngLat(instance.lngLat, instance.altitude);
|
|
17963
|
+
dummy.position.set(mercator.x, mercator.y, mercator.z);
|
|
17964
|
+
dummy.rotation.set(0, 0, instance.rotation);
|
|
17965
|
+
const scale = meterInMercator * config.scale * instance.scale;
|
|
17966
|
+
dummy.scale.set(scale, -scale, scale);
|
|
17967
|
+
dummy.updateMatrix();
|
|
17968
|
+
instancedMesh.setMatrixAt(i, dummy.matrix);
|
|
17969
|
+
angles[i] = instance.rotation;
|
|
17970
|
+
});
|
|
17971
|
+
instancedMesh.instanceMatrix.needsUpdate = true;
|
|
17972
|
+
this.scene.add(instancedMesh);
|
|
17973
|
+
this.instancedMeshes.set(id, instancedMesh);
|
|
17974
|
+
this.rotationAngles.set(id, angles);
|
|
17975
|
+
this.autoRotateEnabled.set(id, config.autoRotate || false);
|
|
17976
|
+
this.rotationSpeeds.set(id, config.rotationSpeed || 0.01);
|
|
17977
|
+
console.log(`InstancedModel "${id}" loaded with ${config.count} instances`);
|
|
17978
|
+
} catch (error) {
|
|
17979
|
+
console.error(`Failed to load instanced model "${id}":`, error);
|
|
17980
|
+
throw error;
|
|
17981
|
+
}
|
|
17982
|
+
}
|
|
17983
|
+
enableAutoRotate(id, speed = 0.01) {
|
|
17984
|
+
this.autoRotateEnabled.set(id, true);
|
|
17985
|
+
this.rotationSpeeds.set(id, speed);
|
|
17986
|
+
}
|
|
17987
|
+
disableAutoRotate(id) {
|
|
17988
|
+
this.autoRotateEnabled.set(id, false);
|
|
17989
|
+
}
|
|
17990
|
+
updateInstance(id, index, lngLat, altitude) {
|
|
17991
|
+
const instancedMesh = this.instancedMeshes.get(id);
|
|
17992
|
+
if (!instancedMesh) return;
|
|
17993
|
+
const mercator = mapbox_gl.MercatorCoordinate.fromLngLat(lngLat, altitude);
|
|
17994
|
+
const dummy = new Object3D();
|
|
17995
|
+
instancedMesh.getMatrixAt(index, dummy.matrix);
|
|
17996
|
+
dummy.matrix.decompose(dummy.position, dummy.quaternion, dummy.scale);
|
|
17997
|
+
dummy.position.set(mercator.x, mercator.y, mercator.z);
|
|
17998
|
+
dummy.updateMatrix();
|
|
17999
|
+
instancedMesh.setMatrixAt(index, dummy.matrix);
|
|
18000
|
+
instancedMesh.instanceMatrix.needsUpdate = true;
|
|
18001
|
+
}
|
|
18002
|
+
setInstanceVisible(id, visible) {
|
|
18003
|
+
const instancedMesh = this.instancedMeshes.get(id);
|
|
18004
|
+
if (instancedMesh) instancedMesh.visible = visible;
|
|
18005
|
+
}
|
|
18006
|
+
setVisible(visible) {
|
|
18007
|
+
this.IsVisible = visible;
|
|
18008
|
+
this.instancedMeshes.forEach((mesh)=>{
|
|
18009
|
+
mesh.visible = visible;
|
|
18010
|
+
});
|
|
18011
|
+
}
|
|
18012
|
+
getInstanceCount(id) {
|
|
18013
|
+
const instancedMesh = this.instancedMeshes.get(id);
|
|
18014
|
+
return instancedMesh?.count || 0;
|
|
18015
|
+
}
|
|
18016
|
+
getIds() {
|
|
18017
|
+
return Array.from(this.instancedMeshes.keys());
|
|
18018
|
+
}
|
|
18019
|
+
remove(id) {
|
|
18020
|
+
const instancedMesh = this.instancedMeshes.get(id);
|
|
18021
|
+
if (!instancedMesh) return;
|
|
18022
|
+
if (this.scene) this.scene.remove(instancedMesh);
|
|
18023
|
+
instancedMesh.geometry.dispose();
|
|
18024
|
+
if (Array.isArray(instancedMesh.material)) instancedMesh.material.forEach((m)=>{
|
|
18025
|
+
m.dispose();
|
|
18026
|
+
});
|
|
18027
|
+
else instancedMesh.material.dispose();
|
|
18028
|
+
this.instancedMeshes.delete(id);
|
|
18029
|
+
this.rotationAngles.delete(id);
|
|
18030
|
+
this.autoRotateEnabled.delete(id);
|
|
18031
|
+
this.rotationSpeeds.delete(id);
|
|
18032
|
+
}
|
|
18033
|
+
clear() {
|
|
18034
|
+
const ids = this.getIds();
|
|
18035
|
+
ids.forEach((id)=>{
|
|
18036
|
+
this.remove(id);
|
|
18037
|
+
});
|
|
18038
|
+
}
|
|
18039
|
+
setColor(id, color) {
|
|
18040
|
+
const instancedMesh = this.instancedMeshes.get(id);
|
|
18041
|
+
if (!instancedMesh) return;
|
|
18042
|
+
const meshColor = 'string' == typeof color ? new Color(color) : color;
|
|
18043
|
+
if (Array.isArray(instancedMesh.material)) instancedMesh.material.forEach((m)=>{
|
|
18044
|
+
if ('color' in m) m.color.set(meshColor);
|
|
18045
|
+
});
|
|
18046
|
+
else if ('color' in instancedMesh.material) instancedMesh.material.color.set(meshColor);
|
|
18047
|
+
}
|
|
18048
|
+
destroy() {
|
|
18049
|
+
this.clear();
|
|
18050
|
+
if (this.map && this.customLayerId) try {
|
|
18051
|
+
this.map.removeLayer(this.customLayerId);
|
|
18052
|
+
} catch {}
|
|
18053
|
+
if (this.renderer) {
|
|
18054
|
+
this.renderer.dispose();
|
|
18055
|
+
this.renderer = null;
|
|
18056
|
+
}
|
|
18057
|
+
this.scene = null;
|
|
18058
|
+
this.camera = null;
|
|
18059
|
+
this.isInitialized = false;
|
|
18060
|
+
}
|
|
18061
|
+
}
|
|
18062
|
+
const instancedModel = InstancedModelManager;
|
|
18063
|
+
const attachInstancedModel = (mapless, name)=>mapless?.use(InstancedModelManager, name);
|
|
18064
|
+
const getInstancedModel = (mapless, name)=>mapless?.get(InstancedModelManager, name);
|
|
18065
|
+
const detachInstancedModel = (mapless, name)=>mapless?.unuse(InstancedModelManager, name);
|
|
17603
18066
|
class Line2Manager extends manager_Manager {
|
|
17604
18067
|
mapThree = null;
|
|
17605
18068
|
lines = new Map();
|
|
@@ -18290,6 +18753,7 @@ class ThreeManager extends manager_Manager {
|
|
|
18290
18753
|
};
|
|
18291
18754
|
boxHelper = null;
|
|
18292
18755
|
isSelected = false;
|
|
18756
|
+
clickCleanup = null;
|
|
18293
18757
|
constructor(mapless){
|
|
18294
18758
|
super(mapless);
|
|
18295
18759
|
this.map = mapless.map;
|
|
@@ -18315,18 +18779,18 @@ class ThreeManager extends manager_Manager {
|
|
|
18315
18779
|
0,
|
|
18316
18780
|
0,
|
|
18317
18781
|
0
|
|
18318
|
-
], scale = 1) {
|
|
18782
|
+
], scale = 1, color) {
|
|
18319
18783
|
const mapThree = this.getMapThree();
|
|
18320
18784
|
if (!mapThree) throw new Error('MapThree not initialized. Call useThree first.');
|
|
18321
18785
|
const loader = new GLTFLoader();
|
|
18322
18786
|
return new Promise((resolve, reject)=>{
|
|
18323
18787
|
loader.load(url, (gltf)=>{
|
|
18324
18788
|
this.model = gltf.scene;
|
|
18325
|
-
this.model.traverse((child)=>{
|
|
18789
|
+
if (color) this.model.traverse((child)=>{
|
|
18326
18790
|
if (child instanceof Mesh) {
|
|
18327
18791
|
const material = child.material;
|
|
18328
18792
|
if (material.emissive) {
|
|
18329
|
-
material.emissive = new Color(
|
|
18793
|
+
material.emissive = new Color(color);
|
|
18330
18794
|
material.emissiveIntensity = 0.5;
|
|
18331
18795
|
}
|
|
18332
18796
|
}
|
|
@@ -18535,7 +18999,30 @@ class ThreeManager extends manager_Manager {
|
|
|
18535
18999
|
if (!this.boxHelper || !this.model) return;
|
|
18536
19000
|
this.boxHelper.update();
|
|
18537
19001
|
}
|
|
19002
|
+
registerClick(onClick, tolerance = 30) {
|
|
19003
|
+
const mapThree = this.getMapThree();
|
|
19004
|
+
if (!mapThree || !this.modelId) {
|
|
19005
|
+
console.warn('ThreeManager: Cannot register click, MapThree or modelId not available');
|
|
19006
|
+
return null;
|
|
19007
|
+
}
|
|
19008
|
+
if (this.clickCleanup) {
|
|
19009
|
+
this.clickCleanup();
|
|
19010
|
+
this.clickCleanup = null;
|
|
19011
|
+
}
|
|
19012
|
+
const cleanup = mapThree.registerRenderableObjectClick(this.modelId, (_object, point)=>{
|
|
19013
|
+
if (onClick && this.model) onClick(this.model, point);
|
|
19014
|
+
}, tolerance);
|
|
19015
|
+
this.clickCleanup = cleanup;
|
|
19016
|
+
return cleanup;
|
|
19017
|
+
}
|
|
19018
|
+
unregisterClick() {
|
|
19019
|
+
if (this.clickCleanup) {
|
|
19020
|
+
this.clickCleanup();
|
|
19021
|
+
this.clickCleanup = null;
|
|
19022
|
+
}
|
|
19023
|
+
}
|
|
18538
19024
|
dispose() {
|
|
19025
|
+
this.unregisterClick();
|
|
18539
19026
|
this.deselect();
|
|
18540
19027
|
const mapThree = this.getMapThree();
|
|
18541
19028
|
if (mapThree && this.modelId) mapThree.removeRenderableObject(this.modelId);
|
|
@@ -20482,4 +20969,4 @@ function detachPathTracker(mapless) {
|
|
|
20482
20969
|
pathTrackerManagers.delete(mapless);
|
|
20483
20970
|
}
|
|
20484
20971
|
}
|
|
20485
|
-
export { AirspaceManager, basicObject as BasicThreeObjectManager, ClickStrategy, CoordTransformer, curve3d as Curve3DManager, Draw, elevatedLine as ElevatedLineManager, EmitManager, FixedRectangleLayer as FixedRectangleLayerManager, FreeStrategy, Lang, line2Manager as Line2Manager, LngLat, manager_Manager as Manager, mapModel as MapModelManager, MapMouseEvent, Mapless_Base as Mapless, Marker, MercatorCoordinate, mana_three_model as ModelManager, MultiCoordTransformer, OldStationManager, paint_PaintBoard as PaintBoard, PathCollectionStrategy, path_PathTracker as PathTracker, Popup, PositionMarker, PositionMouse, QuickTrans, RectangleLayer as RectangleLayerManager, icons_Singleton as Singleton, three as ThreeManager, adjustMapConfigByCoord, attachAirspace, attachBasicObject, attachBoundary, attachCluster, attachCurve, attachCurve3D, attachElevatedLine, attachFixedRectangleLayer, attachHeatmap, attachImageData, attachLine, attachLine2, attachMapModel, attachMarker, attachModel, attachMovable, attachNewStation, attachNode, attachOldStation, attachPathTracker, attachPolygon, attachRectangleLayer, attachRoutes, attachShape, attachStep, attachText, attachThree, attachTrack, buildTileUrl, calculateObjectsInPolygon, createCoordTransformer, darkFog, darkSource, defaultSource, detachAirspace, detachBasicObject, detachBoundary, detachCluster, detachCurve, detachCurve3D, detachElevatedLine, detachFixedRectangleLayer, detachHeatmap, detachImageData, detachLine, detachLine2, detachMapModel, detachMarker, detachModel, detachMovable, detachNewStation, detachNode, detachOldStation, detachPathTracker, detachPolygon, detachRectangleLayer, detachRoutes, detachShape, detachStep, detachText, detachThree, detachTrack, ellipse, genPrefixId, getAirspace, getAllSourceCoordSystems, getBasicObject, getBoundary, getCluster, getCoordDisplayName, getCurve, getCurve3D, getElevatedLine, getFixedRectangleLayer, getHeatmap, getImageData, getLine, getLine2, getMapModel, getMarker, getModel, getMovable, getNewStation, getNode, getOldStation, getPaintCenter, getPaintCenterNRadius, getPaintPolygon, getPathTracker, getPolygon, getRectangleLayer, getRoutes, getShape, getSourceCoordSystem, getSourcesByCoordSystem, getStep, getText, getThree, getTrack, isValidCoordinate, lightFog, lightSource, lite, mapbox_gl as mapboxgl, maplessPreset, point2Feature, propwmsTransformRequest, sourcesMap, newstation_stateColorRule as stateColorRule, test2Point, throttle, transformCoordinate, transformCoordinateBetweenSources, transformCoordinates, transformMapCenter, tryFunc, tryTrans };
|
|
20972
|
+
export { AirspaceManager, basicObject as BasicThreeObjectManager, ClickStrategy, CoordTransformer, curve3d as Curve3DManager, Draw, elevatedLine as ElevatedLineManager, EmitManager, FixedRectangleLayer as FixedRectangleLayerManager, FreeStrategy, instancedModel as InstancedModelManager, Lang, line2Manager as Line2Manager, LngLat, manager_Manager as Manager, mapModel as MapModelManager, MapMouseEvent, Mapless_Base as Mapless, Marker, MercatorCoordinate, mana_three_model as ModelManager, MultiCoordTransformer, OldStationManager, paint_PaintBoard as PaintBoard, PathCollectionStrategy, path_PathTracker as PathTracker, Popup, PositionMarker, PositionMouse, QuickTrans, RectangleLayer as RectangleLayerManager, icons_Singleton as Singleton, three as ThreeManager, adjustMapConfigByCoord, attachAirspace, attachBasicObject, attachBoundary, attachCluster, attachCurve, attachCurve3D, attachElevatedLine, attachFixedRectangleLayer, attachHeatmap, attachImageData, attachInstancedModel, attachLine, attachLine2, attachMapModel, attachMarker, attachModel, attachMovable, attachNewStation, attachNode, attachOldStation, attachPathTracker, attachPolygon, attachRectangleLayer, attachRoutes, attachShape, attachStep, attachText, attachThree, attachTrack, buildTileUrl, calculateObjectsInPolygon, createCoordTransformer, darkFog, darkSource, defaultSource, detachAirspace, detachBasicObject, detachBoundary, detachCluster, detachCurve, detachCurve3D, detachElevatedLine, detachFixedRectangleLayer, detachHeatmap, detachImageData, detachInstancedModel, detachLine, detachLine2, detachMapModel, detachMarker, detachModel, detachMovable, detachNewStation, detachNode, detachOldStation, detachPathTracker, detachPolygon, detachRectangleLayer, detachRoutes, detachShape, detachStep, detachText, detachThree, detachTrack, ellipse, genPrefixId, getAirspace, getAllSourceCoordSystems, getBasicObject, getBoundary, getCluster, getCoordDisplayName, getCurve, getCurve3D, getElevatedLine, getFixedRectangleLayer, getHeatmap, getImageData, getInstancedModel, getLine, getLine2, getMapModel, getMarker, getModel, getMovable, getNewStation, getNode, getOldStation, getPaintCenter, getPaintCenterNRadius, getPaintPolygon, getPathTracker, getPolygon, getRectangleLayer, getRoutes, getShape, getSourceCoordSystem, getSourcesByCoordSystem, getStep, getText, getThree, getTrack, isValidCoordinate, lightFog, lightSource, lite, mapbox_gl as mapboxgl, maplessPreset, point2Feature, propwmsTransformRequest, sourcesMap, newstation_stateColorRule as stateColorRule, test2Point, throttle, transformCoordinate, transformCoordinateBetweenSources, transformCoordinates, transformMapCenter, tryFunc, tryTrans };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Mapless } from '..';
|
|
2
2
|
import type { IdHubType } from '../core/IdHub';
|
|
3
3
|
import { EmitManager } from '../core/manager';
|
|
4
|
-
import type {
|
|
4
|
+
import type { Movable, MovableManagerEvents, MovableManagerOptions } from '../types';
|
|
5
5
|
type MovableIdHubType = IdHubType & {
|
|
6
6
|
detailLayerId: string;
|
|
7
7
|
simpleLayerId: string;
|
|
@@ -9,7 +9,11 @@ type MovableIdHubType = IdHubType & {
|
|
|
9
9
|
};
|
|
10
10
|
declare class MovableManager extends EmitManager<MovableManagerEvents, MovableIdHubType> {
|
|
11
11
|
private movables;
|
|
12
|
-
|
|
12
|
+
private iconRotationAlignment;
|
|
13
|
+
private showNameByDefault;
|
|
14
|
+
private iconBaseSize;
|
|
15
|
+
private circleBaseRadius;
|
|
16
|
+
constructor(mapless: Mapless, options?: MovableManagerOptions);
|
|
13
17
|
handleCoordSystemChange(_system: string | undefined): void;
|
|
14
18
|
createIdHub(_idHub?: IdHubType): void;
|
|
15
19
|
initLayers(): void;
|
|
@@ -57,10 +61,22 @@ declare class MovableManager extends EmitManager<MovableManagerEvents, MovableId
|
|
|
57
61
|
private setupClickHandler;
|
|
58
62
|
private setupHoverHandler;
|
|
59
63
|
fitBounds(ids?: string[], padding?: number): void;
|
|
64
|
+
/**
|
|
65
|
+
* 设置图标旋转对齐方式
|
|
66
|
+
* @param alignment 对齐方式: "map" | "viewport" | "auto"
|
|
67
|
+
* - map: 图标随地图旋转而旋转(默认,适用于车辆等)
|
|
68
|
+
* - viewport: 图标始终朝向屏幕上方
|
|
69
|
+
* - auto: 自动选择(当 icon-rotate 为 0 时使用 viewport,否则使用 map)
|
|
70
|
+
*/
|
|
71
|
+
setIconRotationAlignment(alignment: 'map' | 'viewport' | 'auto'): void;
|
|
72
|
+
/**
|
|
73
|
+
* 获取当前图标旋转对齐方式
|
|
74
|
+
*/
|
|
75
|
+
getIconRotationAlignment(): 'map' | 'viewport' | 'auto';
|
|
60
76
|
destroy(): void;
|
|
61
77
|
}
|
|
62
78
|
export default MovableManager;
|
|
63
|
-
export declare const attachMovable: (mapless: Mapless | undefined | null, name?: string) => MovableManager | undefined;
|
|
79
|
+
export declare const attachMovable: (mapless: Mapless | undefined | null, name?: string, options?: MovableManagerOptions) => MovableManager | undefined;
|
|
64
80
|
export declare const getMovable: (mapless: Mapless | undefined | null, name?: string) => MovableManager | undefined;
|
|
65
81
|
export declare const detachMovable: (mapless: Mapless | undefined | null, name?: string) => boolean | undefined;
|
|
66
82
|
//# sourceMappingURL=movable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"movable.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana/movable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"movable.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana/movable.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,KAAK,EACV,OAAO,EACP,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAElB,KAAK,gBAAgB,GAAG,SAAS,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAgBF,cAAM,cAAe,SAAQ,WAAW,CACtC,oBAAoB,EACpB,gBAAgB,CACjB;IACC,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,qBAAqB,CAAsC;IACnE,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB;IAYpD,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAM1D,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS;IAa9B,UAAU;IA0EnB,UAAU,GAAI,SAAS,OAAO,EAAE,sBAAoB;;;;;;;;;;;;;;;;MAuBlD;IAEF,WAAW,GAAI,UAAU,OAAO,EAAE,EAAE,sBAAoB;;;;;;;;;;;;;;;;QAEtD;IAEF,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,YAAY,UAAO;IASrD,cAAc,CAAC,QAAQ,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE;IAqBvD,aAAa,EAAE,OAAO,GAAG,IAAI,CAAQ;IAErC,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO;IAuBzC,WAAW;IAWX,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;IAS5B,aAAa;IAKb,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,iBAAiB;IAsBhB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAgB1D;;;;;;OAMG;IACH,wBAAwB,CAAC,SAAS,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,IAAI;IAWtE;;OAEG;IACH,wBAAwB,IAAI,KAAK,GAAG,UAAU,GAAG,MAAM;IAIvD,OAAO,IAAI,IAAI;CAIhB;AAED,eAAe,cAAc,CAAC;AAE9B,eAAO,MAAM,aAAa,GACxB,SAAS,OAAO,GAAG,SAAS,GAAG,IAAI,EACnC,OAAO,MAAM,EACb,UAAU,qBAAqB,+BACe,CAAC;AACjD,eAAO,MAAM,UAAU,GACrB,SAAS,OAAO,GAAG,SAAS,GAAG,IAAI,EACnC,OAAO,MAAM,+BACwB,CAAC;AACxC,eAAO,MAAM,aAAa,GACxB,SAAS,OAAO,GAAG,SAAS,GAAG,IAAI,EACnC,OAAO,MAAM,wBAC0B,CAAC"}
|
|
@@ -66,6 +66,19 @@ export default class AirspaceManager extends Manager<AirspaceIdHubType> {
|
|
|
66
66
|
getZone(id: string): AirspaceType | undefined;
|
|
67
67
|
getAllZones(): AirspaceType[];
|
|
68
68
|
fitBounds(ids?: string[], padding?: number): void;
|
|
69
|
+
/**
|
|
70
|
+
* 显示/隐藏 3D 拉伸图层(fill-extrusion)
|
|
71
|
+
* 用于兼容 2D 情况下的空域区域显示
|
|
72
|
+
*/
|
|
73
|
+
setFillExtrusionVisible(visible: boolean): void;
|
|
74
|
+
/**
|
|
75
|
+
* 获取 3D 拉伸图层的可见状态
|
|
76
|
+
*/
|
|
77
|
+
isFillExtrusionVisible(): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* 切换 3D 拉伸图层的可见状态
|
|
80
|
+
*/
|
|
81
|
+
toggleFillExtrusion(): boolean;
|
|
69
82
|
destroy(): void;
|
|
70
83
|
}
|
|
71
84
|
export declare const attachAirspace: (mapless: Maploss, name?: string) => AirspaceManager | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airspace.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-3d/airspace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,KAAK,iBAAiB,GAAG,SAAS,GAAG;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACtE,CAAC;AAEF,KAAK,iBAAiB,GAAG,OAAO,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO,CAAC,iBAAiB,CAAC;IACrE,OAAO,CAAC,KAAK,CAAoC;IAGjD,OAAO,CAAC,MAAM,CAWZ;IAGF,OAAO,CAAC,kBAAkB,CAAyC;gBAEvD,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,cAAc;IAKtD;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAarC,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAS1D,WAAW,CAAC,MAAM,CAAC,EAAE,SAAS;IAc9B,UAAU;IA2CnB,OAAO,CAAC,UAAU;IAIlB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;IAuD7C,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM;IAMzC,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE;IAI5C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAO5B,UAAU,IAAI,IAAI;IAMlB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAqBxD,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhD,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAI9E,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,GAAE,OAAc,GAAG,IAAI;IAW5D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAI7C,WAAW,IAAI,YAAY,EAAE;IAIpB,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IA+
|
|
1
|
+
{"version":3,"file":"airspace.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-3d/airspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -197,6 +197,28 @@ declare class MapModelManager extends EmitManager<MapModelManagerEvents> {
|
|
|
197
197
|
* @param color 选中颜色,不传则使用默认选中颜色
|
|
198
198
|
*/
|
|
199
199
|
selectModel(id: string | null, color?: [number, number, number]): void;
|
|
200
|
+
/**
|
|
201
|
+
* 隐藏模型图层
|
|
202
|
+
* @param id 模型ID,不传则隐藏所有模型
|
|
203
|
+
*/
|
|
204
|
+
hideLayer(id?: string): void;
|
|
205
|
+
/**
|
|
206
|
+
* 显示模型图层
|
|
207
|
+
* @param id 模型ID,不传则显示所有模型
|
|
208
|
+
*/
|
|
209
|
+
showLayer(id?: string): void;
|
|
210
|
+
/**
|
|
211
|
+
* 切换模型图层可见性
|
|
212
|
+
* @param id 模型ID,不传则切换所有模型
|
|
213
|
+
* @returns 切换后的可见状态(单个模型时返回该模型状态,多个时返回 true)
|
|
214
|
+
*/
|
|
215
|
+
toggleLayer(id?: string): boolean;
|
|
216
|
+
/**
|
|
217
|
+
* 检查模型图层是否可见
|
|
218
|
+
* @param id 模型ID
|
|
219
|
+
* @returns 是否可见
|
|
220
|
+
*/
|
|
221
|
+
isLayerVisible(id: string): boolean;
|
|
200
222
|
destroy(): void;
|
|
201
223
|
}
|
|
202
224
|
export default MapModelManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapModel.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-3d/mapModel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mapModel.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-3d/mapModel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export { attachBasicObject, default as BasicThreeObjectManager, detachBasicObject, getBasicObject
|
|
1
|
+
export { attachBasicObject, type BasicGeometryType, default as BasicThreeObjectManager, detachBasicObject, getBasicObject } from './basicObject';
|
|
2
2
|
export { attachCurve3D, default as Curve3DManager, detachCurve3D, getCurve3D } from './curve3d';
|
|
3
|
+
export { attachInstancedModel, default as InstancedModelManager, detachInstancedModel, getInstancedModel, type InstancedModelConfig } from './instancedModel';
|
|
3
4
|
export { attachLine2, default as Line2Manager, detachLine2, getLine2, type Line2Config } from './line2Manager';
|
|
4
5
|
export { attachModel, default as ModelManager, detachModel, getModel } from './model';
|
|
5
6
|
export { attachThree, default as ThreeManager, detachThree, getThree } from './three';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,OAAO,IAAI,uBAAuB,EAClC,iBAAiB,EACjB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,OAAO,IAAI,uBAAuB,EAClC,iBAAiB,EACjB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,OAAO,IAAI,cAAc,EACzB,aAAa,EACb,UAAU,EACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,OAAO,IAAI,qBAAqB,EAChC,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,WAAW,EACX,OAAO,IAAI,YAAY,EACvB,WAAW,EACX,QAAQ,EACR,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,WAAW,EACX,OAAO,IAAI,YAAY,EACvB,WAAW,EACX,QAAQ,EACT,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,WAAW,EACX,OAAO,IAAI,YAAY,EACvB,WAAW,EACX,QAAQ,EACT,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { Mapless } from '..';
|
|
2
|
+
import { Manager } from '../core/manager';
|
|
3
|
+
/**
|
|
4
|
+
* 实例化模型配置
|
|
5
|
+
*/
|
|
6
|
+
export interface InstancedModelConfig {
|
|
7
|
+
/** 模型文件URL (GLB/GLTF) */
|
|
8
|
+
url: string;
|
|
9
|
+
/** 实例数量 */
|
|
10
|
+
count: number;
|
|
11
|
+
/** 中心点坐标 [lng, lat] */
|
|
12
|
+
center: [number, number];
|
|
13
|
+
/** 基础缩放比例 */
|
|
14
|
+
scale: number;
|
|
15
|
+
/** 分散范围 (经纬度偏移量) */
|
|
16
|
+
spread: number;
|
|
17
|
+
/** 是否自动旋转 */
|
|
18
|
+
autoRotate?: boolean;
|
|
19
|
+
/** 旋转速度 */
|
|
20
|
+
rotationSpeed?: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* InstancedModelManager - 实例化渲染管理器
|
|
24
|
+
*
|
|
25
|
+
* 解决问题:
|
|
26
|
+
* 使用 Mapbox GL JS 标准的 model 图层加载几百个 3D 模型时会出现严重卡顿。
|
|
27
|
+
* 这是典型的 Draw Call 爆炸问题 - 每个模型 = 1 次 Draw Call。
|
|
28
|
+
*
|
|
29
|
+
* 解决方案:
|
|
30
|
+
* 使用 Three.js InstancedMesh 将几百次绘制合并为 1 次 Draw Call。
|
|
31
|
+
*
|
|
32
|
+
* 性能对比:
|
|
33
|
+
* - 标准 model 图层:100个模型 = 100次 Draw Call
|
|
34
|
+
* - InstancedMesh:100个模型 = 1次 Draw Call (100x 性能提升)
|
|
35
|
+
*
|
|
36
|
+
* 适用场景:
|
|
37
|
+
* - 大量相同模型的实例(建筑群、风力发电机、树木等)
|
|
38
|
+
* - 城市级别的大规模 3D 场景
|
|
39
|
+
* - 需要高性能渲染的场景
|
|
40
|
+
*/
|
|
41
|
+
declare class InstancedModelManager extends Manager {
|
|
42
|
+
private scene;
|
|
43
|
+
private camera;
|
|
44
|
+
private renderer;
|
|
45
|
+
private customLayerId;
|
|
46
|
+
private isInitialized;
|
|
47
|
+
private instancedMeshes;
|
|
48
|
+
private rotationAngles;
|
|
49
|
+
private autoRotateEnabled;
|
|
50
|
+
private rotationSpeeds;
|
|
51
|
+
private renderCount;
|
|
52
|
+
constructor(mapless: Mapless);
|
|
53
|
+
/**
|
|
54
|
+
* 初始化 Three.js 场景和 Mapbox custom layer
|
|
55
|
+
*/
|
|
56
|
+
private initThree;
|
|
57
|
+
/**
|
|
58
|
+
* 设置 Mapbox 自定义图层
|
|
59
|
+
*/
|
|
60
|
+
private setupCustomLayer;
|
|
61
|
+
/**
|
|
62
|
+
* 更新自动旋转
|
|
63
|
+
*/
|
|
64
|
+
private updateAutoRotate;
|
|
65
|
+
/**
|
|
66
|
+
* 生成随机实例位置
|
|
67
|
+
*/
|
|
68
|
+
private generateInstances;
|
|
69
|
+
/**
|
|
70
|
+
* 加载模型并创建实例化网格
|
|
71
|
+
* @param id 实例组ID
|
|
72
|
+
* @param config 配置选项
|
|
73
|
+
*/
|
|
74
|
+
load(id: string, config: InstancedModelConfig): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* 启用自动旋转
|
|
77
|
+
*/
|
|
78
|
+
enableAutoRotate(id: string, speed?: number): void;
|
|
79
|
+
/**
|
|
80
|
+
* 禁用自动旋转
|
|
81
|
+
*/
|
|
82
|
+
disableAutoRotate(id: string): void;
|
|
83
|
+
/**
|
|
84
|
+
* 更新单个实例的变换
|
|
85
|
+
* @param id 实例组ID
|
|
86
|
+
* @param index 实例索引
|
|
87
|
+
* @param lngLat 新位置
|
|
88
|
+
* @param altitude 新高度
|
|
89
|
+
*/
|
|
90
|
+
updateInstance(id: string, index: number, lngLat: [number, number], altitude: number): void;
|
|
91
|
+
/**
|
|
92
|
+
* 更新单个实例组的可见性
|
|
93
|
+
*/
|
|
94
|
+
setInstanceVisible(id: string, visible: boolean): void;
|
|
95
|
+
/**
|
|
96
|
+
* 重写基类的 setVisible,控制所有实例的可见性
|
|
97
|
+
*/
|
|
98
|
+
setVisible(visible: boolean): void;
|
|
99
|
+
/**
|
|
100
|
+
* 获取实例数量
|
|
101
|
+
*/
|
|
102
|
+
getInstanceCount(id: string): number;
|
|
103
|
+
/**
|
|
104
|
+
* 获取所有实例组ID
|
|
105
|
+
*/
|
|
106
|
+
getIds(): string[];
|
|
107
|
+
/**
|
|
108
|
+
* 移除实例组
|
|
109
|
+
*/
|
|
110
|
+
remove(id: string): void;
|
|
111
|
+
/**
|
|
112
|
+
* 清除所有实例组
|
|
113
|
+
*/
|
|
114
|
+
clear(): void;
|
|
115
|
+
/**
|
|
116
|
+
* 设置实例颜色
|
|
117
|
+
* @param id 实例组ID
|
|
118
|
+
* @param color 颜色值
|
|
119
|
+
*/
|
|
120
|
+
setColor(id: string, color: number | string): void;
|
|
121
|
+
destroy(): void;
|
|
122
|
+
}
|
|
123
|
+
export default InstancedModelManager;
|
|
124
|
+
export declare const attachInstancedModel: (mapless: Mapless | undefined, name?: string) => InstancedModelManager | undefined;
|
|
125
|
+
export declare const getInstancedModel: (mapless: Mapless | undefined, name?: string) => InstancedModelManager | undefined;
|
|
126
|
+
export declare const detachInstancedModel: (mapless: Mapless | undefined, name?: string) => boolean | undefined;
|
|
127
|
+
//# sourceMappingURL=instancedModel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instancedModel.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/instancedModel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW;IACX,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAYD;;;;;;;;;;;;;;;;;;GAkBG;AACH,cAAM,qBAAsB,SAAQ,OAAO;IACzC,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA+C;IACtE,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,WAAW,CAAK;gBAEZ,OAAO,EAAE,OAAO;IAM5B;;OAEG;IACH,OAAO,CAAC,SAAS;IAkDjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+CxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA4BxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwBzB;;;;OAIG;IACU,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8H1E;;OAEG;IACI,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa,GAAG,IAAI;IAK/D;;OAEG;IACI,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI1C;;;;;;OAMG;IACI,cAAc,CACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EACxB,QAAQ,EAAE,MAAM,GACf,IAAI;IAiBP;;OAEG;IACI,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAO7D;;OAEG;IACM,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAO3C;;OAEG;IACI,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAK3C;;OAEG;IACI,MAAM,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACI,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAuB/B;;OAEG;IACI,KAAK,IAAI,IAAI;IAKpB;;;;OAIG;IACI,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAezD,OAAO,IAAI,IAAI;CAsBhB;AAED,eAAe,qBAAqB,CAAC;AAErC,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,GAAG,SAAS,EAAE,OAAO,MAAM,sCACrC,CAAC;AAE5C,eAAO,MAAM,iBAAiB,GAAI,SAAS,OAAO,GAAG,SAAS,EAAE,OAAO,MAAM,sCAClC,CAAC;AAE5C,eAAO,MAAM,oBAAoB,GAAI,SAAS,OAAO,GAAG,SAAS,EAAE,OAAO,MAAM,wBACnC,CAAC"}
|
|
@@ -16,6 +16,7 @@ declare class ThreeManager extends Manager {
|
|
|
16
16
|
private currentOrientation;
|
|
17
17
|
private boxHelper;
|
|
18
18
|
private isSelected;
|
|
19
|
+
private clickCleanup;
|
|
19
20
|
constructor(mapless: Mapless);
|
|
20
21
|
private init;
|
|
21
22
|
private updateAnimation;
|
|
@@ -24,7 +25,7 @@ declare class ThreeManager extends Manager {
|
|
|
24
25
|
* 加载3D模型并添加到场景中
|
|
25
26
|
* @returns 返回模型和动画列表
|
|
26
27
|
*/
|
|
27
|
-
loadModel(url: string, lngLat: [number, number], altitude?: number, rotation?: [number, number, number], scale?: number): Promise<{
|
|
28
|
+
loadModel(url: string, lngLat: [number, number], altitude?: number, rotation?: [number, number, number], scale?: number, color?: undefined | string): Promise<{
|
|
28
29
|
model: THREE.Group;
|
|
29
30
|
animations: string[];
|
|
30
31
|
}>;
|
|
@@ -131,6 +132,17 @@ declare class ThreeManager extends Manager {
|
|
|
131
132
|
* 更新 BoxHelper 的变换(跟随模型)
|
|
132
133
|
*/
|
|
133
134
|
private _updateBoxHelper;
|
|
135
|
+
/**
|
|
136
|
+
* 注册点击事件,点击模型时切换选中状态
|
|
137
|
+
* @param onClick 可选的自定义点击回调
|
|
138
|
+
* @param tolerance 点击容差(像素),默认 30
|
|
139
|
+
* @returns 清理函数
|
|
140
|
+
*/
|
|
141
|
+
registerClick(onClick?: (model: THREE.Group, point: THREE.Vector3) => void, tolerance?: number): (() => void) | null;
|
|
142
|
+
/**
|
|
143
|
+
* 移除点击事件
|
|
144
|
+
*/
|
|
145
|
+
unregisterClick(): void;
|
|
134
146
|
/**
|
|
135
147
|
* 释放资源
|
|
136
148
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/three.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,cAAM,YAAa,SAAQ,OAAO;IAChC,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,OAAO,CAAS;IAGxB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,KAAK,CAAqC;IAClD,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,aAAa,CAAsC;IAG3D,OAAO,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"three.d.ts","sourceRoot":"","sources":["../../../../src/Mapless/mana-three/three.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,6 +159,26 @@ export type Movable = {
|
|
|
159
159
|
export type MovableManagerEvents = {
|
|
160
160
|
movablesSelected: [Movable[]];
|
|
161
161
|
};
|
|
162
|
+
export type MovableManagerOptions = ManagerOptions & {
|
|
163
|
+
/**
|
|
164
|
+
* 是否默认显示名称
|
|
165
|
+
* - true: 始终显示名称
|
|
166
|
+
* - false: 仅选中时显示名称(默认)
|
|
167
|
+
*/
|
|
168
|
+
showNameByDefault?: boolean;
|
|
169
|
+
/**
|
|
170
|
+
* 图标基础大小
|
|
171
|
+
* - 默认 0.3
|
|
172
|
+
* - 选中时为 iconBaseSize + 0.1
|
|
173
|
+
*/
|
|
174
|
+
iconBaseSize?: number;
|
|
175
|
+
/**
|
|
176
|
+
* 圆点基础半径
|
|
177
|
+
* - 默认 8
|
|
178
|
+
* - 选中时为 circleBaseRadius + 2
|
|
179
|
+
*/
|
|
180
|
+
circleBaseRadius?: number;
|
|
181
|
+
};
|
|
162
182
|
export type Route = {
|
|
163
183
|
id: string;
|
|
164
184
|
route: [number, number][];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Mapless/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Mapless/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ export declare class MapThree {
|
|
|
27
27
|
private renderableObjects;
|
|
28
28
|
private isInitialized;
|
|
29
29
|
private customLayerId;
|
|
30
|
+
private lastProjectionMatrix;
|
|
30
31
|
constructor(props: MapThreeProps);
|
|
31
32
|
init(canvas: HTMLCanvasElement, glContext: WebGLRenderingContext, width: number, height: number): void;
|
|
32
33
|
private setupCustomLayer;
|
|
@@ -112,6 +113,44 @@ export declare class MapThree {
|
|
|
112
113
|
* 清除所有可渲染对象
|
|
113
114
|
*/
|
|
114
115
|
clearRenderableObjects(): void;
|
|
116
|
+
/**
|
|
117
|
+
* 射线检测 - 检测给定屏幕坐标下的 Three.js 对象
|
|
118
|
+
* @param point 屏幕坐标点(相对于 map 容器)
|
|
119
|
+
* @param objects 可选的对象列表,如果不提供则检测所有 renderableObjects
|
|
120
|
+
* @param tolerance 点击容差(像素),用于包围盒检测的弹性范围
|
|
121
|
+
* @returns 命中的对象信息
|
|
122
|
+
*/
|
|
123
|
+
raycast(point: {
|
|
124
|
+
x: number;
|
|
125
|
+
y: number;
|
|
126
|
+
}, objects?: THREE.Object3D[], tolerance?: number): {
|
|
127
|
+
object: THREE.Object3D;
|
|
128
|
+
distance: number;
|
|
129
|
+
point: THREE.Vector3;
|
|
130
|
+
} | null;
|
|
131
|
+
/**
|
|
132
|
+
* 为可渲染对象注册点击事件
|
|
133
|
+
* @param id 可渲染对象的 ID
|
|
134
|
+
* @param onClick 点击回调函数
|
|
135
|
+
* @param tolerance 点击容差(像素),默认 30
|
|
136
|
+
* @returns 清理函数,调用可移除事件监听
|
|
137
|
+
*/
|
|
138
|
+
registerRenderableObjectClick(id: string, onClick: (object: THREE.Object3D, point: THREE.Vector3) => void, tolerance?: number): (() => void) | null;
|
|
139
|
+
/**
|
|
140
|
+
* 注册全局点击事件,检测任何 Three.js 对象
|
|
141
|
+
* @param onClick 点击回调函数
|
|
142
|
+
* @returns 清理函数
|
|
143
|
+
*/
|
|
144
|
+
registerGlobalClick(onClick: (hit: {
|
|
145
|
+
object: THREE.Object3D;
|
|
146
|
+
distance: number;
|
|
147
|
+
point: THREE.Vector3;
|
|
148
|
+
renderableId?: string;
|
|
149
|
+
}) => void): (() => void) | null;
|
|
150
|
+
/**
|
|
151
|
+
* 检查对象是否在给定层级结构中
|
|
152
|
+
*/
|
|
153
|
+
private isObjectInHierarchy;
|
|
115
154
|
dispose(): void;
|
|
116
155
|
}
|
|
117
156
|
//# sourceMappingURL=MapThree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MapThree.d.ts","sourceRoot":"","sources":["../../../src/Three/MapThree.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGtE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;IACrB,SAAS,EAAE;QACT,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QAEd,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC;KACxB,CAAC;IACF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,QAAQ;IACnB,OAAO,EAAE,OAAO,GAAG,SAAS,CAAa;IAEzC,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAAwC;IACtD,OAAO,CAAC,QAAQ,CAAoC;IAIpD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,kBAAkB,CAA8B;IAGxD,OAAO,CAAC,iBAAiB,CAA4C;IAErE,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAuB;
|
|
1
|
+
{"version":3,"file":"MapThree.d.ts","sourceRoot":"","sources":["../../../src/Three/MapThree.ts"],"names":[],"mappings":"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"}
|