venue-js 1.4.0-next.16 → 1.4.0-next.18
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/data/index.d.mts +33 -19
- package/dist/data/index.d.ts +33 -19
- package/dist/data/index.js +110 -16
- package/dist/data/index.js.map +1 -1
- package/dist/data/index.mjs +109 -16
- package/dist/data/index.mjs.map +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +162 -541
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +154 -534
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -1
package/dist/index.js
CHANGED
|
@@ -37,6 +37,7 @@ __export(index_exports, {
|
|
|
37
37
|
GEOJSON_FEATURE_TYPES: () => GEOJSON_FEATURE_TYPES,
|
|
38
38
|
HIGHLIGHT_LAYER_NAME: () => HIGHLIGHT_LAYER_NAME,
|
|
39
39
|
IMDF_FEATURE_TYPES: () => IMDF_FEATURE_TYPES,
|
|
40
|
+
IMDF_UNIT_CATEGORIES: () => IMDF_UNIT_CATEGORIES,
|
|
40
41
|
IndoorMap: () => IndoorMap,
|
|
41
42
|
LAST_USER_LOCATION_ELEMENT_ID_PREFIX: () => LAST_USER_LOCATION_ELEMENT_ID_PREFIX,
|
|
42
43
|
LAYERS: () => LAYERS,
|
|
@@ -114,6 +115,71 @@ var IMDF_FEATURE_TYPES = [
|
|
|
114
115
|
"unit",
|
|
115
116
|
"venue"
|
|
116
117
|
];
|
|
118
|
+
var IMDF_UNIT_CATEGORIES = [
|
|
119
|
+
"auditorium",
|
|
120
|
+
"brick",
|
|
121
|
+
"classroom",
|
|
122
|
+
"column",
|
|
123
|
+
"concrete",
|
|
124
|
+
"conferenceroom",
|
|
125
|
+
"drywall",
|
|
126
|
+
"elevator",
|
|
127
|
+
"escalator",
|
|
128
|
+
"fieldofplay",
|
|
129
|
+
"firstaid",
|
|
130
|
+
"fitnessroom",
|
|
131
|
+
"foodservice",
|
|
132
|
+
"footbridge",
|
|
133
|
+
"glass",
|
|
134
|
+
"huddleroom",
|
|
135
|
+
"kitchen",
|
|
136
|
+
"laboratory",
|
|
137
|
+
"library",
|
|
138
|
+
"lobby",
|
|
139
|
+
"lounge",
|
|
140
|
+
"mailroom",
|
|
141
|
+
"mothersroom",
|
|
142
|
+
"movietheater",
|
|
143
|
+
"movingwalkway",
|
|
144
|
+
"nonpublic",
|
|
145
|
+
"office",
|
|
146
|
+
"opentobelow",
|
|
147
|
+
"parking",
|
|
148
|
+
"phoneroom",
|
|
149
|
+
"platform",
|
|
150
|
+
"privatelounge",
|
|
151
|
+
"ramp",
|
|
152
|
+
"recreation",
|
|
153
|
+
"restroom",
|
|
154
|
+
"restroom.family",
|
|
155
|
+
"restroom.female",
|
|
156
|
+
"restroom.female.wheelchair",
|
|
157
|
+
"restroom.male",
|
|
158
|
+
"restroom.male.wheelchair",
|
|
159
|
+
"restroom.transgender",
|
|
160
|
+
"restroom.transgender.wheelchair",
|
|
161
|
+
"restroom.unisex",
|
|
162
|
+
"restroom.unisex.wheelchair",
|
|
163
|
+
"restroom.wheelchair",
|
|
164
|
+
"road",
|
|
165
|
+
"room",
|
|
166
|
+
"serverroom",
|
|
167
|
+
"shower",
|
|
168
|
+
"smokingarea",
|
|
169
|
+
"stairs",
|
|
170
|
+
"steps",
|
|
171
|
+
"storage",
|
|
172
|
+
"structure",
|
|
173
|
+
"terrace",
|
|
174
|
+
"theater",
|
|
175
|
+
"unenclosedarea",
|
|
176
|
+
"unspecified",
|
|
177
|
+
"vegetation",
|
|
178
|
+
"waitingroom",
|
|
179
|
+
"walkway",
|
|
180
|
+
"walkway.island",
|
|
181
|
+
"wood"
|
|
182
|
+
];
|
|
117
183
|
var NONIMDF_FEATURE_TYPES = [
|
|
118
184
|
"taxonomy",
|
|
119
185
|
"event",
|
|
@@ -355,7 +421,7 @@ var isValidPoint = (geometry) => {
|
|
|
355
421
|
function isInFilter(filter) {
|
|
356
422
|
return typeof filter === "object" && filter !== null && "$in" in filter && Array.isArray(filter.$in);
|
|
357
423
|
}
|
|
358
|
-
var someIntersect = (a, b) => a.some((
|
|
424
|
+
var someIntersect = (a, b) => a.some((v) => b.includes(v));
|
|
359
425
|
function matchFilter(value, filter) {
|
|
360
426
|
if (Array.isArray(value)) {
|
|
361
427
|
if (isInFilter(filter)) return someIntersect(value, filter.$in);
|
|
@@ -410,7 +476,27 @@ var getOccupantMarkerLocations = (occupant, options) => {
|
|
|
410
476
|
var import_query_core = require("@tanstack/query-core");
|
|
411
477
|
|
|
412
478
|
// src/data/populator/index.ts
|
|
413
|
-
var
|
|
479
|
+
var import_center2 = require("@turf/center");
|
|
480
|
+
var import_boolean_point_in_polygon2 = require("@turf/boolean-point-in-polygon");
|
|
481
|
+
|
|
482
|
+
// src/data/utils/findContaining.ts
|
|
483
|
+
var import_center = require("@turf/center");
|
|
484
|
+
var import_boolean_point_in_polygon = require("@turf/boolean-point-in-polygon");
|
|
485
|
+
var findContainingUnit = (poi, units) => {
|
|
486
|
+
const unit = units.find(
|
|
487
|
+
(unit2) => {
|
|
488
|
+
try {
|
|
489
|
+
return unit2.properties.level_id === poi.properties.level_id && (0, import_boolean_point_in_polygon.booleanPointInPolygon)((0, import_center.center)(poi), unit2);
|
|
490
|
+
} catch (e) {
|
|
491
|
+
console.log(`Cannot find containing unit of (${poi.id}):`, e.message);
|
|
492
|
+
return false;
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
);
|
|
496
|
+
return unit;
|
|
497
|
+
};
|
|
498
|
+
|
|
499
|
+
// src/data/populator/index.ts
|
|
414
500
|
var createPopulator = ({
|
|
415
501
|
internalFindById,
|
|
416
502
|
internalFilterByType
|
|
@@ -420,7 +506,6 @@ var createPopulator = ({
|
|
|
420
506
|
const populateDetail = (detail) => Promise.resolve(detail);
|
|
421
507
|
const populateFootprint = (footprint) => Promise.resolve(footprint);
|
|
422
508
|
const populateGeofence = (geofence) => Promise.resolve(geofence);
|
|
423
|
-
const populateRelationship = (relationship) => Promise.resolve(relationship);
|
|
424
509
|
const populatePrivilege = (privilege) => Promise.resolve(privilege);
|
|
425
510
|
const populateEvent = (event) => Promise.resolve(event);
|
|
426
511
|
const populatePromotion = async (promotion) => {
|
|
@@ -444,7 +529,7 @@ var createPopulator = ({
|
|
|
444
529
|
const ordinalKiosks = kiosks.filter(
|
|
445
530
|
(kiosk2) => kiosk2.properties.level_id === defaultLevel.id
|
|
446
531
|
);
|
|
447
|
-
const kiosk = ordinalKiosks.find((kiosk2) => (0,
|
|
532
|
+
const kiosk = ordinalKiosks.find((kiosk2) => (0, import_boolean_point_in_polygon2.booleanPointInPolygon)(amenity, kiosk2));
|
|
448
533
|
return {
|
|
449
534
|
...amenity,
|
|
450
535
|
properties: {
|
|
@@ -463,7 +548,7 @@ var createPopulator = ({
|
|
|
463
548
|
const venue = await internalFindById(unit.properties.venue_id);
|
|
464
549
|
const level = await internalFindById(unit.properties.level_id);
|
|
465
550
|
const sections = await internalFilterByType("section");
|
|
466
|
-
const section = sections.find((section2) => (0,
|
|
551
|
+
const section = sections.find((section2) => (0, import_boolean_point_in_polygon2.booleanPointInPolygon)(anchor, section2));
|
|
467
552
|
return {
|
|
468
553
|
...anchor,
|
|
469
554
|
properties: {
|
|
@@ -496,20 +581,11 @@ var createPopulator = ({
|
|
|
496
581
|
const venue = await internalFindById(kiosk.properties.venue_id);
|
|
497
582
|
const anchor = await internalFindById(kiosk.properties.anchor_id);
|
|
498
583
|
const units = await internalFilterByType("unit");
|
|
499
|
-
const unit = units.
|
|
500
|
-
(unit2) => {
|
|
501
|
-
try {
|
|
502
|
-
return unit2.properties.category === "walkway" && unit2.properties.level_id === kiosk.properties.level_id && (0, import_boolean_within.booleanWithin)(kiosk, unit2);
|
|
503
|
-
} catch (e) {
|
|
504
|
-
console.log(`Cannot find kiosk(${kiosk.id})'s units:`, e.message);
|
|
505
|
-
return false;
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
);
|
|
584
|
+
const unit = findContainingUnit(kiosk, units.filter((unit2) => unit2.properties.category === "walkway"));
|
|
509
585
|
let section = null;
|
|
510
586
|
if (anchor) {
|
|
511
587
|
const sections = await internalFilterByType("section");
|
|
512
|
-
section = sections.find((section2) => (0,
|
|
588
|
+
section = sections.find((section2) => (0, import_boolean_point_in_polygon2.booleanPointInPolygon)(anchor, section2));
|
|
513
589
|
}
|
|
514
590
|
return {
|
|
515
591
|
...kiosk,
|
|
@@ -591,6 +667,23 @@ var createPopulator = ({
|
|
|
591
667
|
}
|
|
592
668
|
};
|
|
593
669
|
};
|
|
670
|
+
const populateRelationship = async (relationship) => {
|
|
671
|
+
const originId = relationship.properties.origin?.id;
|
|
672
|
+
const destinationId = relationship.properties.destination?.id;
|
|
673
|
+
const origin = originId ? await internalFindById(originId) : null;
|
|
674
|
+
const destination = destinationId ? await internalFindById(destinationId) : null;
|
|
675
|
+
const intermediary_ids = (relationship.properties.intermediary || []).map(({ id }) => id);
|
|
676
|
+
const intermediary = await Promise.all(intermediary_ids.map(internalFindById));
|
|
677
|
+
return {
|
|
678
|
+
...relationship,
|
|
679
|
+
properties: {
|
|
680
|
+
...relationship.properties,
|
|
681
|
+
origin,
|
|
682
|
+
destination,
|
|
683
|
+
intermediary
|
|
684
|
+
}
|
|
685
|
+
};
|
|
686
|
+
};
|
|
594
687
|
const populateSection = async (section) => {
|
|
595
688
|
const venue = await internalFindById(section.properties.venue_id);
|
|
596
689
|
const level = await internalFindById(section.properties.level_id);
|
|
@@ -609,7 +702,7 @@ var createPopulator = ({
|
|
|
609
702
|
const level = await internalFindById(unit.properties.level_id);
|
|
610
703
|
const sections = await internalFilterByType("section");
|
|
611
704
|
try {
|
|
612
|
-
const section = unit.geometry.type !== "MultiPolygon" ? sections.find((section2) => (0,
|
|
705
|
+
const section = unit.geometry.type !== "MultiPolygon" ? sections.find((section2) => (0, import_boolean_point_in_polygon2.booleanPointInPolygon)((0, import_center2.center)(unit), section2)) : null;
|
|
613
706
|
return {
|
|
614
707
|
...unit,
|
|
615
708
|
properties: {
|
|
@@ -2183,7 +2276,7 @@ var import_transcoders = require("@maptalks/transcoders.draco");
|
|
|
2183
2276
|
var import_tween = __toESM(require("@tweenjs/tween.js"));
|
|
2184
2277
|
var import_lodash10 = __toESM(require("lodash"));
|
|
2185
2278
|
|
|
2186
|
-
//
|
|
2279
|
+
// node_modules/@turf/helpers/dist/esm/index.js
|
|
2187
2280
|
var earthRadius = 63710088e-1;
|
|
2188
2281
|
var factors = {
|
|
2189
2282
|
centimeters: earthRadius * 100,
|
|
@@ -2289,7 +2382,7 @@ function isNumber2(num) {
|
|
|
2289
2382
|
|
|
2290
2383
|
// src/IndoorMap/IndoorMap.ts
|
|
2291
2384
|
var import_distance = __toESM(require("@turf/distance"));
|
|
2292
|
-
var
|
|
2385
|
+
var import_center6 = __toESM(require("@turf/center"));
|
|
2293
2386
|
var import_three6 = require("three");
|
|
2294
2387
|
var import_maptalks10 = require("maptalks.three");
|
|
2295
2388
|
|
|
@@ -2370,7 +2463,7 @@ var VENUE_EVENTS = {
|
|
|
2370
2463
|
// src/IndoorMap/utils/createElements.js
|
|
2371
2464
|
var import_lodash6 = __toESM(require("lodash"));
|
|
2372
2465
|
var import_maptalks4 = require("maptalks");
|
|
2373
|
-
var
|
|
2466
|
+
var import_center4 = __toESM(require("@turf/center"));
|
|
2374
2467
|
var import_buffer = __toESM(require("@turf/buffer"));
|
|
2375
2468
|
var import_three4 = require("three");
|
|
2376
2469
|
|
|
@@ -2404,7 +2497,7 @@ var Billboard = class extends import_maptalks.BaseObject {
|
|
|
2404
2497
|
this._initOptions(options);
|
|
2405
2498
|
const {
|
|
2406
2499
|
altitude = OPTIONS.altitude,
|
|
2407
|
-
scale:
|
|
2500
|
+
scale: scale2 = OPTIONS.scale,
|
|
2408
2501
|
alphaTest = OPTIONS.alphaTest,
|
|
2409
2502
|
legColor = OPTIONS.legColor,
|
|
2410
2503
|
showLeg = OPTIONS.showLeg
|
|
@@ -2438,8 +2531,8 @@ var Billboard = class extends import_maptalks.BaseObject {
|
|
|
2438
2531
|
const sprite = new import_three.Sprite(material);
|
|
2439
2532
|
sprite.material.sizeAttenuation = false;
|
|
2440
2533
|
sprite.scale.set(
|
|
2441
|
-
|
|
2442
|
-
|
|
2534
|
+
scale2 * naturalWidth / divider,
|
|
2535
|
+
scale2 * naturalHeight / divider,
|
|
2443
2536
|
1
|
|
2444
2537
|
);
|
|
2445
2538
|
this.getObject3d().add(sprite);
|
|
@@ -2448,7 +2541,7 @@ var Billboard = class extends import_maptalks.BaseObject {
|
|
|
2448
2541
|
const position = layer.coordinateToVector3(coordinate, z);
|
|
2449
2542
|
import_lodash3.default.set(this.properties, "default.position", position);
|
|
2450
2543
|
import_lodash3.default.set(this.properties, "default.altitude", altitude);
|
|
2451
|
-
import_lodash3.default.set(this.properties, "default.scale",
|
|
2544
|
+
import_lodash3.default.set(this.properties, "default.scale", scale2);
|
|
2452
2545
|
this.getObject3d().position.copy(position);
|
|
2453
2546
|
}
|
|
2454
2547
|
setLineHeight(altitude) {
|
|
@@ -2488,18 +2581,18 @@ var SpriteMarker = class extends import_maptalks2.BaseObject {
|
|
|
2488
2581
|
this._createGroup();
|
|
2489
2582
|
const {
|
|
2490
2583
|
altitude = DEFAULT_OPTIONS.altitude,
|
|
2491
|
-
scale:
|
|
2584
|
+
scale: scale2 = DEFAULT_OPTIONS.scale,
|
|
2492
2585
|
highlight = DEFAULT_OPTIONS.highlight,
|
|
2493
2586
|
alphaTest = DEFAULT_OPTIONS.alphaTest
|
|
2494
2587
|
} = options;
|
|
2495
2588
|
this.properties = { ...properties };
|
|
2496
2589
|
const modifiedAltitude = altitude + 2;
|
|
2497
|
-
this.#default = { options: { scale:
|
|
2590
|
+
this.#default = { options: { scale: scale2, altitude: modifiedAltitude }, material };
|
|
2498
2591
|
this.#highlight = import_lodash4.default.merge({}, DEFAULT_OPTIONS.highlight, highlight);
|
|
2499
2592
|
if (material && material instanceof import_three2.SpriteMaterial)
|
|
2500
2593
|
material.alphaTest = alphaTest;
|
|
2501
2594
|
const sprite = new import_three2.Sprite(material);
|
|
2502
|
-
sprite.scale.set(
|
|
2595
|
+
sprite.scale.set(scale2, scale2, scale2);
|
|
2503
2596
|
const obj3d = this.getObject3d();
|
|
2504
2597
|
obj3d.add(sprite);
|
|
2505
2598
|
const z = layer.altitudeToVector3(modifiedAltitude, modifiedAltitude).x;
|
|
@@ -2645,14 +2738,14 @@ var NavigationPath = class extends import_maptalks3.BaseObject {
|
|
|
2645
2738
|
};
|
|
2646
2739
|
|
|
2647
2740
|
// src/IndoorMap/utils/geometry.ts
|
|
2648
|
-
var
|
|
2741
|
+
var import_center3 = __toESM(require("@turf/center"));
|
|
2649
2742
|
var import_lodash5 = __toESM(require("lodash"));
|
|
2650
2743
|
var import_line_offset = __toESM(require("@turf/line-offset"));
|
|
2651
2744
|
var getCenterFromGeometry = (geometry) => {
|
|
2652
2745
|
try {
|
|
2653
2746
|
const { type = null, coordinates = null } = geometry;
|
|
2654
2747
|
if (!type || !coordinates) return null;
|
|
2655
|
-
const centerPoint = (0,
|
|
2748
|
+
const centerPoint = (0, import_center3.default)(geometry);
|
|
2656
2749
|
return import_lodash5.default.get(centerPoint, "geometry.coordinates");
|
|
2657
2750
|
} catch (error) {
|
|
2658
2751
|
return null;
|
|
@@ -2699,8 +2792,8 @@ var createSVGPathFromMarkerSymbol = (style) => {
|
|
|
2699
2792
|
markerFill,
|
|
2700
2793
|
markerPath
|
|
2701
2794
|
} = style;
|
|
2702
|
-
const
|
|
2703
|
-
return `<path d="${markerPath}" style="transform:translate(${markerDx}px, ${markerDy}px) scale(${
|
|
2795
|
+
const scale2 = markerWidth / 24;
|
|
2796
|
+
return `<path d="${markerPath}" style="transform:translate(${markerDx}px, ${markerDy}px) scale(${scale2})" fill="${markerFill}"/>`;
|
|
2704
2797
|
};
|
|
2705
2798
|
|
|
2706
2799
|
// src/IndoorMap/utils/createElements.js
|
|
@@ -3132,7 +3225,7 @@ var styledFeatureGenerator = (mapTheme) => {
|
|
|
3132
3225
|
const mainLocationId = import_lodash6.default.get(properties, "unit.id") || import_lodash6.default.get(properties, "kiosk.id");
|
|
3133
3226
|
const isMainLocationFeature = mainLocationId === locatedFeature?.id;
|
|
3134
3227
|
const { geometry: mainLocationGeometry } = properties?.anchor;
|
|
3135
|
-
const geometry = isMainLocationFeature ? mainLocationGeometry : (0,
|
|
3228
|
+
const geometry = isMainLocationFeature ? mainLocationGeometry : (0, import_center4.default)(locatedFeature)?.geometry;
|
|
3136
3229
|
const baseProperties = {
|
|
3137
3230
|
id,
|
|
3138
3231
|
feature_type,
|
|
@@ -3636,7 +3729,7 @@ var styledFeatureGenerator = (mapTheme) => {
|
|
|
3636
3729
|
const {
|
|
3637
3730
|
logo,
|
|
3638
3731
|
altitude,
|
|
3639
|
-
scale:
|
|
3732
|
+
scale: scale2,
|
|
3640
3733
|
alphaTest,
|
|
3641
3734
|
legColor,
|
|
3642
3735
|
showLeg,
|
|
@@ -3650,7 +3743,7 @@ var styledFeatureGenerator = (mapTheme) => {
|
|
|
3650
3743
|
};
|
|
3651
3744
|
const options = {
|
|
3652
3745
|
altitude,
|
|
3653
|
-
scale:
|
|
3746
|
+
scale: scale2,
|
|
3654
3747
|
alphaTest,
|
|
3655
3748
|
legColor,
|
|
3656
3749
|
showLeg,
|
|
@@ -3894,9 +3987,9 @@ var getRelatedLocationsByAmenity = (feature2) => {
|
|
|
3894
3987
|
var getRelatedLocationIdsByFeature = (feature2) => {
|
|
3895
3988
|
switch (feature2?.feature_type) {
|
|
3896
3989
|
case "amenity":
|
|
3897
|
-
return getRelatedLocationsByAmenity(feature2).map((
|
|
3990
|
+
return getRelatedLocationsByAmenity(feature2).map((v) => v?.id);
|
|
3898
3991
|
case "occupant":
|
|
3899
|
-
return getRelatedLocationsByOccupant(feature2).map((
|
|
3992
|
+
return getRelatedLocationsByOccupant(feature2).map((v) => v?.id);
|
|
3900
3993
|
default:
|
|
3901
3994
|
return [];
|
|
3902
3995
|
}
|
|
@@ -4132,7 +4225,7 @@ var CameraManager = class {
|
|
|
4132
4225
|
|
|
4133
4226
|
// src/IndoorMap/renderer/RendererManager.ts
|
|
4134
4227
|
var import_lodash9 = require("lodash");
|
|
4135
|
-
var
|
|
4228
|
+
var import_center5 = require("@turf/center");
|
|
4136
4229
|
var THREE4 = __toESM(require("three"));
|
|
4137
4230
|
|
|
4138
4231
|
// src/IndoorMap/renderer/3d/Element3DRenderer.ts
|
|
@@ -4226,22 +4319,22 @@ var getMaterial = (text, flatLabelOptions) => {
|
|
|
4226
4319
|
texts = wrapText(ctx, text, maxWidth);
|
|
4227
4320
|
}
|
|
4228
4321
|
let textWidth = (0, import_lodash7.max)(texts.map((text2) => ctx.measureText(text2).width));
|
|
4229
|
-
let
|
|
4230
|
-
while (
|
|
4231
|
-
|
|
4232
|
-
ctx.font = `${fontWeight} ${
|
|
4322
|
+
let scale2 = 1;
|
|
4323
|
+
while (scale2 > 0 && textWidth + 2 * margin > SIZE) {
|
|
4324
|
+
scale2 -= scaleStep;
|
|
4325
|
+
ctx.font = `${fontWeight} ${scale2 * fontSize}px "${fontFamily}", Arial`;
|
|
4233
4326
|
textWidth = (0, import_lodash7.max)(texts.map((text2) => ctx.measureText(text2).width));
|
|
4234
4327
|
}
|
|
4235
|
-
const
|
|
4236
|
-
if (
|
|
4237
|
-
const totalHeight = texts.length * (fontSize *
|
|
4238
|
-
const startY =
|
|
4328
|
+
const center4 = { x: 0.5 * SIZE, y: 0.5 * SIZE };
|
|
4329
|
+
if (scale2 > scaleMin) {
|
|
4330
|
+
const totalHeight = texts.length * (fontSize * scale2 * lineHeight);
|
|
4331
|
+
const startY = center4.y - totalHeight / 2 + fontSize * scale2 * lineHeight * 0.5;
|
|
4239
4332
|
texts.forEach((text2, index) => {
|
|
4240
|
-
const yOffset = startY + index * (fontSize *
|
|
4333
|
+
const yOffset = startY + index * (fontSize * scale2 * lineHeight);
|
|
4241
4334
|
if (strokeStyle && lineWidth) {
|
|
4242
|
-
ctx.strokeText(text2,
|
|
4335
|
+
ctx.strokeText(text2, center4.x, yOffset);
|
|
4243
4336
|
}
|
|
4244
|
-
ctx.fillText(text2,
|
|
4337
|
+
ctx.fillText(text2, center4.x, yOffset);
|
|
4245
4338
|
});
|
|
4246
4339
|
}
|
|
4247
4340
|
const texture = new import_three5.Texture(canvas);
|
|
@@ -4318,8 +4411,8 @@ var GroundLabel = class extends import_maptalks6.BaseObject {
|
|
|
4318
4411
|
const basePosition = layer.coordinateToVector3([cx, cy], z);
|
|
4319
4412
|
this.#originalPosition = basePosition.clone();
|
|
4320
4413
|
const finalPosition = this.#calculateFinalPosition(basePosition);
|
|
4321
|
-
const
|
|
4322
|
-
const finalScale = maxFontScale &&
|
|
4414
|
+
const scale2 = width / 6456122659e-13;
|
|
4415
|
+
const finalScale = maxFontScale && scale2 > maxFontScale ? maxFontScale : scale2;
|
|
4323
4416
|
this.getObject3d().scale.set(finalScale, finalScale, finalScale);
|
|
4324
4417
|
this.getObject3d().position.copy(finalPosition);
|
|
4325
4418
|
this.getObject3d().rotation.z = Math.PI / 180 * this.#angle;
|
|
@@ -4711,10 +4804,10 @@ var Element3DRenderer = class extends EventTarget {
|
|
|
4711
4804
|
this.threeLayer.addMesh(groundLabel);
|
|
4712
4805
|
return groundLabel;
|
|
4713
4806
|
}
|
|
4714
|
-
async createModel3d(
|
|
4715
|
-
const marker = new maptalks4.GLTFMarker(
|
|
4807
|
+
async createModel3d(center4, url) {
|
|
4808
|
+
const marker = new maptalks4.GLTFMarker(center4, {
|
|
4716
4809
|
symbol: {
|
|
4717
|
-
url
|
|
4810
|
+
url
|
|
4718
4811
|
}
|
|
4719
4812
|
});
|
|
4720
4813
|
marker.addTo(this.gltfLayer);
|
|
@@ -5292,478 +5385,11 @@ var angleBetweenLineStrings = (line1, line2) => {
|
|
|
5292
5385
|
return Math.atan2(dy, dx);
|
|
5293
5386
|
};
|
|
5294
5387
|
|
|
5295
|
-
// ../../node_modules/point-in-polygon-hao/node_modules/robust-predicates/esm/util.js
|
|
5296
|
-
var epsilon = 11102230246251565e-32;
|
|
5297
|
-
var splitter = 134217729;
|
|
5298
|
-
var resulterrbound = (3 + 8 * epsilon) * epsilon;
|
|
5299
|
-
function sum(elen, e, flen, f, h) {
|
|
5300
|
-
let Q, Qnew, hh, bvirt;
|
|
5301
|
-
let enow = e[0];
|
|
5302
|
-
let fnow = f[0];
|
|
5303
|
-
let eindex = 0;
|
|
5304
|
-
let findex = 0;
|
|
5305
|
-
if (fnow > enow === fnow > -enow) {
|
|
5306
|
-
Q = enow;
|
|
5307
|
-
enow = e[++eindex];
|
|
5308
|
-
} else {
|
|
5309
|
-
Q = fnow;
|
|
5310
|
-
fnow = f[++findex];
|
|
5311
|
-
}
|
|
5312
|
-
let hindex = 0;
|
|
5313
|
-
if (eindex < elen && findex < flen) {
|
|
5314
|
-
if (fnow > enow === fnow > -enow) {
|
|
5315
|
-
Qnew = enow + Q;
|
|
5316
|
-
hh = Q - (Qnew - enow);
|
|
5317
|
-
enow = e[++eindex];
|
|
5318
|
-
} else {
|
|
5319
|
-
Qnew = fnow + Q;
|
|
5320
|
-
hh = Q - (Qnew - fnow);
|
|
5321
|
-
fnow = f[++findex];
|
|
5322
|
-
}
|
|
5323
|
-
Q = Qnew;
|
|
5324
|
-
if (hh !== 0) {
|
|
5325
|
-
h[hindex++] = hh;
|
|
5326
|
-
}
|
|
5327
|
-
while (eindex < elen && findex < flen) {
|
|
5328
|
-
if (fnow > enow === fnow > -enow) {
|
|
5329
|
-
Qnew = Q + enow;
|
|
5330
|
-
bvirt = Qnew - Q;
|
|
5331
|
-
hh = Q - (Qnew - bvirt) + (enow - bvirt);
|
|
5332
|
-
enow = e[++eindex];
|
|
5333
|
-
} else {
|
|
5334
|
-
Qnew = Q + fnow;
|
|
5335
|
-
bvirt = Qnew - Q;
|
|
5336
|
-
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
|
|
5337
|
-
fnow = f[++findex];
|
|
5338
|
-
}
|
|
5339
|
-
Q = Qnew;
|
|
5340
|
-
if (hh !== 0) {
|
|
5341
|
-
h[hindex++] = hh;
|
|
5342
|
-
}
|
|
5343
|
-
}
|
|
5344
|
-
}
|
|
5345
|
-
while (eindex < elen) {
|
|
5346
|
-
Qnew = Q + enow;
|
|
5347
|
-
bvirt = Qnew - Q;
|
|
5348
|
-
hh = Q - (Qnew - bvirt) + (enow - bvirt);
|
|
5349
|
-
enow = e[++eindex];
|
|
5350
|
-
Q = Qnew;
|
|
5351
|
-
if (hh !== 0) {
|
|
5352
|
-
h[hindex++] = hh;
|
|
5353
|
-
}
|
|
5354
|
-
}
|
|
5355
|
-
while (findex < flen) {
|
|
5356
|
-
Qnew = Q + fnow;
|
|
5357
|
-
bvirt = Qnew - Q;
|
|
5358
|
-
hh = Q - (Qnew - bvirt) + (fnow - bvirt);
|
|
5359
|
-
fnow = f[++findex];
|
|
5360
|
-
Q = Qnew;
|
|
5361
|
-
if (hh !== 0) {
|
|
5362
|
-
h[hindex++] = hh;
|
|
5363
|
-
}
|
|
5364
|
-
}
|
|
5365
|
-
if (Q !== 0 || hindex === 0) {
|
|
5366
|
-
h[hindex++] = Q;
|
|
5367
|
-
}
|
|
5368
|
-
return hindex;
|
|
5369
|
-
}
|
|
5370
|
-
function estimate(elen, e) {
|
|
5371
|
-
let Q = e[0];
|
|
5372
|
-
for (let i = 1; i < elen; i++) Q += e[i];
|
|
5373
|
-
return Q;
|
|
5374
|
-
}
|
|
5375
|
-
function vec(n) {
|
|
5376
|
-
return new Float64Array(n);
|
|
5377
|
-
}
|
|
5378
|
-
|
|
5379
|
-
// ../../node_modules/point-in-polygon-hao/node_modules/robust-predicates/esm/orient2d.js
|
|
5380
|
-
var ccwerrboundA = (3 + 16 * epsilon) * epsilon;
|
|
5381
|
-
var ccwerrboundB = (2 + 12 * epsilon) * epsilon;
|
|
5382
|
-
var ccwerrboundC = (9 + 64 * epsilon) * epsilon * epsilon;
|
|
5383
|
-
var B = vec(4);
|
|
5384
|
-
var C1 = vec(8);
|
|
5385
|
-
var C2 = vec(12);
|
|
5386
|
-
var D = vec(16);
|
|
5387
|
-
var u = vec(4);
|
|
5388
|
-
function orient2dadapt(ax, ay, bx, by, cx, cy, detsum) {
|
|
5389
|
-
let acxtail, acytail, bcxtail, bcytail;
|
|
5390
|
-
let bvirt, c, ahi, alo, bhi, blo, _i, _j, _0, s1, s0, t1, t0, u32;
|
|
5391
|
-
const acx = ax - cx;
|
|
5392
|
-
const bcx = bx - cx;
|
|
5393
|
-
const acy = ay - cy;
|
|
5394
|
-
const bcy = by - cy;
|
|
5395
|
-
s1 = acx * bcy;
|
|
5396
|
-
c = splitter * acx;
|
|
5397
|
-
ahi = c - (c - acx);
|
|
5398
|
-
alo = acx - ahi;
|
|
5399
|
-
c = splitter * bcy;
|
|
5400
|
-
bhi = c - (c - bcy);
|
|
5401
|
-
blo = bcy - bhi;
|
|
5402
|
-
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5403
|
-
t1 = acy * bcx;
|
|
5404
|
-
c = splitter * acy;
|
|
5405
|
-
ahi = c - (c - acy);
|
|
5406
|
-
alo = acy - ahi;
|
|
5407
|
-
c = splitter * bcx;
|
|
5408
|
-
bhi = c - (c - bcx);
|
|
5409
|
-
blo = bcx - bhi;
|
|
5410
|
-
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5411
|
-
_i = s0 - t0;
|
|
5412
|
-
bvirt = s0 - _i;
|
|
5413
|
-
B[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
5414
|
-
_j = s1 + _i;
|
|
5415
|
-
bvirt = _j - s1;
|
|
5416
|
-
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
5417
|
-
_i = _0 - t1;
|
|
5418
|
-
bvirt = _0 - _i;
|
|
5419
|
-
B[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
5420
|
-
u32 = _j + _i;
|
|
5421
|
-
bvirt = u32 - _j;
|
|
5422
|
-
B[2] = _j - (u32 - bvirt) + (_i - bvirt);
|
|
5423
|
-
B[3] = u32;
|
|
5424
|
-
let det = estimate(4, B);
|
|
5425
|
-
let errbound = ccwerrboundB * detsum;
|
|
5426
|
-
if (det >= errbound || -det >= errbound) {
|
|
5427
|
-
return det;
|
|
5428
|
-
}
|
|
5429
|
-
bvirt = ax - acx;
|
|
5430
|
-
acxtail = ax - (acx + bvirt) + (bvirt - cx);
|
|
5431
|
-
bvirt = bx - bcx;
|
|
5432
|
-
bcxtail = bx - (bcx + bvirt) + (bvirt - cx);
|
|
5433
|
-
bvirt = ay - acy;
|
|
5434
|
-
acytail = ay - (acy + bvirt) + (bvirt - cy);
|
|
5435
|
-
bvirt = by - bcy;
|
|
5436
|
-
bcytail = by - (bcy + bvirt) + (bvirt - cy);
|
|
5437
|
-
if (acxtail === 0 && acytail === 0 && bcxtail === 0 && bcytail === 0) {
|
|
5438
|
-
return det;
|
|
5439
|
-
}
|
|
5440
|
-
errbound = ccwerrboundC * detsum + resulterrbound * Math.abs(det);
|
|
5441
|
-
det += acx * bcytail + bcy * acxtail - (acy * bcxtail + bcx * acytail);
|
|
5442
|
-
if (det >= errbound || -det >= errbound) return det;
|
|
5443
|
-
s1 = acxtail * bcy;
|
|
5444
|
-
c = splitter * acxtail;
|
|
5445
|
-
ahi = c - (c - acxtail);
|
|
5446
|
-
alo = acxtail - ahi;
|
|
5447
|
-
c = splitter * bcy;
|
|
5448
|
-
bhi = c - (c - bcy);
|
|
5449
|
-
blo = bcy - bhi;
|
|
5450
|
-
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5451
|
-
t1 = acytail * bcx;
|
|
5452
|
-
c = splitter * acytail;
|
|
5453
|
-
ahi = c - (c - acytail);
|
|
5454
|
-
alo = acytail - ahi;
|
|
5455
|
-
c = splitter * bcx;
|
|
5456
|
-
bhi = c - (c - bcx);
|
|
5457
|
-
blo = bcx - bhi;
|
|
5458
|
-
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5459
|
-
_i = s0 - t0;
|
|
5460
|
-
bvirt = s0 - _i;
|
|
5461
|
-
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
5462
|
-
_j = s1 + _i;
|
|
5463
|
-
bvirt = _j - s1;
|
|
5464
|
-
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
5465
|
-
_i = _0 - t1;
|
|
5466
|
-
bvirt = _0 - _i;
|
|
5467
|
-
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
5468
|
-
u32 = _j + _i;
|
|
5469
|
-
bvirt = u32 - _j;
|
|
5470
|
-
u[2] = _j - (u32 - bvirt) + (_i - bvirt);
|
|
5471
|
-
u[3] = u32;
|
|
5472
|
-
const C1len = sum(4, B, 4, u, C1);
|
|
5473
|
-
s1 = acx * bcytail;
|
|
5474
|
-
c = splitter * acx;
|
|
5475
|
-
ahi = c - (c - acx);
|
|
5476
|
-
alo = acx - ahi;
|
|
5477
|
-
c = splitter * bcytail;
|
|
5478
|
-
bhi = c - (c - bcytail);
|
|
5479
|
-
blo = bcytail - bhi;
|
|
5480
|
-
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5481
|
-
t1 = acy * bcxtail;
|
|
5482
|
-
c = splitter * acy;
|
|
5483
|
-
ahi = c - (c - acy);
|
|
5484
|
-
alo = acy - ahi;
|
|
5485
|
-
c = splitter * bcxtail;
|
|
5486
|
-
bhi = c - (c - bcxtail);
|
|
5487
|
-
blo = bcxtail - bhi;
|
|
5488
|
-
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5489
|
-
_i = s0 - t0;
|
|
5490
|
-
bvirt = s0 - _i;
|
|
5491
|
-
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
5492
|
-
_j = s1 + _i;
|
|
5493
|
-
bvirt = _j - s1;
|
|
5494
|
-
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
5495
|
-
_i = _0 - t1;
|
|
5496
|
-
bvirt = _0 - _i;
|
|
5497
|
-
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
5498
|
-
u32 = _j + _i;
|
|
5499
|
-
bvirt = u32 - _j;
|
|
5500
|
-
u[2] = _j - (u32 - bvirt) + (_i - bvirt);
|
|
5501
|
-
u[3] = u32;
|
|
5502
|
-
const C2len = sum(C1len, C1, 4, u, C2);
|
|
5503
|
-
s1 = acxtail * bcytail;
|
|
5504
|
-
c = splitter * acxtail;
|
|
5505
|
-
ahi = c - (c - acxtail);
|
|
5506
|
-
alo = acxtail - ahi;
|
|
5507
|
-
c = splitter * bcytail;
|
|
5508
|
-
bhi = c - (c - bcytail);
|
|
5509
|
-
blo = bcytail - bhi;
|
|
5510
|
-
s0 = alo * blo - (s1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5511
|
-
t1 = acytail * bcxtail;
|
|
5512
|
-
c = splitter * acytail;
|
|
5513
|
-
ahi = c - (c - acytail);
|
|
5514
|
-
alo = acytail - ahi;
|
|
5515
|
-
c = splitter * bcxtail;
|
|
5516
|
-
bhi = c - (c - bcxtail);
|
|
5517
|
-
blo = bcxtail - bhi;
|
|
5518
|
-
t0 = alo * blo - (t1 - ahi * bhi - alo * bhi - ahi * blo);
|
|
5519
|
-
_i = s0 - t0;
|
|
5520
|
-
bvirt = s0 - _i;
|
|
5521
|
-
u[0] = s0 - (_i + bvirt) + (bvirt - t0);
|
|
5522
|
-
_j = s1 + _i;
|
|
5523
|
-
bvirt = _j - s1;
|
|
5524
|
-
_0 = s1 - (_j - bvirt) + (_i - bvirt);
|
|
5525
|
-
_i = _0 - t1;
|
|
5526
|
-
bvirt = _0 - _i;
|
|
5527
|
-
u[1] = _0 - (_i + bvirt) + (bvirt - t1);
|
|
5528
|
-
u32 = _j + _i;
|
|
5529
|
-
bvirt = u32 - _j;
|
|
5530
|
-
u[2] = _j - (u32 - bvirt) + (_i - bvirt);
|
|
5531
|
-
u[3] = u32;
|
|
5532
|
-
const Dlen = sum(C2len, C2, 4, u, D);
|
|
5533
|
-
return D[Dlen - 1];
|
|
5534
|
-
}
|
|
5535
|
-
function orient2d(ax, ay, bx, by, cx, cy) {
|
|
5536
|
-
const detleft = (ay - cy) * (bx - cx);
|
|
5537
|
-
const detright = (ax - cx) * (by - cy);
|
|
5538
|
-
const det = detleft - detright;
|
|
5539
|
-
const detsum = Math.abs(detleft + detright);
|
|
5540
|
-
if (Math.abs(det) >= ccwerrboundA * detsum) return det;
|
|
5541
|
-
return -orient2dadapt(ax, ay, bx, by, cx, cy, detsum);
|
|
5542
|
-
}
|
|
5543
|
-
|
|
5544
|
-
// ../../node_modules/point-in-polygon-hao/node_modules/robust-predicates/esm/orient3d.js
|
|
5545
|
-
var o3derrboundA = (7 + 56 * epsilon) * epsilon;
|
|
5546
|
-
var o3derrboundB = (3 + 28 * epsilon) * epsilon;
|
|
5547
|
-
var o3derrboundC = (26 + 288 * epsilon) * epsilon * epsilon;
|
|
5548
|
-
var bc = vec(4);
|
|
5549
|
-
var ca = vec(4);
|
|
5550
|
-
var ab = vec(4);
|
|
5551
|
-
var at_b = vec(4);
|
|
5552
|
-
var at_c = vec(4);
|
|
5553
|
-
var bt_c = vec(4);
|
|
5554
|
-
var bt_a = vec(4);
|
|
5555
|
-
var ct_a = vec(4);
|
|
5556
|
-
var ct_b = vec(4);
|
|
5557
|
-
var bct = vec(8);
|
|
5558
|
-
var cat = vec(8);
|
|
5559
|
-
var abt = vec(8);
|
|
5560
|
-
var u2 = vec(4);
|
|
5561
|
-
var _8 = vec(8);
|
|
5562
|
-
var _8b = vec(8);
|
|
5563
|
-
var _16 = vec(8);
|
|
5564
|
-
var _12 = vec(12);
|
|
5565
|
-
var fin = vec(192);
|
|
5566
|
-
var fin2 = vec(192);
|
|
5567
|
-
|
|
5568
|
-
// ../../node_modules/point-in-polygon-hao/node_modules/robust-predicates/esm/incircle.js
|
|
5569
|
-
var iccerrboundA = (10 + 96 * epsilon) * epsilon;
|
|
5570
|
-
var iccerrboundB = (4 + 48 * epsilon) * epsilon;
|
|
5571
|
-
var iccerrboundC = (44 + 576 * epsilon) * epsilon * epsilon;
|
|
5572
|
-
var bc2 = vec(4);
|
|
5573
|
-
var ca2 = vec(4);
|
|
5574
|
-
var ab2 = vec(4);
|
|
5575
|
-
var aa = vec(4);
|
|
5576
|
-
var bb = vec(4);
|
|
5577
|
-
var cc = vec(4);
|
|
5578
|
-
var u3 = vec(4);
|
|
5579
|
-
var v = vec(4);
|
|
5580
|
-
var axtbc = vec(8);
|
|
5581
|
-
var aytbc = vec(8);
|
|
5582
|
-
var bxtca = vec(8);
|
|
5583
|
-
var bytca = vec(8);
|
|
5584
|
-
var cxtab = vec(8);
|
|
5585
|
-
var cytab = vec(8);
|
|
5586
|
-
var abt2 = vec(8);
|
|
5587
|
-
var bct2 = vec(8);
|
|
5588
|
-
var cat2 = vec(8);
|
|
5589
|
-
var abtt = vec(4);
|
|
5590
|
-
var bctt = vec(4);
|
|
5591
|
-
var catt = vec(4);
|
|
5592
|
-
var _82 = vec(8);
|
|
5593
|
-
var _162 = vec(16);
|
|
5594
|
-
var _16b = vec(16);
|
|
5595
|
-
var _16c = vec(16);
|
|
5596
|
-
var _32 = vec(32);
|
|
5597
|
-
var _32b = vec(32);
|
|
5598
|
-
var _48 = vec(48);
|
|
5599
|
-
var _64 = vec(64);
|
|
5600
|
-
var fin3 = vec(1152);
|
|
5601
|
-
var fin22 = vec(1152);
|
|
5602
|
-
|
|
5603
|
-
// ../../node_modules/point-in-polygon-hao/node_modules/robust-predicates/esm/insphere.js
|
|
5604
|
-
var isperrboundA = (16 + 224 * epsilon) * epsilon;
|
|
5605
|
-
var isperrboundB = (5 + 72 * epsilon) * epsilon;
|
|
5606
|
-
var isperrboundC = (71 + 1408 * epsilon) * epsilon * epsilon;
|
|
5607
|
-
var ab3 = vec(4);
|
|
5608
|
-
var bc3 = vec(4);
|
|
5609
|
-
var cd = vec(4);
|
|
5610
|
-
var de = vec(4);
|
|
5611
|
-
var ea = vec(4);
|
|
5612
|
-
var ac = vec(4);
|
|
5613
|
-
var bd = vec(4);
|
|
5614
|
-
var ce = vec(4);
|
|
5615
|
-
var da = vec(4);
|
|
5616
|
-
var eb = vec(4);
|
|
5617
|
-
var abc = vec(24);
|
|
5618
|
-
var bcd = vec(24);
|
|
5619
|
-
var cde = vec(24);
|
|
5620
|
-
var dea = vec(24);
|
|
5621
|
-
var eab = vec(24);
|
|
5622
|
-
var abd = vec(24);
|
|
5623
|
-
var bce = vec(24);
|
|
5624
|
-
var cda = vec(24);
|
|
5625
|
-
var deb = vec(24);
|
|
5626
|
-
var eac = vec(24);
|
|
5627
|
-
var adet = vec(1152);
|
|
5628
|
-
var bdet = vec(1152);
|
|
5629
|
-
var cdet = vec(1152);
|
|
5630
|
-
var ddet = vec(1152);
|
|
5631
|
-
var edet = vec(1152);
|
|
5632
|
-
var abdet = vec(2304);
|
|
5633
|
-
var cddet = vec(2304);
|
|
5634
|
-
var cdedet = vec(3456);
|
|
5635
|
-
var deter = vec(5760);
|
|
5636
|
-
var _83 = vec(8);
|
|
5637
|
-
var _8b2 = vec(8);
|
|
5638
|
-
var _8c = vec(8);
|
|
5639
|
-
var _163 = vec(16);
|
|
5640
|
-
var _24 = vec(24);
|
|
5641
|
-
var _482 = vec(48);
|
|
5642
|
-
var _48b = vec(48);
|
|
5643
|
-
var _96 = vec(96);
|
|
5644
|
-
var _192 = vec(192);
|
|
5645
|
-
var _384x = vec(384);
|
|
5646
|
-
var _384y = vec(384);
|
|
5647
|
-
var _384z = vec(384);
|
|
5648
|
-
var _768 = vec(768);
|
|
5649
|
-
var xdet = vec(96);
|
|
5650
|
-
var ydet = vec(96);
|
|
5651
|
-
var zdet = vec(96);
|
|
5652
|
-
var fin4 = vec(1152);
|
|
5653
|
-
|
|
5654
|
-
// ../../node_modules/point-in-polygon-hao/dist/esm/index.js
|
|
5655
|
-
function pointInPolygon(p, polygon2) {
|
|
5656
|
-
var i;
|
|
5657
|
-
var ii;
|
|
5658
|
-
var k = 0;
|
|
5659
|
-
var f;
|
|
5660
|
-
var u1;
|
|
5661
|
-
var v1;
|
|
5662
|
-
var u22;
|
|
5663
|
-
var v2;
|
|
5664
|
-
var currentP;
|
|
5665
|
-
var nextP;
|
|
5666
|
-
var x = p[0];
|
|
5667
|
-
var y = p[1];
|
|
5668
|
-
var numContours = polygon2.length;
|
|
5669
|
-
for (i = 0; i < numContours; i++) {
|
|
5670
|
-
ii = 0;
|
|
5671
|
-
var contour = polygon2[i];
|
|
5672
|
-
var contourLen = contour.length - 1;
|
|
5673
|
-
currentP = contour[0];
|
|
5674
|
-
if (currentP[0] !== contour[contourLen][0] && currentP[1] !== contour[contourLen][1]) {
|
|
5675
|
-
throw new Error("First and last coordinates in a ring must be the same");
|
|
5676
|
-
}
|
|
5677
|
-
u1 = currentP[0] - x;
|
|
5678
|
-
v1 = currentP[1] - y;
|
|
5679
|
-
for (ii; ii < contourLen; ii++) {
|
|
5680
|
-
nextP = contour[ii + 1];
|
|
5681
|
-
u22 = nextP[0] - x;
|
|
5682
|
-
v2 = nextP[1] - y;
|
|
5683
|
-
if (v1 === 0 && v2 === 0) {
|
|
5684
|
-
if (u22 <= 0 && u1 >= 0 || u1 <= 0 && u22 >= 0) {
|
|
5685
|
-
return 0;
|
|
5686
|
-
}
|
|
5687
|
-
} else if (v2 >= 0 && v1 <= 0 || v2 <= 0 && v1 >= 0) {
|
|
5688
|
-
f = orient2d(u1, u22, v1, v2, 0, 0);
|
|
5689
|
-
if (f === 0) {
|
|
5690
|
-
return 0;
|
|
5691
|
-
}
|
|
5692
|
-
if (f > 0 && v2 > 0 && v1 <= 0 || f < 0 && v2 <= 0 && v1 > 0) {
|
|
5693
|
-
k++;
|
|
5694
|
-
}
|
|
5695
|
-
}
|
|
5696
|
-
currentP = nextP;
|
|
5697
|
-
v1 = v2;
|
|
5698
|
-
u1 = u22;
|
|
5699
|
-
}
|
|
5700
|
-
}
|
|
5701
|
-
if (k % 2 === 0) {
|
|
5702
|
-
return false;
|
|
5703
|
-
}
|
|
5704
|
-
return true;
|
|
5705
|
-
}
|
|
5706
|
-
|
|
5707
|
-
// ../../node_modules/@turf/invariant/dist/esm/index.js
|
|
5708
|
-
function getCoord(coord) {
|
|
5709
|
-
if (!coord) {
|
|
5710
|
-
throw new Error("coord is required");
|
|
5711
|
-
}
|
|
5712
|
-
if (!Array.isArray(coord)) {
|
|
5713
|
-
if (coord.type === "Feature" && coord.geometry !== null && coord.geometry.type === "Point") {
|
|
5714
|
-
return [...coord.geometry.coordinates];
|
|
5715
|
-
}
|
|
5716
|
-
if (coord.type === "Point") {
|
|
5717
|
-
return [...coord.coordinates];
|
|
5718
|
-
}
|
|
5719
|
-
}
|
|
5720
|
-
if (Array.isArray(coord) && coord.length >= 2 && !Array.isArray(coord[0]) && !Array.isArray(coord[1])) {
|
|
5721
|
-
return [...coord];
|
|
5722
|
-
}
|
|
5723
|
-
throw new Error("coord must be GeoJSON Point or an Array of numbers");
|
|
5724
|
-
}
|
|
5725
|
-
function getGeom(geojson) {
|
|
5726
|
-
if (geojson.type === "Feature") {
|
|
5727
|
-
return geojson.geometry;
|
|
5728
|
-
}
|
|
5729
|
-
return geojson;
|
|
5730
|
-
}
|
|
5731
|
-
|
|
5732
|
-
// ../../node_modules/@turf/boolean-point-in-polygon/dist/esm/index.js
|
|
5733
|
-
function booleanPointInPolygon(point2, polygon2, options = {}) {
|
|
5734
|
-
if (!point2) {
|
|
5735
|
-
throw new Error("point is required");
|
|
5736
|
-
}
|
|
5737
|
-
if (!polygon2) {
|
|
5738
|
-
throw new Error("polygon is required");
|
|
5739
|
-
}
|
|
5740
|
-
const pt = getCoord(point2);
|
|
5741
|
-
const geom = getGeom(polygon2);
|
|
5742
|
-
const type = geom.type;
|
|
5743
|
-
const bbox2 = polygon2.bbox;
|
|
5744
|
-
let polys = geom.coordinates;
|
|
5745
|
-
if (bbox2 && inBBox(pt, bbox2) === false) {
|
|
5746
|
-
return false;
|
|
5747
|
-
}
|
|
5748
|
-
if (type === "Polygon") {
|
|
5749
|
-
polys = [polys];
|
|
5750
|
-
}
|
|
5751
|
-
let result = false;
|
|
5752
|
-
for (var i = 0; i < polys.length; ++i) {
|
|
5753
|
-
const polyResult = pointInPolygon(pt, polys[i]);
|
|
5754
|
-
if (polyResult === 0) return options.ignoreBoundary ? false : true;
|
|
5755
|
-
else if (polyResult) result = true;
|
|
5756
|
-
}
|
|
5757
|
-
return result;
|
|
5758
|
-
}
|
|
5759
|
-
function inBBox(pt, bbox2) {
|
|
5760
|
-
return bbox2[0] <= pt[0] && bbox2[1] <= pt[1] && bbox2[2] >= pt[0] && bbox2[3] >= pt[1];
|
|
5761
|
-
}
|
|
5762
|
-
|
|
5763
5388
|
// src/IndoorMap/renderer/utils/findUnitOnPoint.ts
|
|
5389
|
+
var import_boolean_point_in_polygon3 = require("@turf/boolean-point-in-polygon");
|
|
5764
5390
|
var findUnitOnPoint = (units, point2) => {
|
|
5765
5391
|
try {
|
|
5766
|
-
return units.find((unit) => booleanPointInPolygon(point2, polygon(unit.geometry.coordinates)));
|
|
5392
|
+
return units.find((unit) => (0, import_boolean_point_in_polygon3.booleanPointInPolygon)(point2, polygon(unit.geometry.coordinates)));
|
|
5767
5393
|
} catch (err) {
|
|
5768
5394
|
return null;
|
|
5769
5395
|
}
|
|
@@ -5812,9 +5438,9 @@ var RendererManager = class extends EventTarget {
|
|
|
5812
5438
|
const pos = geom?.attributes?.position?.array;
|
|
5813
5439
|
if (!pos || pos.length === 0) return;
|
|
5814
5440
|
for (let i = 0; i < pos.length; i++) {
|
|
5815
|
-
const
|
|
5816
|
-
if (!Number.isFinite(
|
|
5817
|
-
bad.push({ mesh: obj, index: i, value:
|
|
5441
|
+
const v = pos[i];
|
|
5442
|
+
if (!Number.isFinite(v)) {
|
|
5443
|
+
bad.push({ mesh: obj, index: i, value: v });
|
|
5818
5444
|
break;
|
|
5819
5445
|
}
|
|
5820
5446
|
}
|
|
@@ -5910,7 +5536,7 @@ var RendererManager = class extends EventTarget {
|
|
|
5910
5536
|
populate: true
|
|
5911
5537
|
});
|
|
5912
5538
|
units.filter(
|
|
5913
|
-
(
|
|
5539
|
+
(u) => !["opentobelow", "escalator", "room"].includes(u.properties.category)
|
|
5914
5540
|
).forEach((unit) => {
|
|
5915
5541
|
const element = this.elementRenderer.createGeometry(unit);
|
|
5916
5542
|
if (element) {
|
|
@@ -5918,7 +5544,7 @@ var RendererManager = class extends EventTarget {
|
|
|
5918
5544
|
this.addElementsToManager(unit.id, _elements, unit.properties.level.properties.ordinal);
|
|
5919
5545
|
}
|
|
5920
5546
|
});
|
|
5921
|
-
units.filter((
|
|
5547
|
+
units.filter((u) => u.properties.category === "room").forEach((unit) => {
|
|
5922
5548
|
const openingRelationships = relationships.filter((r) => r.properties.origin?.id === unit.id || r.properties.destination?.id === unit.id);
|
|
5923
5549
|
const roomOpenings = (0, import_lodash9.compact)(openingRelationships.map((rel) => {
|
|
5924
5550
|
const openingId = rel?.properties.intermediary[0].id;
|
|
@@ -5944,7 +5570,7 @@ var RendererManager = class extends EventTarget {
|
|
|
5944
5570
|
this.addElementsToManager(kiosk.id, _elements, kiosk.properties.level.properties.ordinal);
|
|
5945
5571
|
}
|
|
5946
5572
|
});
|
|
5947
|
-
const escalators = units.filter((
|
|
5573
|
+
const escalators = units.filter((u) => u.properties.category === "escalator");
|
|
5948
5574
|
for (const escalator of escalators) {
|
|
5949
5575
|
try {
|
|
5950
5576
|
const escalatorRelationships = relationships.filter((r) => (r.properties?.intermediary || []).some((inter) => inter.id === escalator.id));
|
|
@@ -5966,7 +5592,7 @@ var RendererManager = class extends EventTarget {
|
|
|
5966
5592
|
const thatLevelOpening = bothOpenings.find((opening) => opening.properties.ordinal !== thisOrdinal);
|
|
5967
5593
|
const angle = 180 * (1 / Math.PI) * angleBetweenLineStrings(thisLevelOpening.geometry.coordinates, thatLevelOpening.geometry.coordinates);
|
|
5968
5594
|
const direction = thisOrdinal < thatLevelOpening.properties.ordinal ? "up" : "down";
|
|
5969
|
-
const escalatorEntryPoint = (0,
|
|
5595
|
+
const escalatorEntryPoint = (0, import_center5.center)(thisLevelOpening).geometry.coordinates;
|
|
5970
5596
|
const element = await this.elementRenderer.createEscalator(escalator, escalatorEntryPoint, { direction, angle });
|
|
5971
5597
|
if (element) {
|
|
5972
5598
|
const _elements = Array.isArray(element) ? element : [element];
|
|
@@ -5978,8 +5604,8 @@ var RendererManager = class extends EventTarget {
|
|
|
5978
5604
|
}
|
|
5979
5605
|
const groundLabels = await this.#dataClient.filterByType("label");
|
|
5980
5606
|
for (const label of groundLabels) {
|
|
5981
|
-
const
|
|
5982
|
-
const unit = findUnitOnPoint(units,
|
|
5607
|
+
const center4 = (0, import_center5.center)(polygon(label.geometry.coordinates)).geometry.coordinates;
|
|
5608
|
+
const unit = findUnitOnPoint(units, center4);
|
|
5983
5609
|
if (unit) {
|
|
5984
5610
|
const element = this.elementRenderer.createGroundLabel(label, unit);
|
|
5985
5611
|
if (element) {
|
|
@@ -5988,12 +5614,6 @@ var RendererManager = class extends EventTarget {
|
|
|
5988
5614
|
}
|
|
5989
5615
|
}
|
|
5990
5616
|
}
|
|
5991
|
-
if (this.options.type === "3D") {
|
|
5992
|
-
const model3ds = await this.#dataClient.filterByType("model3d");
|
|
5993
|
-
for (const model3d of model3ds) {
|
|
5994
|
-
this.elementRenderer.createModel3d(model3d);
|
|
5995
|
-
}
|
|
5996
|
-
}
|
|
5997
5617
|
this.changeLevelByOrdinal(this.currentOrdinals);
|
|
5998
5618
|
this.dispatchEvent(new CustomEvent("renderermanager:elements_created"));
|
|
5999
5619
|
}
|
|
@@ -6212,10 +5832,10 @@ var IndoorMap = class extends EventTarget {
|
|
|
6212
5832
|
if (!this.options.camera?.defaultView?.center) {
|
|
6213
5833
|
this.#dataClient.filterByType("venue").then((venues) => {
|
|
6214
5834
|
this.#venues = venues;
|
|
6215
|
-
const venueCenters = (0,
|
|
5835
|
+
const venueCenters = (0, import_center6.default)(featureCollection(venues));
|
|
6216
5836
|
const [x, y] = venueCenters.geometry.coordinates;
|
|
6217
|
-
const
|
|
6218
|
-
this.camera.setView({ center:
|
|
5837
|
+
const center4 = new import_maptalks_gl.Coordinate(x, y);
|
|
5838
|
+
this.camera.setView({ center: center4, pitch: 60, zoom: 19 });
|
|
6219
5839
|
});
|
|
6220
5840
|
}
|
|
6221
5841
|
}
|
|
@@ -6375,7 +5995,7 @@ var IndoorMap = class extends EventTarget {
|
|
|
6375
5995
|
case "opening": {
|
|
6376
5996
|
switch (category) {
|
|
6377
5997
|
case "emergencyexit":
|
|
6378
|
-
const { geometry: geometry2 } = (0,
|
|
5998
|
+
const { geometry: geometry2 } = (0, import_center6.default)(feature2);
|
|
6379
5999
|
const markerFeature = {
|
|
6380
6000
|
...feature2,
|
|
6381
6001
|
geometry: geometry2
|
|
@@ -6859,6 +6479,7 @@ var IndoorMap = class extends EventTarget {
|
|
|
6859
6479
|
GEOJSON_FEATURE_TYPES,
|
|
6860
6480
|
HIGHLIGHT_LAYER_NAME,
|
|
6861
6481
|
IMDF_FEATURE_TYPES,
|
|
6482
|
+
IMDF_UNIT_CATEGORIES,
|
|
6862
6483
|
IndoorMap,
|
|
6863
6484
|
LAST_USER_LOCATION_ELEMENT_ID_PREFIX,
|
|
6864
6485
|
LAYERS,
|