@heycar/heycars-map 0.7.2 → 0.7.4-zone1

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.cjs CHANGED
@@ -2058,8 +2058,7 @@ const Amap = defineSetup(function Amap2(props, { slots, emit }) {
2058
2058
  const map = new AMap.Map(elementRef.value, {
2059
2059
  ...defaultOptions,
2060
2060
  scrollWheel: defaultOptions.touchZoomCenter ? false : defaultOptions.scrollWheel,
2061
- vectorMapForeign,
2062
- mapStyle: "amap://styles/95498a904992a4c0b866a3e4d7729682"
2061
+ vectorMapForeign
2063
2062
  });
2064
2063
  window.GlobalAmap = map;
2065
2064
  mapRef.value = map;
@@ -2410,6 +2409,14 @@ const HeycarMap = defineLagecySetup(function HeycarMap2(props, {
2410
2409
  }
2411
2410
  };
2412
2411
  }).props(["center", "fallback", "loading", "mapRef", "zoom", "touchEnable", "touchZoomCenter"]);
2412
+ const BEIJIN_POINT = [116.2317, 39.5427];
2413
+ const ZINDEX_BUBBLE_LAYER = 50;
2414
+ const ZINDEX_START_END_LOGO_LAYER = 40;
2415
+ const ZINDEX_PLACE_LAYER = 30;
2416
+ const ZINDEX_CAR_LAYER = 21;
2417
+ const ZINDEX_PASSENGER_LAYER = 20;
2418
+ const ZINDEX_LINE_LAYER = 12;
2419
+ const ZINDEX_GREEN_ZONE = 10;
2413
2420
  const AmapPolyline = defineSetup(function AmapPolyline2(props) {
2414
2421
  const polylineRef = Vue.shallowRef();
2415
2422
  const mapRef = useAmap();
@@ -2488,7 +2495,8 @@ const ADrivingLine = defineSetup(function ADrivingLine2(props) {
2488
2495
  "strokeOpacity": 1,
2489
2496
  "strokeColor": strokeColorOuter,
2490
2497
  "lineJoin": "round",
2491
- "lineCap": "round"
2498
+ "lineCap": "round",
2499
+ "zIndex": ZINDEX_LINE_LAYER
2492
2500
  }
2493
2501
  }), Vue.h(AmapPolyline, {
2494
2502
  "attrs": {
@@ -2499,7 +2507,8 @@ const ADrivingLine = defineSetup(function ADrivingLine2(props) {
2499
2507
  "lineJoin": "round",
2500
2508
  "lineCap": "round",
2501
2509
  "strokeStyle": "dashed",
2502
- "strokeDasharray": [dashLength, dashLength * 0.5]
2510
+ "strokeDasharray": [dashLength, dashLength * 0.5],
2511
+ "zIndex": ZINDEX_LINE_LAYER
2503
2512
  }
2504
2513
  }), Vue.h(AmapPolyline, {
2505
2514
  "attrs": {
@@ -2508,7 +2517,8 @@ const ADrivingLine = defineSetup(function ADrivingLine2(props) {
2508
2517
  "strokeOpacity": 1,
2509
2518
  "strokeColor": strokeColorInner,
2510
2519
  "lineJoin": "round",
2511
- "lineCap": "round"
2520
+ "lineCap": "round",
2521
+ "zIndex": ZINDEX_LINE_LAYER
2512
2522
  }
2513
2523
  }), Vue.h(AmapPolyline, {
2514
2524
  "attrs": {
@@ -2518,7 +2528,8 @@ const ADrivingLine = defineSetup(function ADrivingLine2(props) {
2518
2528
  "strokeOpacity": 1,
2519
2529
  "strokeColor": "transparent",
2520
2530
  "lineJoin": "round",
2521
- "lineCap": "round"
2531
+ "lineCap": "round",
2532
+ "zIndex": ZINDEX_LINE_LAYER
2522
2533
  }
2523
2534
  })]);
2524
2535
  };
@@ -2540,7 +2551,8 @@ const GDrivingLine = defineSetup(function GDrivingLine2(props) {
2540
2551
  "path": pathRef.value,
2541
2552
  "strokeWeight": strokeWidth + 2 * borderWidth + 2 * outlineWidth,
2542
2553
  "strokeOpacity": 1,
2543
- "strokeColor": strokeColorOuter
2554
+ "strokeColor": strokeColorOuter,
2555
+ "zIndex": ZINDEX_LINE_LAYER
2544
2556
  }
2545
2557
  }), Vue.h(GmapPolyline, {
2546
2558
  "attrs": {
@@ -2555,7 +2567,8 @@ const GDrivingLine = defineSetup(function GDrivingLine2(props) {
2555
2567
  },
2556
2568
  repeat: `${strokeWidth}px`,
2557
2569
  offset: `${strokeWidth / 2}px`
2558
- }]
2570
+ }],
2571
+ "zIndex": ZINDEX_LINE_LAYER
2559
2572
  }
2560
2573
  }), Vue.h(GmapPolyline, {
2561
2574
  "attrs": {
@@ -2571,7 +2584,8 @@ const GDrivingLine = defineSetup(function GDrivingLine2(props) {
2571
2584
  scale: 0.7
2572
2585
  },
2573
2586
  repeat: `${repeat}px`
2574
- }]
2587
+ }],
2588
+ "zIndex": ZINDEX_LINE_LAYER
2575
2589
  }
