@aibee/crc-bmap 0.8.3 → 0.8.4

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/lib/bmap.esm.js CHANGED
@@ -1797,6 +1797,18 @@ function vector3ToDevice(vector, camera, w, h) {
1797
1797
  const y = Math.round(-_vector.y * _h + _h);
1798
1798
  return { x, y };
1799
1799
  }
1800
+ function deviceToVector3(x, y, w, h, camera) {
1801
+ if (!camera) {
1802
+ return null;
1803
+ }
1804
+ w = Math.min(1, w);
1805
+ h = Math.min(1, h);
1806
+ const nx = x / w * 2 - 1;
1807
+ const ny = 1 - y / h * 2;
1808
+ const v = new Vector3(nx, ny, 0);
1809
+ const coordinate3 = v.unproject(camera);
1810
+ return coordinate3;
1811
+ }
1800
1812
  function getCenter(coordinates) {
1801
1813
  const features = featureCollection(coordinates.map((item) => point(item)));
1802
1814
  const cent = center(features);
@@ -6573,7 +6585,7 @@ var Lane = class extends Object3D12 {
6573
6585
  geometry.setPositions(vec);
6574
6586
  const line = new Line22(geometry, material);
6575
6587
  line.computeLineDistances();
6576
- line.position.z += 1e-3;
6588
+ line.position.z += 0.01;
6577
6589
  this.add(line);
6578
6590
  return line;
6579
6591
  });