2576
2590
  })]);
2577
2591
  };
@@ -3008,12 +3022,6 @@ const KeyedFitView = defineSetup(function KeyedFitView2(props, {
3008
3022
  return Vue.h("div", [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
3009
3023
  };
3010
3024
  });
3011
- const BEIJIN_POINT = [116.2317, 39.5427];
3012
- const ZINDEX_BUBBLE_LAYER = 50;
3013
- const ZINDEX_START_END_LOGO_LAYER = 40;
3014
- const ZINDEX_PLACE_LAYER = 30;
3015
- const ZINDEX_CAR_LAYER = 21;
3016
- const ZINDEX_PASSENGER_LAYER = 20;
3017
3025
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
3018
3026
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
3019
3027
  const StartEndPoint_css_ts_vanilla = "";
@@ -5271,7 +5279,8 @@ const useAmapRecomendPlace = (props) => {
5271
5279
  const { pointRef, getRecomendPlace, getLimit, context: context2, emptyPlaceName, onChange, onChangePlace } = props;
5272
5280
  const availableRef = Vue.ref(true);
5273
5281
  const placeCandidatesRef = Vue.ref([]);
5274
- const { idx: recomendPlaceKey, update: updateRecomandPlace } = useUpdate();
5282
+ const zoneRef = Vue.ref();
5283
+ const { idx: recomendPlaceKey, update: updateRecommendPlaceKey } = useUpdate();
5275
5284
  const { readyPromise } = useMapSupplier();
5276
5285
  const { place, updatePlace, setPlace } = useAmapPlace({
5277
5286
  emptyPlaceName,
@@ -5286,49 +5295,72 @@ const useAmapRecomendPlace = (props) => {
5286
5295
  );
5287
5296
  });
5288
5297
  const updatePlaceCandidates = async (place2) => {
5289
- const inputPlaceCandidates = await getRecomendPlace({ ...place2 }, context2);
5298
+ var _a;
5299
+ const {
5300
+ places: inputPlaceCandidates,
5301
+ zone,
5302
+ available
5303
+ } = (_a = await getRecomendPlace({ ...place2 }, context2)) != null ? _a : {};
5290
5304
  const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5291
- availableRef.value = placeCandidates !== void 0;
5305
+ availableRef.value = !!available;
5306
+ zoneRef.value = zone;
5292
5307
  placeCandidatesRef.value = placeCandidates != null ? placeCandidates : [];
5293
5308
  };
5309
+ const updateRecommendPlace = (place2) => {
5310
+ setPlace(place2);
5311
+ updateRecommendPlaceKey();
5312
+ };
5313
+ const setPlaceCandidatesAndZone = ({ zone, places }) => {
5314
+ placeCandidatesRef.value = places != null ? places : [];
5315
+ zoneRef.value = zone ? zone : void 0;
5316
+ };
5294
5317
  Vue.watch(
5295
5318
  () => recomendPlaceKey.value,
5296
5319
  async () => {
5320
+ var _a;
5297
5321
  await readyPromise;
5298
- const inputPlaceCandidates = await getRecomendPlace({ ...place }, context2);
5322
+ const {
5323
+ places: inputPlaceCandidates,
5324
+ zone,
5325
+ available
5326
+ } = (_a = await getRecomendPlace({ ...place }, context2)) != null ? _a : {};
5299
5327
  const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5300
- if (placeCandidates === void 0) {
5301
- availableRef.value = false;
5328
+ if (!available || !placeCandidates) {
5329
+ availableRef.value = !!available;
5330
+ zoneRef.value = zone;
5302
5331
  placeCandidatesRef.value = [];
5303
5332
  Object.assign(recomendPlace, { ...place });
5304
- onChange == null ? void 0 : onChange({ ...place });
5333
+ onChange == null ? void 0 : onChange({ place: { ...place }, inputPlace: { ...place }, isInZone: !!zone });
5305
5334
  return;
5306
5335
  }
5307
5336
  const { shortestPlace, shortestDistance } = findAmapNearestPlace(place, placeCandidates);
5308
5337
  const limit = getLimit(context2);
5309
5338
  const resultPlace = shortestDistance > limit ? place : shortestPlace;
5310
- availableRef.value = true;
5339
+ availableRef.value = !!available;
5340
+ zoneRef.value = zone;
5311
5341
  placeCandidatesRef.value = placeCandidates;
5312
5342
  Object.assign(recomendPlace, { ...resultPlace });
5313
- onChange == null ? void 0 : onChange({ ...resultPlace });
5343
+ onChange == null ? void 0 : onChange({ place: { ...resultPlace }, inputPlace: { ...place }, isInZone: !!zone });
5314
5344
  }
5315
5345
  );
5316
5346
  return {
5347
+ zoneRef,
5317
5348
  recomendPlace,
5318
5349
  placeCandidates: placeCandidatesRef,
5319
5350
  availableRef,
5320
5351
  isElectedRef,
5321
- updateRecomandPlace,
5352
+ updateRecommendPlace,
5322
5353
  updatePlaceCandidates,
5323
5354
  updatePlace,
5324
- setPlace
5355
+ setPlaceCandidatesAndZone
5325
5356
  };
5326
5357
  };
5327
5358
  const useGmapRecomendPlace = (props) => {
5328
5359
  const { pointRef, getRecomendPlace, getLimit, context: context2, emptyPlaceName, onChange, onChangePlace } = props;
5329
5360
  const availableRef = Vue.ref(true);
5330
5361
  const placeCandidatesRef = Vue.ref([]);
5331
- const { idx: recomendPlaceKey, update: updateRecomandPlace } = useUpdate();
5362
+ const zoneRef = Vue.ref();
5363
+ const { idx: recomendPlaceKey, update: updateRecommendPlaceKey } = useUpdate();
5332
5364
  const { readyPromise } = useMapSupplier();
5333
5365
  const { place, updatePlace, setPlace } = useGmapPlace({
5334
5366
  emptyPlaceName,
@@ -5343,40 +5375,64 @@ const useGmapRecomendPlace = (props) => {
5343
5375
  );
5344
5376
  });
5345
5377
  const updatePlaceCandidates = async (place2) => {
5346
- const placeCandidates = await getRecomendPlace({ ...place2 }, context2);
5347
- availableRef.value = placeCandidates !== void 0;
5378
+ var _a;
5379
+ const {
5380
+ places: inputPlaceCandidates,
5381
+ zone,
5382
+ available
5383
+ } = (_a = await getRecomendPlace({ ...place2 }, context2)) != null ? _a : {};
5384
+ const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5385
+ availableRef.value = !!available;
5386
+ zoneRef.value = zone;
5348
5387
  placeCandidatesRef.value = placeCandidates != null ? placeCandidates : [];
5349
5388
  };
5389
+ const updateRecommendPlace = (place2) => {
5390
+ setPlace(place2);
5391
+ updateRecommendPlaceKey();
5392
+ };
5393
+ const setPlaceCandidatesAndZone = ({ zone, places }) => {
5394
+ placeCandidatesRef.value = places != null ? places : [];
5395
+ zoneRef.value = zone ? zone : void 0;
5396
+ };
5350
5397
  Vue.watch(
5351
5398
  () => recomendPlaceKey.value,
5352
5399
  async () => {
5400
+ var _a;
5353
5401
  await readyPromise;
5354
- const placeCandidates = await getRecomendPlace({ ...place }, context2);
5355
- if (placeCandidates === void 0) {
5356
- availableRef.value = false;
5402
+ const {
5403
+ places: inputPlaceCandidates,
5404
+ zone,
5405
+ available
5406
+ } = (_a = await getRecomendPlace({ ...place }, context2)) != null ? _a : {};
5407
+ const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5408
+ if (!available || !placeCandidates) {
5409
+ availableRef.value = !!available;
5410
+ zoneRef.value = zone;
5357
5411
  placeCandidatesRef.value = [];
5358
5412
  Object.assign(recomendPlace, { ...place });
5359
- onChange == null ? void 0 : onChange({ ...place });
5413
+ onChange == null ? void 0 : onChange({ place: { ...place }, inputPlace: { ...place }, isInZone: !!zone });
5360
5414
  return;
5361
5415
  }
5362
5416
  const { shortestPlace, shortestDistance } = findGmapNearestPlace(place, placeCandidates);
5363
5417
  const limit = getLimit(context2);
5364
5418
  const resultPlace = shortestDistance > limit ? place : shortestPlace;
5365
- availableRef.value = true;
5419
+ availableRef.value = !!available;
5420
+ zoneRef.value = zone;
5366
5421
  placeCandidatesRef.value = placeCandidates;
5367
5422
  Object.assign(recomendPlace, { ...resultPlace });
5368
- onChange == null ? void 0 : onChange({ ...resultPlace });
5423
+ onChange == null ? void 0 : onChange({ place: { ...resultPlace }, inputPlace: { ...place }, isInZone: !!zone });
5369
5424
  }
5370
5425
  );
5371
5426
  return {
5427
+ zoneRef,
5372
5428
  recomendPlace,
5373
5429
  placeCandidates: placeCandidatesRef,
5374
5430
  availableRef,
5375
5431
  isElectedRef,
5376
- updateRecomandPlace,
5432
+ updateRecommendPlace,
5377
5433
  updatePlaceCandidates,
5378
5434
  updatePlace,
5379
- setPlace
5435
+ setPlaceCandidatesAndZone
5380
5436
  };
5381
5437
  };
5382
5438
  const useMapRecomendPlace = (props) => {
@@ -5430,6 +5486,131 @@ const useMapZoom = (props) => {
5430
5486
  const { supplier } = useMapSupplier();
5431
5487
  return supplier === "gmap" ? useGmapZoom(props) : useAmapZoom(props);
5432
5488
  };
5489
+ const AmapPolygon = defineSetup(function AmapPolygon2(props) {
5490
+ const polygonRef = Vue.shallowRef();
5491
+ const mapRef = useAmap();
5492
+ Vue.onMounted(() => {
5493
+ polygonRef.value = new AMap.Polygon();
5494
+ polygonRef.value.setOptions(props);
5495
+ });
5496
+ Vue.onUnmounted(() => {
5497
+ var _a;
5498
+ (_a = polygonRef.value) == null ? void 0 : _a.setMap(null);
5499
+ });
5500
+ Vue.watchPostEffect(() => {
5501
+ var _a;
5502
+ const map = mapRef == null ? void 0 : mapRef.value;
5503
+ if (!map)
5504
+ return;
5505
+ (_a = polygonRef.value) == null ? void 0 : _a.setMap(map);
5506
+ });
5507
+ watchNoneImmediatePostEffectForMapProperty(polygonRef, props, [
5508
+ { name: "path", defaultValue: [[0, 0]] },
5509
+ { name: "extData", defaultValue: void 0 },
5510
+ { name: "draggable", defaultValue: false }
5511
+ ]);
5512
+ watchNoneImmediatePostEffectForDeepOption(
5513
+ () => {
5514
+ const { path, extData, draggable, ...otherOptions } = props;
5515
+ return otherOptions;
5516
+ },
5517
+ (otherOptions) => {
5518
+ var _a;
5519
+ (_a = polygonRef.value) == null ? void 0 : _a.setOptions({ ...otherOptions });
5520
+ }
5521
+ );
5522
+ return () => null;
5523
+ });
5524
+ const GmapPolygon = defineSetup(function GmapPolygon2(props) {
5525
+ const polygonRef = Vue.shallowRef();
5526
+ const mapRef = useGmap();
5527
+ Vue.onMounted(() => {
5528
+ polygonRef.value = new google.maps.Polygon({ ...props });
5529
+ });
5530
+ Vue.onUnmounted(() => {
5531
+ var _a;
5532
+ (_a = polygonRef.value) == null ? void 0 : _a.setMap(null);
5533
+ });
5534
+ Vue.watchPostEffect(() => {
5535
+ var _a;
5536
+ const map = mapRef == null ? void 0 : mapRef.value;
5537
+ if (!map)
5538
+ return;
5539
+ (_a = polygonRef.value) == null ? void 0 : _a.setMap(map);
5540
+ });
5541
+ watchNoneImmediatePostEffectForDeepOption(
5542
+ () => ({ ...props }),
5543
+ (props2) => {
5544
+ var _a;
5545
+ (_a = polygonRef.value) == null ? void 0 : _a.setOptions({ ...props2 });
5546
+ }
5547
+ );
5548
+ return () => null;
5549
+ });
5550
+ const GREEN_ZONE_FILL_COLOR = "#C7E5FB";
5551
+ const GREEN_ZONE_FILL_OPACITY = 0.5;
5552
+ const GREEN_ZONE_STROKE_COLOR = "#4BA7FF";
5553
+ const GREEN_ZONE_STROKE_WEIGHT_VW = 1;
5554
+ const AGreenZone = defineSetup(function AGreenZone2(props) {
5555
+ const strokeWeight = GREEN_ZONE_STROKE_WEIGHT_VW * globalThis.innerWidth / 100;
5556
+ return () => {
5557
+ return Vue.h(AmapPolygon, {
5558
+ "attrs": {
5559
+ "path": props.path,
5560
+ "strokeColor": GREEN_ZONE_STROKE_COLOR,
5561
+ "strokeStyle": "dashed",
5562
+ "strokeWeight": strokeWeight,
5563
+ "fillColor": GREEN_ZONE_FILL_COLOR,
5564
+ "fillOpacity": GREEN_ZONE_FILL_OPACITY,
5565
+ "zIndex": ZINDEX_GREEN_ZONE
5566
+ }
5567
+ });
5568
+ };
5569
+ });
5570
+ const GGreenZone = defineSetup(function GGreenZone2(props) {
5571
+ const pathRef = Vue.computed(() => props.path.map(vec2lnglat));
5572
+ const strokeWeight = GREEN_ZONE_STROKE_WEIGHT_VW * globalThis.innerWidth / 100;
5573
+ const lineSymbol = {
5574
+ path: "M 0,-1 0,1",
5575
+ strokeOpacity: 1,
5576
+ scale: 4
5577
+ };
5578
+ return () => {
5579
+ const path = pathRef.value;
5580
+ return Vue.h("div", [Vue.h(GmapPolygon, {
5581
+ "attrs": {
5582
+ "paths": path,
5583
+ "strokeColor": GREEN_ZONE_STROKE_COLOR,
5584
+ "strokeOpacity": 0,
5585
+ "strokeWeight": strokeWeight,
5586
+ "fillColor": GREEN_ZONE_FILL_COLOR,
5587
+ "fillOpacity": GREEN_ZONE_FILL_OPACITY,
5588
+ "zIndex": ZINDEX_GREEN_ZONE
5589
+ }
5590
+ }), Vue.h(GmapPolyline, {
5591
+ "attrs": {
5592
+ "path": path,
5593
+ "strokeColor": GREEN_ZONE_STROKE_COLOR,
5594
+ "strokeWeight": GREEN_ZONE_STROKE_WEIGHT_VW,
5595
+ "icons": [{
5596
+ icon: lineSymbol,
5597
+ offset: "0",
5598
+ repeat: "20px"
5599
+ }]
5600
+ }
5601
+ })]);
5602
+ };
5603
+ });
5604
+ const GreenZone = defineSetup(function GreenZone2(props) {
5605
+ const payload = useMapSupplier();
5606
+ return () => {
5607
+ if (!props.path.length)
5608
+ return null;
5609
+ return createElement(payload.supplier === "gmap" ? GGreenZone : AGreenZone, {
5610
+ attrs: props
5611
+ });
5612
+ };
5613
+ });
5433
5614
  const imgPassengerCircleArrow = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAiIGhlaWdodD0iNjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxmaWx0ZXIgeD0iLTI4LjYlIiB5PSItMjguNiUiIHdpZHRoPSIxNTcuMSUiIGhlaWdodD0iMTU3LjElIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJwcmVmaXhfX2EiPjxmZU9mZnNldCBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIi8+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMiIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIi8+PGZlQ29tcG9zaXRlIGluPSJzaGFkb3dCbHVyT3V0ZXIxIiBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0ib3V0IiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiLz48ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjc3NDUzMDE2IDAiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIi8+PC9maWx0ZXI+PGNpcmNsZSBpZD0icHJlZml4X19iIiBjeD0iMzAiIGN5PSIzMCIgcj0iMTAuNSIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxjaXJjbGUgc3Ryb2tlLW9wYWNpdHk9Ii4xIiBzdHJva2U9IiMwMDNERkYiIGZpbGwtb3BhY2l0eT0iLjE1IiBmaWxsPSIjNDg3M0ZFIiBjeD0iMzAiIGN5PSIzMCIgcj0iMjkuNSIvPjxwYXRoIGZpbGw9IiM0ODcxRjEiIGQ9Ik0zMCAxMC41NTdsNi4zNDIgMTIuNjg0SDIzLjY1OHoiLz48dXNlIGZpbGw9IiMwMDAiIGZpbHRlcj0idXJsKCNwcmVmaXhfX2EpIiB4bGluazpocmVmPSIjcHJlZml4X19iIi8+PGNpcmNsZSBzdHJva2U9IiNGRkYiIHN0cm9rZS13aWR0aD0iMyIgc3Ryb2tlLWxpbmVqb2luPSJzcXVhcmUiIGZpbGw9IiM0ODcxRjEiIGN4PSIzMCIgY3k9IjMwIiByPSI5Ii8+PC9nPjwvc3ZnPg==";
5434
5615
  const imgPassengerCircle = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjEiIGhlaWdodD0iNjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxmaWx0ZXIgeD0iLTcuMSUiIHk9Ii03LjElIiB3aWR0aD0iMTE0LjMlIiBoZWlnaHQ9IjExNC4zJSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0icHJlZml4X19hIj48ZmVPZmZzZXQgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSIvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249Ii41IiBpbj0ic2hhZG93T2Zmc2V0T3V0ZXIxIiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiLz48ZmVDb21wb3NpdGUgaW49InNoYWRvd0JsdXJPdXRlcjEiIGluMj0iU291cmNlQWxwaGEiIG9wZXJhdG9yPSJvdXQiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSIvPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMC4yNzc0NTMwMTYgMCIgaW49InNoYWRvd0JsdXJPdXRlcjEiLz48L2ZpbHRlcj48Y2lyY2xlIGlkPSJwcmVmaXhfX2IiIGN4PSIzMCIgY3k9IjMwIiByPSIxMC41Ii8+PC9kZWZzPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC40MDUgLjI2NCkiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGNpcmNsZSBzdHJva2Utb3BhY2l0eT0iLjEiIHN0cm9rZT0iIzAwM0RGRiIgZmlsbC1vcGFjaXR5PSIuMTUiIGZpbGw9IiM0ODczRkUiIGN4PSIzMCIgY3k9IjMwIiByPSIyOS41Ii8+PHVzZSBmaWxsPSIjMDAwIiBmaWx0ZXI9InVybCgjcHJlZml4X19hKSIgeGxpbms6aHJlZj0iI3ByZWZpeF9fYiIvPjxjaXJjbGUgc3Ryb2tlPSIjRkZGIiBzdHJva2Utd2lkdGg9IjIuNCIgc3Ryb2tlLWxpbmVqb2luPSJzcXVhcmUiIGZpbGw9IiM0ODcxRjEiIGN4PSIzMCIgY3k9IjMwIiByPSI5LjMiLz48L2c+PC9zdmc+";
5435
5616
  const imgPassengerSmallArrow = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjkiIGhlaWdodD0iMzQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxmaWx0ZXIgeD0iLTI4LjYlIiB5PSItMjguNiUiIHdpZHRoPSIxNTcuMSUiIGhlaWdodD0iMTU3LjElIiBmaWx0ZXJVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIGlkPSJwcmVmaXhfX2EiPjxmZU9mZnNldCBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0ic2hhZG93T2Zmc2V0T3V0ZXIxIi8+PGZlR2F1c3NpYW5CbHVyIHN0ZERldmlhdGlvbj0iMiIgaW49InNoYWRvd09mZnNldE91dGVyMSIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIi8+PGZlQ29tcG9zaXRlIGluPSJzaGFkb3dCbHVyT3V0ZXIxIiBpbjI9IlNvdXJjZUFscGhhIiBvcGVyYXRvcj0ib3V0IiByZXN1bHQ9InNoYWRvd0JsdXJPdXRlcjEiLz48ZmVDb2xvck1hdHJpeCB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAuMjQgMCIgaW49InNoYWRvd0JsdXJPdXRlcjEiLz48L2ZpbHRlcj48Y2lyY2xlIGlkPSJwcmVmaXhfX2IiIGN4PSIxMC41IiBjeT0iMTkuNSIgcj0iMTAuNSIvPjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGZpbGw9IiM0NDcxRkYiIGQ9Ik0xNC40ODEgMGw2LjYwMyAxMy4xODFINy44Nzl6Ii8+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNCkiPjx1c2UgZmlsbD0iIzAwMCIgZmlsdGVyPSJ1cmwoI3ByZWZpeF9fYSkiIHhsaW5rOmhyZWY9IiNwcmVmaXhfX2IiLz48Y2lyY2xlIHN0cm9rZT0iI0ZGRiIgc3Ryb2tlLXdpZHRoPSIyLjQiIHN0cm9rZS1saW5lam9pbj0ic3F1YXJlIiBmaWxsPSIjNDg3MUYxIiBjeD0iMTAuNSIgY3k9IjE5LjUiIHI9IjkuMyIvPjwvZz48L2c+PC9zdmc+";
@@ -5820,7 +6001,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
5820
6001
  const centerSource = {
5821
6002
  source: "geo"
5822
6003
  };
5823
- const setCenterPlaceByRecomand = (point) => {
6004
+ const updateCenterPlaceByPoint = (point) => {
5824
6005
  centerSource.source = "api";
5825
6006
  updatePlace(point);
5826
6007
  };
@@ -5834,15 +6015,40 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
5834
6015
  emit("changePlace", {
5835
6016
  ...place
5836
6017
  });
5837
- updatePlaceCandidates(place);
6018
+ updateRecommendPlace(place);
5838
6019
  await pipeDefer(setZoom)(READY_ZOOM);
5839
6020
  };
6021
+ const setCenterPlaceByUserSpecifiedInZone = ({
6022
+ place,
6023
+ recommends
6024
+ }) => {
6025
+ centerPlace.lng = place.lng;
6026
+ centerPlace.lat = place.lat;
6027
+ centerPlace.name = place.name;
6028
+ centerPlace.displayName = place.displayName;
6029
+ setPlaceCandidatesAndZone(recommends);
6030
+ emit("changePlace", {
6031
+ ...place
6032
+ });
6033
+ };
5840
6034
  const setCenterByPlace = (place) => {
5841
6035
  centerSource.source = "api";
5842
6036
  centerPlace.lng = place.lng;
5843
6037
  centerPlace.lat = place.lat;
5844
6038
  centerPlace.name = place.name;
5845
6039
  centerPlace.displayName = place.displayName;
6040
+ emit("changePlace", {
6041
+ ...place
6042
+ });
6043
+ emit("changeRecomandPlace", {
6044
+ place: {
6045
+ ...place
6046
+ },
6047
+ inputPlace: {
6048
+ ...place
6049
+ },
6050
+ isInZone: !!zoneRef.value
6051
+ });
5846
6052
  };
5847
6053
  const defaultCenterPlacePromise = new Promise((resolve) => {
5848
6054
  getDefaultCenterPlace().then(resolve).catch(() => resolve(void 0));
@@ -5883,10 +6089,11 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
5883
6089
  }
5884
6090
  });
5885
6091
  mapContext.setCenterPlaceByUserSpecified = setCenterPlaceByUserSpecified;
6092
+ mapContext.setCenterPlaceByUserSpecifiedInZone = setCenterPlaceByUserSpecifiedInZone;
5886
6093
  mapContext.panToGeoPositionByRecomend = () => {
5887
6094
  if (geoError.value)
5888
6095
  return false;
5889
- setCenterPlaceByRecomand(geoPosition.value);
6096
+ updateCenterPlaceByPoint(geoPosition.value);
5890
6097
  return true;
5891
6098
  };
5892
6099
  const {
@@ -5901,9 +6108,10 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
5901
6108
  });
5902
6109
  const {
5903
6110
  updatePlace,
5904
- updateRecomandPlace,
5905
- updatePlaceCandidates,
6111
+ updateRecommendPlace,
6112
+ setPlaceCandidatesAndZone,
5906
6113
  placeCandidates,
6114
+ zoneRef,
5907
6115
  availableRef,
5908
6116
  isElectedRef
5909
6117
  } = useMapRecomendPlace({
@@ -5926,17 +6134,25 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
5926
6134
  },
5927
6135
  onChangePlace: (place) => {
5928
6136
  if (centerSource.source !== "recomend") {
5929
- updateRecomandPlace();
6137
+ updateRecommendPlace(place);
5930
6138
  }
5931
6139
  emit("changePlace", place);
5932
6140
  },
5933
- onChange: async (place) => {
6141
+ onChange: async ({
6142
+ place,
6143
+ inputPlace,
6144
+ isInZone
6145
+ }) => {
5934
6146
  centerSource.source = "recomend";
5935
6147
  Object.assign(centerPlace, {
5936
6148
  ...place
5937
6149
  });
5938
6150
  panTo(place2point(place));
5939
- emit("changeRecomandPlace", place);
6151
+ emit("changeRecomandPlace", {
6152
+ place,
6153
+ inputPlace,
6154
+ isInZone
6155
+ });
5940
6156
  if (isFirstWorkflowRecomendLoadingRef.value)
5941
6157
  await pipeDefer(setZoom)(READY_ZOOM);
5942
6158
  completeFirstWorkflowRecomend();
@@ -5951,6 +6167,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
5951
6167
  mapContext.onChangeRecomendPlaces([...placeCandidates.value]);
5952
6168
  });
5953
6169
  return () => {
6170
+ var _a2, _b2;
5954
6171
  const {
5955
6172
  geoLoadingTitle,
5956
6173
  recomendDescription,
@@ -5967,7 +6184,11 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
5967
6184
  "fallback": slots.fallback,
5968
6185
  "loading": slots.loading
5969
6186
  }
5970
- }, [!geoLoading.value && !geoError.value && Vue.h(PassengerCircle, {
6187
+ }, [((_a2 = zoneRef.value) == null ? void 0 : _a2.path.length) && Vue.h(GreenZone, {
6188
+ "attrs": {
6189
+ "path": (_b2 = zoneRef.value) == null ? void 0 : _b2.path
6190
+ }
6191
+ }), !geoLoading.value && !geoError.value && Vue.h(PassengerCircle, {
5971
6192
  "attrs": {
5972
6193
  "position": geoPosition.value,
5973
6194
  "angle": orientation.cssRotationVariableName
@@ -6150,7 +6371,8 @@ const AWalkingLine = defineSetup(function AWalkingLine2(props) {
6150
6371
  "strokeStyle": "dashed",
6151
6372
  "strokeDasharray": [strokeWidth, strokeWidth * 1.5],
6152
6373
  "lineJoin": "round",
6153
- "lineCap": "round"
6374
+ "lineCap": "round",
6375
+ "zIndex": ZINDEX_LINE_LAYER
6154
6376
  }
6155
6377
  });
6156
6378
  };
@@ -6186,7 +6408,8 @@ const GWalkingLine = defineSetup(function GWalkingLine2(props) {
6186
6408
  scale: 1
6187
6409
  },
6188
6410
  repeat: `${strokeWidth * 2}px`
6189
- }]
6411
+ }],
6412
+ "zIndex": ZINDEX_LINE_LAYER
6190
6413
  }
6191
6414
  });
6192
6415
  };
@@ -7102,6 +7325,7 @@ const useBusinessRecomendPlaceMap = () => {
7102
7325
  const { inChina } = useMapInChina();
7103
7326
  const panToGeoPositionByRecomend = (value) => mapContext.panToGeoPositionByRecomend(value);
7104
7327
  const setCenterPlaceByUserSpecified = (value) => mapContext.setCenterPlaceByUserSpecified(value);
7328
+ const setCenterPlaceByUserSpecifiedInZone = (value) => mapContext.setCenterPlaceByUserSpecifiedInZone(value);
7105
7329
  const mapContext = {
7106
7330
  panToGeoPositionByRecomend: () => {
7107
7331
  throw new Error("MyError: panToGeoPositionByRecomend used before assigned");
@@ -7109,6 +7333,9 @@ const useBusinessRecomendPlaceMap = () => {
7109
7333
  setCenterPlaceByUserSpecified: () => {
7110
7334
  throw new Error("MyError: setCenterPlaceByRecomand used before assigned");
7111
7335
  },
7336
+ setCenterPlaceByUserSpecifiedInZone: () => {
7337
+ throw new Error("MyError: setCenterPlaceByUserSpecifiedInZone used before assigned");
7338
+ },
7112
7339
  onChangeCenterPlace: (place) => {
7113
7340
  Object.assign(centerPlace, { ...place });
7114
7341
  },
@@ -7122,6 +7349,7 @@ const useBusinessRecomendPlaceMap = () => {
7122
7349
  placeCandidates,
7123
7350
  panToGeoPositionByRecomend,
7124
7351
  setCenterPlaceByUserSpecified,
7352
+ setCenterPlaceByUserSpecifiedInZone,
7125
7353
  apiMapDistance,
7126
7354
  apiMapInChina: inChina
7127
7355
  };