@@ -6600,7 +6612,6 @@ var Lane = class extends Object3D12 {
6600
6612
  if (this.options[0].strokeOpacity !== 0) {
6601
6613
  this.initLineMaterial();
6602
6614
  this.initLineGeometry();
6603
- this.createBorder();
6604
6615
  }
6605
6616
  this.initDoubleLine();
6606
6617
  this.position.z += 2e-3 + (this.options[0].deltaHeight || 0);
@@ -7608,11 +7619,9 @@ var CameraBound = class {
7608
7619
 
7609
7620
  // src/context/control.ts
7610
7621
  import { Vector3 as Vector321 } from "three";
7622
+ import { Tween as Tween2, Group as TweenGroup } from "@tweenjs/tween.js";
7611
7623
 
7612
- // node_modules/.pnpm/three@0.157.0/node_modules/three/examples/jsm/controls/MapControls.js
7613
- import { MOUSE as MOUSE2, TOUCH as TOUCH2 } from "three";
7614
-
7615
- // node_modules/.pnpm/three@0.157.0/node_modules/three/examples/jsm/controls/OrbitControls.js
7624
+ // src/context/OrbitControls.ts
7616
7625
  import {
7617
7626
  EventDispatcher as EventDispatcher7,
7618
7627
  MOUSE,
@@ -7625,13 +7634,60 @@ import {
7625
7634
  Ray as Ray2,
7626
7635
  MathUtils
7627
7636
  } from "three";
7628
- var _changeEvent = { type: "change" };
7629
- var _startEvent = { type: "start" };
7630
- var _endEvent = { type: "end" };
7631
7637
  var _ray = new Ray2();
7632
7638
  var _plane = new Plane();
7633
7639
  var TILT_LIMIT = Math.cos(70 * MathUtils.DEG2RAD);
7634
7640
  var OrbitControls = class extends EventDispatcher7 {
7641
+ object;
7642
+ domElement;
7643
+ rotateLineStart = new Vector211();
7644
+ rotateLineEnd = new Vector211();
7645
+ enabled;
7646
+ target;
7647
+ minDistance;
7648
+ maxDistance;
7649
+ minZoom;
7650
+ maxZoom;
7651
+ minPolarAngle;
7652
+ maxPolarAngle;
7653
+ minAzimuthAngle;
7654
+ maxAzimuthAngle;
7655
+ dampingFactor;
7656
+ enableDamping;
7657
+ enableZoom;
7658
+ zoomSpeed;
7659
+ enableRotate;
7660
+ rotateSpeed;
7661
+ enablePan;
7662
+ panSpeed;
7663
+ screenSpacePanning;
7664
+ keyPanSpeed;
7665
+ zoomToCursor;
7666
+ autoRotate;
7667
+ autoRotateSpeed;
7668
+ keys;
7669
+ mouseButtons;
7670
+ touches;
7671
+ target0;
7672
+ position0;
7673
+ zoom0;
7674
+ _domElementKeyEvents;
7675
+ spherical = new Spherical();
7676
+ sphericalDelta = new Spherical();
7677
+ getPolarAngle;
7678
+ getAzimuthalAngle;
7679
+ getDistance;
7680
+ listenToKeyEvents;
7681
+ stopListenToKeyEvents;
7682
+ saveState;
7683
+ reset;
7684
+ update;
7685
+ onContextMenu;
7686
+ onPointerDown;
7687
+ onPointerUp;
7688
+ onMouseWheel;
7689
+ onPointerMove;
7690
+ onKeyDown;
7635
7691
  constructor(object, domElement) {
7636
7692
  super();
7637
7693
  this.object = object;
@@ -7655,20 +7711,20 @@ var OrbitControls = class extends EventDispatcher7 {
7655
7711
  this.rotateSpeed = 1;
7656
7712
  this.enablePan = true;
7657
7713
  this.panSpeed = 1;
7658
- this.screenSpacePanning = true;
7659
7714
  this.keyPanSpeed = 7;
7660
7715
  this.zoomToCursor = false;
7661
7716
  this.autoRotate = false;
7662
7717
  this.autoRotateSpeed = 2;
7663
7718
  this.keys = { LEFT: "ArrowLeft", UP: "ArrowUp", RIGHT: "ArrowRight", BOTTOM: "ArrowDown" };
7664
- this.mouseButtons = { LEFT: MOUSE.ROTATE, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.PAN };
7665
- this.touches = { ONE: TOUCH.ROTATE, TWO: TOUCH.DOLLY_PAN };
7719
+ this.screenSpacePanning = false;
7720
+ this.mouseButtons = { LEFT: MOUSE.PAN, MIDDLE: MOUSE.DOLLY, RIGHT: MOUSE.ROTATE };
7721
+ this.touches = { ONE: TOUCH.PAN, TWO: TOUCH.DOLLY_ROTATE };
7666
7722
  this.target0 = this.target.clone();
7667
7723
  this.position0 = this.object.position.clone();
7668
7724
  this.zoom0 = this.object.zoom;
7669
7725
  this._domElementKeyEvents = null;
7670
7726
  this.getPolarAngle = function() {
7671
- return spherical.phi;
7727
+ return this.spherical.phi;
7672
7728
  };
7673
7729
  this.getAzimuthalAngle = function() {
7674
7730
  return spherical.theta;
@@ -7677,11 +7733,11 @@ var OrbitControls = class extends EventDispatcher7 {
7677
7733
  return this.object.position.distanceTo(this.target);
7678
7734
  };
7679
7735
  this.listenToKeyEvents = function(domElement2) {
7680
- domElement2.addEventListener("keydown", onKeyDown);
7736
+ domElement2.addEventListener("keydown", this.onKeyDown);
7681
7737
  this._domElementKeyEvents = domElement2;
7682
7738
  };
7683
7739
  this.stopListenToKeyEvents = function() {
7684
- this._domElementKeyEvents.removeEventListener("keydown", onKeyDown);
7740
+ this._domElementKeyEvents?.removeEventListener("keydown", this.onKeyDown);
7685
7741
  this._domElementKeyEvents = null;
7686
7742
  };
7687
7743
  this.saveState = function() {
@@ -7694,7 +7750,7 @@ var OrbitControls = class extends EventDispatcher7 {
7694
7750
  scope.object.position.copy(scope.position0);
7695
7751
  scope.object.zoom = scope.zoom0;
7696
7752
  scope.object.updateProjectionMatrix();
7697
- scope.dispatchEvent(_changeEvent);
7753
+ scope.dispatchEvent({ type: "change" });
7698
7754
  scope.update();
7699
7755
  state = STATE.NONE;
7700
7756
  };
@@ -7783,7 +7839,7 @@ var OrbitControls = class extends EventDispatcher7 {
7783
7839
  scope.zoomToCursor = false;
7784
7840
  }
7785
7841
  if (newRadius !== null) {
7786
- if (this.screenSpacePanning) {
7842
+ if (scope.screenSpacePanning) {
7787
7843
  scope.target.set(0, 0, -1).transformDirection(scope.object.matrix).multiplyScalar(newRadius).add(scope.object.position);
7788
7844
  } else {
7789
7845
  _ray.origin.copy(scope.object.position);
@@ -7804,7 +7860,7 @@ var OrbitControls = class extends EventDispatcher7 {
7804
7860
  scale = 1;
7805
7861
  performCursorZoom = false;
7806
7862
  if (zoomChanged || lastPosition.distanceToSquared(scope.object.position) > EPS || 8 * (1 - lastQuaternion.dot(scope.object.quaternion)) > EPS || lastTargetPosition.distanceToSquared(scope.target) > 0) {
7807
- scope.dispatchEvent(_changeEvent);
7863
+ scope.dispatchEvent({ type: "change" });
7808
7864
  lastPosition.copy(scope.object.position);
7809
7865
  lastQuaternion.copy(scope.object.quaternion);
7810
7866
  lastTargetPosition.copy(scope.target);
@@ -7814,18 +7870,6 @@ var OrbitControls = class extends EventDispatcher7 {
7814
7870
  return false;
7815
7871
  };
7816
7872
  }();
7817
- this.dispose = function() {
7818
- scope.domElement.removeEventListener("contextmenu", onContextMenu);
7819
- scope.domElement.removeEventListener("pointerdown", onPointerDown);
7820
- scope.domElement.removeEventListener("pointercancel", onPointerUp);
7821
- scope.domElement.removeEventListener("wheel", onMouseWheel);
7822
- scope.domElement.removeEventListener("pointermove", onPointerMove);
7823
- scope.domElement.removeEventListener("pointerup", onPointerUp);
7824
- if (scope._domElementKeyEvents !== null) {
7825
- scope._domElementKeyEvents.removeEventListener("keydown", onKeyDown);
7826
- scope._domElementKeyEvents = null;
7827
- }
7828
- };
7829
7873
  const scope = this;
7830
7874
  const STATE = {
7831
7875
  NONE: -1,
@@ -8038,6 +8082,9 @@ var OrbitControls = class extends EventDispatcher7 {
8038
8082
  if (pointers.length === 1) {
8039
8083
  rotateStart.set(pointers[0].pageX, pointers[0].pageY);
8040
8084
  } else {
8085
+ const slope = (pointers[0].pageX - pointers[0].pageY) / (pointers[1].pageX - pointers[1].pageY);
8086
+ const intercept = pointers[0].pageY - slope * pointers[0].pageX;
8087
+ scope.rotateLineStart.set(slope, intercept);
8041
8088
  const x = 0.5 * (pointers[0].pageX + pointers[1].pageX);
8042
8089
  const y = 0.5 * (pointers[0].pageY + pointers[1].pageY);
8043
8090
  rotateStart.set(x, y);
@@ -8074,10 +8121,26 @@ var OrbitControls = class extends EventDispatcher7 {
8074
8121
  const x = 0.5 * (event.pageX + position.x);
8075
8122
  const y = 0.5 * (event.pageY + position.y);
8076
8123
  rotateEnd.set(x, y);
8124
+ const slope = (event.pageY - position.y) / (event.pageX - position.x);
8125
+ const intercept = position.y - slope * position.x;
8126
+ scope.rotateLineEnd.set(slope, intercept);
8127
+ if (Number.isFinite(scope.rotateLineEnd.x) && Number.isFinite(scope.rotateLineStart.x)) {
8128
+ const interceptionX = (scope.rotateLineStart.y - scope.rotateLineEnd.y) / (scope.rotateLineEnd.x - scope.rotateLineStart.x);
8129
+ const interceptionY = slope * interceptionX + intercept;
8130
+ if (Number.isFinite(interceptionX) && Number.isFinite(interceptionY)) {
8131
+ let angleDelta = Math.atan(scope.rotateLineEnd.x) - Math.atan(scope.rotateLineStart.x);
8132
+ if (Math.PI - Math.abs(angleDelta) < 0.5) {
8133
+ angleDelta = -Math.sign(angleDelta) * (Math.PI - Math.abs(angleDelta));
8134
+ }
8135
+ if (Math.abs(angleDelta) < 0.1) {
8136
+ sphericalDelta.theta += angleDelta;
8137
+ }
8138
+ }
8139
+ }
8140
+ scope.rotateLineStart.copy(scope.rotateLineEnd);
8077
8141
  }
8078
8142
  rotateDelta.subVectors(rotateEnd, rotateStart).multiplyScalar(scope.rotateSpeed);
8079
8143
  const element = scope.domElement;
8080
- rotateLeft(2 * Math.PI * rotateDelta.x / element.clientHeight);
8081
8144
  rotateUp(2 * Math.PI * rotateDelta.y / element.clientHeight);
8082
8145
  rotateStart.copy(rotateEnd);
8083
8146
  }
@@ -8112,12 +8175,13 @@ var OrbitControls = class extends EventDispatcher7 {
8112
8175
  if (scope.enableZoom) handleTouchMoveDolly(event);
8113
8176
  if (scope.enableRotate) handleTouchMoveRotate(event);
8114
8177
  }
8115
- function onPointerDown(event) {
8178
+ this.onPointerDown = function onPointerDown(event) {
8116
8179
  if (scope.enabled === false) return;
8180
+ console.log(pointers.length, "pointermove");
8117
8181
  if (pointers.length === 0) {
8118
8182
  scope.domElement.setPointerCapture(event.pointerId);
8119
- scope.domElement.addEventListener("pointermove", onPointerMove);
8120
- scope.domElement.addEventListener("pointerup", onPointerUp);
8183
+ scope.domElement.addEventListener("pointermove", scope.onPointerMove);
8184
+ scope.domElement.addEventListener("pointerup", scope.onPointerUp);
8121
8185
  }
8122
8186
  addPointer(event);
8123
8187
  if (event.pointerType === "touch") {
@@ -8125,25 +8189,25 @@ var OrbitControls = class extends EventDispatcher7 {
8125
8189
  } else {
8126
8190
  onMouseDown(event);
8127
8191
  }
8128
- }
8129
- function onPointerMove(event) {
8192
+ };
8193
+ this.onPointerMove = function onPointerMove(event) {
8130
8194
  if (scope.enabled === false) return;
8131
8195
  if (event.pointerType === "touch") {
8132
8196
  onTouchMove(event);
8133
8197
  } else {
8134
8198
  onMouseMove(event);
8135
8199
  }
8136
- }
8137
- function onPointerUp(event) {
8200
+ };
8201
+ this.onPointerUp = function onPointerUp(event) {
8138
8202
  removePointer(event);
8139
8203
  if (pointers.length === 0) {
8140
8204
  scope.domElement.releasePointerCapture(event.pointerId);
8141
- scope.domElement.removeEventListener("pointermove", onPointerMove);
8142
- scope.domElement.removeEventListener("pointerup", onPointerUp);
8205
+ scope.domElement.removeEventListener("pointermove", scope.onPointerMove);
8206
+ scope.domElement.removeEventListener("pointerup", scope.onPointerUp);
8143
8207
  }
8144
- scope.dispatchEvent(_endEvent);
8208
+ scope.dispatchEvent({ type: "end" });
8145
8209
  state = STATE.NONE;
8146
- }
8210
+ };
8147
8211
  function onMouseDown(event) {
8148
8212
  let mouseAction;
8149
8213
  switch (event.button) {
@@ -8191,7 +8255,7 @@ var OrbitControls = class extends EventDispatcher7 {
8191
8255
  state = STATE.NONE;
8192
8256
  }
8193
8257
  if (state !== STATE.NONE) {
8194
- scope.dispatchEvent(_startEvent);
8258
+ scope.dispatchEvent({ type: "start" });
8195
8259
  }
8196
8260
  }
8197
8261
  function onMouseMove(event) {
@@ -8210,17 +8274,17 @@ var OrbitControls = class extends EventDispatcher7 {
8210
8274
  break;
8211
8275
  }
8212
8276
  }
8213
- function onMouseWheel(event) {
8277
+ this.onMouseWheel = function onMouseWheel(event) {
8214
8278
  if (scope.enabled === false || scope.enableZoom === false || state !== STATE.NONE) return;
8215
8279
  event.preventDefault();
8216
- scope.dispatchEvent(_startEvent);
8280
+ scope.dispatchEvent({ type: "start" });
8217
8281
  handleMouseWheel(event);
8218
- scope.dispatchEvent(_endEvent);
8219
- }
8220
- function onKeyDown(event) {
8282
+ scope.dispatchEvent({ type: "end" });
8283
+ };
8284
+ this.onKeyDown = function onKeyDown(event) {
8221
8285
  if (scope.enabled === false || scope.enablePan === false) return;
8222
8286
  handleKeyDown(event);
8223
- }
8287
+ };
8224
8288
  function onTouchStart(event) {
8225
8289
  trackPointer(event);
8226
8290
  switch (pointers.length) {
@@ -8260,7 +8324,7 @@ var OrbitControls = class extends EventDispatcher7 {
8260
8324
  state = STATE.NONE;
8261
8325
  }
8262
8326
  if (state !== STATE.NONE) {
8263
- scope.dispatchEvent(_startEvent);
8327
+ scope.dispatchEvent({ type: "start" });
8264
8328
  }
8265
8329
  }
8266
8330
  function onTouchMove(event) {
@@ -8290,10 +8354,10 @@ var OrbitControls = class extends EventDispatcher7 {
8290
8354
  state = STATE.NONE;
8291
8355
  }
8292
8356
  }
8293
- function onContextMenu(event) {
8357
+ this.onContextMenu = function onContextMenu(event) {
8294
8358
  if (scope.enabled === false) return;
8295
8359
  event.preventDefault();
8296
- }
8360
+ };
8297
8361
  function addPointer(event) {
8298
8362
  pointers.push(event);
8299
8363
  }
@@ -8318,27 +8382,28 @@ var OrbitControls = class extends EventDispatcher7 {
8318
8382
  const pointer = event.pointerId === pointers[0].pointerId ? pointers[1] : pointers[0];
8319
8383
  return pointerPositions[pointer.pointerId];
8320
8384
  }
8321
- scope.domElement.addEventListener("contextmenu", onContextMenu);
8322
- scope.domElement.addEventListener("pointerdown", onPointerDown);
8323
- scope.domElement.addEventListener("pointercancel", onPointerUp);
8324
- scope.domElement.addEventListener("wheel", onMouseWheel, { passive: false });
8385
+ scope.domElement.addEventListener("contextmenu", this.onContextMenu);
8386
+ scope.domElement.addEventListener("pointerdown", this.onPointerDown);
8387
+ scope.domElement.addEventListener("pointercancel", this.onPointerUp);
8388
+ scope.domElement.addEventListener("wheel", this.onMouseWheel, { passive: false });
8325
8389
  this.update();
8326
8390
  }
8327
- };
8328
-
8329
- // node_modules/.pnpm/three@0.157.0/node_modules/three/examples/jsm/controls/MapControls.js
8330
- var MapControls = class extends OrbitControls {
8331
- constructor(object, domElement) {
8332
- super(object, domElement);
8333
- this.screenSpacePanning = false;
8334
- this.mouseButtons = { LEFT: MOUSE2.PAN, MIDDLE: MOUSE2.DOLLY, RIGHT: MOUSE2.ROTATE };
8335
- this.touches = { ONE: TOUCH2.PAN, TWO: TOUCH2.DOLLY_ROTATE };
8391
+ dispose() {
8392
+ this.domElement.removeEventListener("contextmenu", this.onContextMenu);
8393
+ this.domElement.removeEventListener("pointerdown", this.onPointerDown);
8394
+ this.domElement.removeEventListener("pointercancel", this.onPointerUp);
8395
+ this.domElement.removeEventListener("wheel", this.onMouseWheel);
8396
+ this.domElement.removeEventListener("pointermove", this.onPointerMove);
8397
+ this.domElement.removeEventListener("pointerup", this.onPointerUp);
8398
+ if (this._domElementKeyEvents !== null) {
8399
+ this._domElementKeyEvents.removeEventListener("keydown", this.onKeyDown);
8400
+ this._domElementKeyEvents = null;
8401
+ }
8336
8402
  }
8337
8403
  };
8338
8404
 
8339
8405
  // src/context/control.ts
8340
- import { Tween as Tween2, Group as TweenGroup } from "@tweenjs/tween.js";
8341
- var Control = class extends MapControls {
8406
+ var Control = class extends OrbitControls {
8342
8407
  constructor(context, camera, domElement) {
8343
8408
  super(camera, domElement);
8344
8409
  this.context = context;
@@ -8543,6 +8608,7 @@ var Control = class extends MapControls {
8543
8608
  this.tweenGroup.removeAll();
8544
8609
  }
8545
8610
  dispose() {
8611
+ super.dispose();
8546
8612
  this.clearTween();
8547
8613
  }
8548
8614
  };
@@ -8622,8 +8688,8 @@ var ContextScene = class extends Scene {
8622
8688
  };
8623
8689
 
8624
8690
  // src/context/camera.ts
8625
- import { OrthographicCamera as OrthographicCamera2 } from "three";
8626
- var ContextCamera = class extends OrthographicCamera2 {
8691
+ import { OrthographicCamera as OrthographicCamera3 } from "three";
8692
+ var ContextCamera = class extends OrthographicCamera3 {
8627
8693
  constructor(width, height) {
8628
8694
  super(-width / 2, width / 2, height / 2, -height / 2, -1e4, 5e4);
8629
8695
  this.up.set(0, 0, 1);
@@ -25309,6 +25375,7 @@ export {
25309
25375
  defaultGraphicOptions,
25310
25376
  defaultOptions3 as defaultOptions,
25311
25377
  defaultTextTextureOptions,
25378
+ deviceToVector3,
25312
25379
  dispose,
25313
25380
  distancePointToSegment,
25314
25381
  generatorKeyByObj,