@heycar/heycars-map 0.4.8 → 0.5.0

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.
@@ -1,2 +1,7 @@
1
1
  import type { Point } from "../types/interface";
2
2
  export declare const BEIJIN_POINT: Point;
3
+ export declare const ZINDEX_BUBBLE_LAYER = 50;
4
+ export declare const ZINDEX_START_END_LOGO_LAYER = 40;
5
+ export declare const ZINDEX_PLACE_LAYER = 30;
6
+ export declare const ZINDEX_CAR_LAYER = 21;
7
+ export declare const ZINDEX_PASSENGER_LAYER = 20;
@@ -14,7 +14,7 @@ type SectionConfirmedProps = Required<MROP> & {
14
14
  export declare const SectionConfirmed: import("vue").DefineComponent<import("vue/types/v3-component-props").ComponentObjectPropsOptions<SectionConfirmedProps>, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").EmitByProps<SectionConfirmedProps, Required<SectionConfirmedProps>>, never, SectionConfirmedProps, {} | {}>;
15
15
  type SectionDriverStartServiceProps = Required<MROP> & {
16
16
  passengerPosition?: Point;
17
- carPosition: Point;
17
+ carPosition?: Point;
18
18
  from: Place;
19
19
  renderTitle: (props: Pick<DrivingRouteRenderProps, "duration" | "distance">) => string;
20
20
  };
@@ -27,14 +27,14 @@ type SectionBookDispatchedProps = Required<MROP> & {
27
27
  export declare const SectionBookDispatched: import("vue").DefineComponent<import("vue/types/v3-component-props").ComponentObjectPropsOptions<SectionBookDispatchedProps>, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").EmitByProps<SectionBookDispatchedProps, Required<SectionBookDispatchedProps>>, never, SectionBookDispatchedProps, {} | {}>;
28
28
  type SectionDriverArrivedProps = Required<MROP> & {
29
29
  from: Place;
30
- carPosition: Point;
30
+ carPosition?: Point;
31
31
  passengerPosition?: Point;
32
32
  title: string;
33
33
  };
34
34
  export declare const SectionDriverArrived: import("vue").DefineComponent<import("vue/types/v3-component-props").ComponentObjectPropsOptions<SectionDriverArrivedProps>, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").EmitByProps<SectionDriverArrivedProps, Required<SectionDriverArrivedProps>>, never, SectionDriverArrivedProps, {} | {}>;
35
35
  type SectionInServiceProps = Required<MROP> & {
36
36
  to: Place;
37
- carPosition: Point;
37
+ carPosition?: Point;
38
38
  renderTitle: (props: Pick<DrivingRouteRenderProps, "duration" | "distance">) => string;
39
39
  };
40
40
  export declare const SectionInService: import("vue").DefineComponent<import("vue/types/v3-component-props").ComponentObjectPropsOptions<SectionInServiceProps>, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").Empty, import("../../types/helper").EmitByProps<SectionInServiceProps, Required<SectionInServiceProps>>, never, SectionInServiceProps, {} | {}>;
@@ -1,3 +1,11 @@
1
1
  export { pointInfoBoxEmphasize, pointInfoBoxTitle, pointLayout, pointSingleInfoBox, } from "../StartEndPoint/StartEndPoint.css";
2
2
  export declare const taxiCarLayout: string;
3
3
  export declare const carIcon: string;
4
+ export declare const hide: import("@vanilla-extract/recipes").RuntimeFn<{
5
+ hide: {
6
+ true: {
7
+ visibility: "hidden";
8
+ };
9
+ false: {};
10
+ };
11
+ }>;
package/dist/index.cjs CHANGED
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => {
5
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
6
+ return value;
7
+ };
2
8
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
9
  const Vue = require("vue");
4
10
  const style = "";
@@ -2213,7 +2219,7 @@ const ADrivingLine = defineSetup(function ADrivingLine2(props) {
2213
2219
  "attrs": {
2214
2220
  "showDir": true,
2215
2221
  "path": props.path,
2216
- "strokeWeight": strokeWidth + 2 * dirWidth,
2222
+ "strokeWeight": strokeWidth + dirWidth,
2217
2223
  "strokeOpacity": 1,
2218
2224
  "strokeColor": "transparent",
2219
2225
  "lineJoin": "round",
@@ -2657,6 +2663,12 @@ const KeyedFitView = defineSetup(function KeyedFitView2(props, {
2657
2663
  return Vue.h("div", [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
2658
2664
  };
2659
2665
  });
2666
+ const BEIJIN_POINT = [116.2317, 39.5427];
2667
+ const ZINDEX_BUBBLE_LAYER = 50;
2668
+ const ZINDEX_START_END_LOGO_LAYER = 40;
2669
+ const ZINDEX_PLACE_LAYER = 30;
2670
+ const ZINDEX_CAR_LAYER = 21;
2671
+ const ZINDEX_PASSENGER_LAYER = 20;
2660
2672
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
2661
2673
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
2662
2674
  const StartEndPoint_css_ts_vanilla = "";
@@ -2774,7 +2786,8 @@ const AStartEndPoint = defineSetup(function AStartEndPoint2(props) {
2774
2786
  "registerOverlay": props.registerOverlay,
2775
2787
  "position": props.position,
2776
2788
  "content": contentRef.value,
2777
- "anchor": "bottom-center"
2789
+ "anchor": "bottom-center",
2790
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2778
2791
  }
2779
2792
  });
2780
2793
  });
@@ -2818,7 +2831,8 @@ const GStartEndPoint = defineSetup(function GStartEndPoint2(props) {
2818
2831
  "attrs": {
2819
2832
  "registerOverlay": props.registerOverlay,
2820
2833
  "position": vec2lnglat(props.position),
2821
- "content": contentRef.value
2834
+ "content": contentRef.value,
2835
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2822
2836
  }
2823
2837
  });
2824
2838
  };
@@ -2896,6 +2910,49 @@ const BusinessQuotingMap = defineLagecySetup(function BusinessQuotingMap2(props)
2896
2910
  })]);
2897
2911
  };
2898
2912
  }).props(["fallback", "from", "loading", "mapRef", "registerOverlay", "renderDescription", "to", "fromDescription", "log"]);
2913
+ const isPlace = (place) => {
2914
+ return place.lng !== void 0 && place.lat !== void 0;
2915
+ };
2916
+ const sleep = (milliSeconds) => new Promise((resolve) => setTimeout(resolve, milliSeconds));
2917
+ class SingleGeoWatch {
2918
+ constructor(option) {
2919
+ __publicField(this, "id", 0);
2920
+ __publicField(this, "listeners", /* @__PURE__ */ new Map());
2921
+ __publicField(this, "option", {});
2922
+ __publicField(this, "singleWatchId");
2923
+ this.option = option != null ? option : {};
2924
+ }
2925
+ watchPosition(onSuccess, onError) {
2926
+ this.id += 1;
2927
+ const { id } = this;
2928
+ this.listeners.set(id, [onSuccess, onError]);
2929
+ this.start();
2930
+ return id;
2931
+ }
2932
+ clearWatch(id) {
2933
+ this.listeners.delete(id);
2934
+ }
2935
+ async start() {
2936
+ const { listeners, option, singleWatchId } = this;
2937
+ if (singleWatchId) {
2938
+ navigator.geolocation.clearWatch(singleWatchId);
2939
+ await sleep(20);
2940
+ }
2941
+ this.singleWatchId = navigator.geolocation.watchPosition(
2942
+ (position) => {
2943
+ for (const [onSuccess] of listeners.values()) {
2944
+ onSuccess(position);
2945
+ }
2946
+ },
2947
+ (error) => {
2948
+ for (const [_, onError] of listeners.values()) {
2949
+ onError == null ? void 0 : onError(error);
2950
+ }
2951
+ },
2952
+ option
2953
+ );
2954
+ }
2955
+ }
2899
2956
  const useAmapGCJ02 = () => {
2900
2957
  const { readyPromise } = useMapSupplier();
2901
2958
  async function toGcj02(point) {
@@ -2926,6 +2983,11 @@ const useMapGCJ02 = () => {
2926
2983
  return supplier === "gmap" ? useGmapGCJ02() : useAmapGCJ02();
2927
2984
  };
2928
2985
  const GEO_TIMEOUT = 5e3;
2986
+ const singleGeoWatch = new SingleGeoWatch({
2987
+ timeout: GEO_TIMEOUT,
2988
+ maximumAge: 0,
2989
+ enableHighAccuracy: false
2990
+ });
2929
2991
  const useGeoLocation = (props) => {
2930
2992
  var _a, _b;
2931
2993
  const { onChange, onLoad, onLoadDefault, onError, geoDefaultPosition } = props != null ? props : {};
@@ -2948,12 +3010,11 @@ const useGeoLocation = (props) => {
2948
3010
  () => true,
2949
3011
  (_1, _2, onCleanup) => {
2950
3012
  loading.value = true;
2951
- const watchId = navigator.geolocation.watchPosition(
3013
+ const watchId = singleGeoWatch.watchPosition(
2952
3014
  async (position) => {
2953
3015
  const coordinate = position.coords;
2954
3016
  const wgsPoint = [position.coords.longitude, position.coords.latitude];
2955
3017
  const point = await toGcj02(wgsPoint);
2956
- console.log("wgsPoint, point = ", wgsPoint, point);
2957
3018
  coordinateRef.value = coordinate;
2958
3019
  positionRef.value = point;
2959
3020
  if (loading.value) {
@@ -2972,10 +3033,9 @@ const useGeoLocation = (props) => {
2972
3033
  onLoadDefault == null ? void 0 : onLoadDefault({ position });
2973
3034
  }
2974
3035
  onError == null ? void 0 : onError(error);
2975
- },
2976
- { timeout: GEO_TIMEOUT, maximumAge: 0, enableHighAccuracy: false }
3036
+ }
2977
3037
  );
2978
- onCleanup(() => navigator.geolocation.clearWatch(watchId));
3038
+ onCleanup(() => singleGeoWatch.clearWatch(watchId));
2979
3039
  },
2980
3040
  { immediate: true }
2981
3041
  );
@@ -3416,7 +3476,8 @@ const APassengerCircle = defineSetup(function APassengerCircle2(props) {
3416
3476
  "position": props.position,
3417
3477
  "content": contentRef.value,
3418
3478
  "anchor": "bottom-center",
3419
- "registerOverlay": props.registerOverlay
3479
+ "registerOverlay": props.registerOverlay,
3480
+ "zIndex": ZINDEX_PASSENGER_LAYER
3420
3481
  }
3421
3482
  });
3422
3483
  };
@@ -3438,7 +3499,8 @@ const GPassengerCircle = defineSetup(function GPassengerCircle2(props) {
3438
3499
  "attrs": {
3439
3500
  "position": vec2lnglat(props.position),
3440
3501
  "content": contentRef.value,
3441
- "registerOverlay": props.registerOverlay
3502
+ "registerOverlay": props.registerOverlay,
3503
+ "zIndex": ZINDEX_PASSENGER_LAYER
3442
3504
  }
3443
3505
  });
3444
3506
  });
@@ -3613,7 +3675,8 @@ const APlaceCircle = defineSetup(function APlaceCircle2(props, {
3613
3675
  "attrs": {
3614
3676
  "position": props.position,
3615
3677
  "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3616
- "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft
3678
+ "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft,
3679
+ "zIndex": ZINDEX_PLACE_LAYER
3617
3680
  },
3618
3681
  "on": {
3619
3682
  "click": handleClick
@@ -3664,7 +3727,8 @@ const GPlaceCircle = defineSetup(function GPlaceCircle2(props, {
3664
3727
  return () => Vue.h(GmapAdvancedMarkerView, {
3665
3728
  "attrs": {
3666
3729
  "position": vec2lnglat(props.position),
3667
- "content": props.label ? contentRef.value : contentWithoutLabelRef.value
3730
+ "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3731
+ "zIndex": ZINDEX_PLACE_LAYER
3668
3732
  },
3669
3733
  "on": {
3670
3734
  "click": handleClick
@@ -3880,7 +3944,8 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3880
3944
  ...place
3881
3945
  });
3882
3946
  emit("changeRecomandPlace", place);
3883
- await pipeDefer(setZoom)(READY_ZOOM);
3947
+ if (isFirstWorkflowRecomendLoadingRef.value)
3948
+ await pipeDefer(setZoom)(READY_ZOOM);
3884
3949
  completeFirstWorkflowRecomend();
3885
3950
  },
3886
3951
  onChangeCity: (value) => {
@@ -3934,10 +3999,6 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3934
3999
  })]);
3935
4000
  };
3936
4001
  }).props(["log", "geoLoadingTitle", "unavailableTitle", "recomendDescription", "fallback", "geoDefaultPosition", "getRecomendPlace", "getDefaultCenterPlace", "loading", "mapContext"]);
3937
- const BEIJIN_POINT = [116.2317, 39.5427];
3938
- const isPlace = (place) => {
3939
- return place.lng !== void 0 && place.lat !== void 0;
3940
- };
3941
4002
  const useAmapGeometry = () => {
3942
4003
  const payload = useMapSupplier();
3943
4004
  const apiMapDistance = (from, to) => {
@@ -3963,6 +4024,7 @@ const useMapGeometry = () => {
3963
4024
  const imgTaxicar = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iNDQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGQ9Ik0zNC4wODcgMTAuOTZjMCAyLjM2OS0uMDU0IDIuOTgtLjc4MiAzLjcwNC0uNzkzLjc5LTUuMjM2LjgzMy01LjIzNi44MzNsLTQuMTE2LjE5Mi05Ljg5Ni0uMTQ0cy03Ljc5LS4wMjYtOS4xMzEtLjAyNmMtMS4zNDIgMC0yLjQwNi0uODQ3LTIuNDA2LS44NDdDLjE0IDEyLjkzMiAwIDExLjA5IDAgMTEuMDlWNS44NnMuMTQtMS44NDIgMi41Mi0zLjU4M2MwIDAgMS4wNjQtLjg0NiAyLjQwNi0uODQ2IDEuMzQxIDAgOS4xMy0uMDI2IDkuMTMtLjAyNmw5Ljg5Ny0uMTQ0IDQuMTE2LjE5MnM0LjQ4NCAwIDUuMjM2LjgzM2MuNzc4Ljg2Ljc4MiAxLjM3Ljc4MiAzLjc0djQuOTM0eiIgaWQ9InByZWZpeF9fYiIvPjxwYXRoIGQ9Ik0wIDEuNDkzUzUuNy4xOCA4LjcxOS4wNWMzLjAyLS4xMzEgMy40Ny4wMTcgNS4yODIuMjEuNTA3LjA1MSAzLjI2LjkxIDMuMjYuOTFsLTcuMzAzLjNMMCAxLjQ5NHoiIGlkPSJwcmVmaXhfX2MiLz48cGF0aCBkPSJNMTAuMDggMi44MTVDOS4yOTUgNC40ODMgOC44NSA2LjQyMyA4Ljg1IDguNDk0YzAgMi4wNjIuNDQyIDMuOTk0IDEuMjIgNS42NTdsNS42OTgtMS4xNTdhMTUuNjAxIDE1LjYwMSAwIDAxLS42NjctNC41NTJjMC0xLjY1OS4yMDQtMy4wNjUuNjU5LTQuNTA1TDEwLjA4IDIuODE1eiIgaWQ9InByZWZpeF9fZSIvPjxwYXRoIGQ9Ik0yNS43NTMgOC40NTVjMCAxLjkyLS4yMiAzLjM2NC0uNjAxIDQuODkxbDIuNjI2LjM1YzEuMTc4LS4wMDUgMi4xMzItMi4zMzUgMi4xMzItNS4yMTVzLS45NTQtNS4yMS0yLjEzMi01LjIxbC0yLjYxNC4zNWMuMzcyIDEuNTEzLjU4OSAyLjk0LjU4OSA0LjgzNHoiIGlkPSJwcmVmaXhfX2ciLz48cGF0aCBkPSJNLjA2NC4wMTVMLjE1OC4wMDJDLjE4OC0uMDE2LjM3MS4xMDYuNC4xMjRjLjE4OC4xMjYuMzIxLjI0NC40My43Ni4wNTQuMjUyLjIwNyAxLjQ2NS4xOTggMS40OTZsLS42MzMuODMzLjExOSAzLjE3LS4wOTQuMDc2TDAgLjEzN2MwLS4wNTIuMDI1LS4xLjA2NC0uMTIyeiIgaWQ9InByZWZpeF9faSIvPjxwYXRoIGQ9Ik0uMDY0IDYuNTE1bC4wOTQuMDEzYy4wMy4wMTguMjEzLS4xMDQuMjQyLS4xMjIuMTg4LS4xMjYuMzIxLS4yNDQuNDMtLjc2LjA1NC0uMjUyLjIwNy0xLjQ2NS4xOTgtMS40OTZsLS42MzMtLjgzM0wuNDIgMHYuMDdMMCA2LjM5NGMwIC4wNTIuMDI1LjEuMDY0LjEyMnoiIGlkPSJwcmVmaXhfX2siLz48bGluZWFyR3JhZGllbnQgeDE9IjEyNS4yNjQlIiB5MT0iNDkuNjI2JSIgeDI9IjAlIiB5Mj0iNTAlIiBpZD0icHJlZml4X19kIj48c3RvcCBzdG9wLWNvbG9yPSIjRkZGIiBzdG9wLW9wYWNpdHk9Ii41IiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1vcGFjaXR5PSIuNSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgeDE9IjIyLjcxMiUiIHkxPSI3My4xMzMlIiB4Mj0iNjguNjIlIiB5Mj0iNjYuMTk0JSIgaWQ9InByZWZpeF9fZiI+PHN0b3Agc3RvcC1jb2xvcj0iI0ZGRiIgc3RvcC1vcGFjaXR5PSIuNSIgb2Zmc2V0PSIwJSIvPjxzdG9wIHN0b3Atb3BhY2l0eT0iLjUiIG9mZnNldD0iMTAwJSIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IHgxPSIxMjguNzY4JSIgeTE9IjUwJSIgeDI9IjAlIiB5Mj0iNTAlIiBpZD0icHJlZml4X19oIj48c3RvcCBzdG9wLWNvbG9yPSIjRkZGIiBzdG9wLW9wYWNpdHk9Ii41IiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1vcGFjaXR5PSIuNSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgeDE9IjEwMCUiIHkxPSIxMDAlIiB4Mj0iMjguNCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19qIj48c3RvcCBzdG9wLWNvbG9yPSIjRkZCRUJFIiBzdG9wLW9wYWNpdHk9Ii41IiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzM1MjIyMiIgc3RvcC1vcGFjaXR5PSIuNSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgeDE9IjEwMCUiIHkxPSIxMDAlIiB4Mj0iMjguNCUiIHkyPSIxMDAlIiBpZD0icHJlZml4X19sIj48c3RvcCBzdG9wLWNvbG9yPSIjRkZCRUJFIiBzdG9wLW9wYWNpdHk9Ii41IiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzM1MjIyMiIgc3RvcC1vcGFjaXR5PSIuNSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48ZmlsdGVyIHg9Ii0xNy42JSIgeT0iLTQxLjYlIiB3aWR0aD0iMTM1LjIlIiBoZWlnaHQ9IjE4My4yJSIgZmlsdGVyVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94IiBpZD0icHJlZml4X19hIj48ZmVPZmZzZXQgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSIvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSIvPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwLjA4NjI3NDUwOTggMCAwIDAgMCAwLjA4NjI3NDUwOTggMCAwIDAgMCAwLjA4NjI3NDUwOTggMCAwIDAgMC41IDAiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIi8+PC9maWx0ZXI+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PHBhdGggZD0iTTAgMGgyNHY0NEgweiIvPjxnIGZpbGwtcnVsZT0ibm9uemVybyI+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAxIDEgMCAzLjQ5OCA0LjY0MikiPjx1c2UgZmlsbD0iIzAwMCIgZmlsdGVyPSJ1cmwoI3ByZWZpeF9fYSkiIHhsaW5rOmhyZWY9IiNwcmVmaXhfX2IiLz48dXNlIGZpbGw9IiNERkVDRjIiIHhsaW5rOmhyZWY9IiNwcmVmaXhfX2IiLz48L2c+PHBhdGggZD0iTTE0LjQ1OCAzOC43MjhjMi4zNjkgMCAyLjk4LS4wNTMgMy43MDQtLjc4MS43OS0uNzk0LjgzNC01LjIzNy44MzQtNS4yMzdsLjE5MS00LjExNS0uMTQ0LTkuODk2cy0uMDI2LTcuNzktLjAyNi05LjEzMmMwLTEuMzQyLS44NDYtMi40MDUtLjg0Ni0yLjQwNS0xLjc0MS0yLjM4MS0zLjU4Mi0yLjUyLTMuNTgyLTIuNTJIOS4zNTdzLTEuODQxLjEzOS0zLjU4MiAyLjUyYzAgMC0uODQ3IDEuMDYzLS44NDcgMi40MDUgMCAxLjM0Mi0uMDI2IDkuMTMyLS4wMjYgOS4xMzJsLS4xNDQgOS44OTYuMTkyIDQuMTE1czAgNC40ODQuODMzIDUuMjM3Yy44Ni43NzcgMS4zNy43ODEgMy43NC43ODFoNC45MzV6IiBmaWxsPSIjRUZGNUY4Ii8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAxIDEgMCAxNy4wOTMgMTUuMDYyKSIgb3BhY2l0eT0iLjkiPjx1c2UgZmlsbD0iIzE2MTYxNiIgeGxpbms6aHJlZj0iI3ByZWZpeF9fYyIvPjx1c2UgZmlsbD0idXJsKCNwcmVmaXhfX2QpIiB4bGluazpocmVmPSIjcHJlZml4X19jIi8+PC9nPjxwYXRoIGQ9Ik01LjgyNiAxNC41M2MxLjgwNi0uOTM3IDMuOTE1LTEuNDY1IDYuMTctMS40NjUgMi4yNDMgMCA0LjMzOS41MjggNi4xNDEgMS40NTJsLTEuMjc4IDYuNDg5YTE1LjM3NSAxNS4zNzUgMCAwMC00LjkxNS0uNzk0Yy0xLjc5MyAwLTMuMzI0LjI1NC00Ljg3My43OTRMNS44MjYgMTQuNTN6IiBmaWxsPSIjMTYxNjE2Ii8+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAxIDEgMCAzLjQ5OCA0LjY0MikiPjx1c2UgZmlsbD0iIzNDNDI0MiIgeGxpbms6aHJlZj0iI3ByZWZpeF9fZSIvPjx1c2UgZmlsbD0idXJsKCNwcmVmaXhfX2YpIiB4bGluazpocmVmPSIjcHJlZml4X19lIi8+PC9nPjxnIG9wYWNpdHk9Ii45IiB0cmFuc2Zvcm09Im1hdHJpeCgwIDEgMSAwIDMuNDk4IDQuNjQyKSI+PHVzZSBmaWxsPSIjMTYxNjE2IiB4bGluazpocmVmPSIjcHJlZml4X19nIi8+PHVzZSBmaWxsPSJ1cmwoI3ByZWZpeF9faCkiIHhsaW5rOmhyZWY9IiNwcmVmaXhfX2ciLz48L2c+PHBhdGggZD0iTTMuODcgMTcuNjUxbC44NzYtLjQ2MmEuMzEzLjMxMyAwIDAwLjE3LS4yNzR2LS4xODhsLTEuMzE3LjY5NXYuMDgyYy4wMDQuMTI3LjE1Mi4yMDkuMjcuMTQ3eiIgZmlsbD0iIzMwMzQzNSIvPjxwYXRoIGQ9Ik0zLjU2NCAxNy40NWwxLjA4Mi0uNTY4Yy4xLS4wNTMuMjEtLjA5LjMyNy0uMTA2YS4xMDguMTA4IDAgMDAuMDk2LS4xMDd2LS41NTJjMC0uMDktLjA3OC0uMTY0LS4xNzQtLjE2NEg0Ljg1Yy0uMTEgMC0uNTAyLjA2Mi0xIC41MjgtLjIyMi4yMDktLjM1My42MzgtLjM1My45MzMgMCAuMDMzLjAzNS4wNTMuMDY2LjAzN3oiIGZpbGw9IiNERkVDRjIiLz48cGF0aCBkPSJNNS40MzQgMTUuMDYyczEuMDk1IDQuNDY3IDEuMjI2IDcuNDg2Yy4xMzEgMy4wMi0uMDE3IDMuNDctLjIxIDUuMjgyLS4wNTEuNTA3LS45MzcgMy44MTMtLjkzNyAzLjgxM0w1LjM2IDI1LjE3bC4wNzQtMTAuMTF6IiBmaWxsPSIjMTYxNjE2IiBvcGFjaXR5PSIuOSIvPjxwYXRoIGQ9Ik0yMC4xMyAxNy42NTFsLS44NzYtLjQ2MmEuMzEzLjMxMyAwIDAxLS4xNy0uMjc0di0uMTg4bDEuMzE3LjY5NXYuMDgyYy0uMDA0LjEyNy0uMTUyLjIwOS0uMjcuMTQ3eiIgZmlsbD0iIzMwMzQzNSIvPjxwYXRoIGQ9Ik0yMC40MzYgMTcuNDVsLTEuMDgyLS41NjhhLjk4NC45ODQgMCAwMC0uMzI3LS4xMDYuMTA4LjEwOCAwIDAxLS4wOTYtLjEwN3YtLjU1MmMwLS4wOS4wNzgtLjE2NC4xNzQtLjE2NGguMDQ0Yy4xMSAwIC41MDIuMDYyIDEgLjUyOC4yMjIuMjA5LjM1My42MzguMzUzLjkzMyAwIC4wMzMtLjAzNS4wNTMtLjA2Ni4wMzd6IiBmaWxsPSIjREZFQ0YyIi8+PHBhdGggZD0iTTkuMjk2IDM4LjUyNGg1LjM3NWMyLjI1MiAwIDIuODA2LS40NTggMy40MzQtMS4xNS0uMTA0LjI4Ny0uMjE4LjUyLS4zNDQuNjU5LS43MTIuNzgxLTEuMDI2IDEuMzI1LTMuMzU2IDEuMzI1SDkuNTU4Yy0yLjMzIDAtMi41NDQtLjQ4Ni0zLjM5LTEuMzI1LS4xNDktLjE0Ny0uMjc2LS40MDUtLjM4OS0uNzMyLjc1NS43NzcgMS4xNjUgMS4yMjMgMy41MTcgMS4yMjN6IiBmaWxsPSIjOTVBNEFEIi8+PHBhdGggZD0iTTguODgxIDM3LjkyMmg2LjA1MmMxLjkxMSAwIDIuNzM2LS4yOTggMy4zMy0uNzgxYTMuMDc1IDMuMDc1IDAgMDEtLjI5Ny43MmMtLjU4NS42MTgtMS4yMyAxLjAxOS0zLjMzNCAxLjAxOUg5LjE3OGMtMS40OCAwLTIuMi0uMTc2LTIuNzE4LS41MDQtLjExOC0uMTEtLjI0LS4yMzctLjM4NC0uMzg0LS4xNC0uMTQ3LS4yNjYtLjQwNS0uMzc2LS43NC41OS40MzMgMS4zOC42NyAzLjE4MS42N3oiIGZpbGw9IiNDQkQ4REUiLz48cGF0aCBkPSJNMTEuODE4IDM4LjAzN2MxLjY1IDAgMy4xMTUtLjA2NiA0LjA0LS4xNjQtLjA3LjE5My0uMTUyLjM0NC0uMjQuNDI2LS4wMzUuMDM3LS4xMTMuMDctLjE0OC4wOTgtLjkyNS4wODItMi4xOTUuMTMtMy42NTIuMTNhNDYuMjIgNDYuMjIgMCAwMS0zLjUzOS0uMTE4Yy0uMDQtLjAzMy0uMTI2LS4wNy0uMTctLjExLS4wOTYtLjA4Mi0uMTc5LS4yMy0uMjUzLS40MTguOTM0LjA5OSAyLjM2LjE1NiAzLjk2Mi4xNTZ6IiBmaWxsPSIjRjJGQUZGIi8+PHBhdGggZD0iTTExLjk4OCAxMi4xOTRjLTIuMjAzIDAtNC4yODUuNDQ2LTYuMTA5IDEuMjI3Ljc4Ny02Ljk2MSAzLjUtNy4xOCAzLjUtNy4xOGg1LjE5MnMzLjEyNS4zMTkgMy41IDcuMTcyYTE1LjQ5MyAxNS40OTMgMCAwMC02LjA4My0xLjIyeiIgZmlsbD0iI0Y5RkRGRiIvPjxnIHRyYW5zZm9ybT0ibWF0cml4KDAgMSAxIDAgNS44MzQgMzcuNTE3KSI+PHVzZSBmaWxsPSIjQjkyRTREIiB4bGluazpocmVmPSIjcHJlZml4X19pIi8+PHVzZSBmaWxsLW9wYWNpdHk9Ii43IiBmaWxsPSJ1cmwoI3ByZWZpeF9faikiIHhsaW5rOmhyZWY9IiNwcmVmaXhfX2kiLz48L2c+PGcgdHJhbnNmb3JtPSJtYXRyaXgoMCAxIDEgMCAxMS40MzggMzcuNTE3KSI+PHVzZSBmaWxsPSIjQjkyRTREIiB4bGluazpocmVmPSIjcHJlZml4X19rIi8+PHVzZSBmaWxsLW9wYWNpdHk9Ii43IiBmaWxsPSJ1cmwoI3ByZWZpeF9fbCkiIHhsaW5rOmhyZWY9IiNwcmVmaXhfX2siLz48L2c+PHBhdGggZD0iTTE4LjQxIDM2LjI3NGMtLjAzOC4yNS0uMDgyLjQ1NC0uMTMuNjQyLS4wOTIuMzcyLS40MTkuNjU1LS44Mi43MTItMS40NzUuMjA4LTMuNDM0LjQyMS01LjU4MS40MjEtMi4wODYgMC0zLjk4OC0uMjA0LTUuNDQ2LS40MDVhLjk3NS45NzUgMCAwMS0uODI0LS43MDggOC45MDMgOC45MDMgMCAwMS0uMTM1LS42NDJjMS41MjIuMjUgMy44MjYuNDEgNi40MDUuNDEgMi42NDggMCA1LjAwOS0uMTY4IDYuNTMyLS40M3oiIGZpbGw9IiNERkVDRjIiLz48cGF0aCBkPSJNMTYuMjE2IDM2LjcxMWMtLjk0Ny40ODctMi40ODcuNy00LjIzMi43LTEuNjk4IDAtMy4yMDctLjE5Ni00LjE1OS0uNjYzLS40NC0uODMtLjY2My0yLjY0My0uNjYzLTIuNjQzbC0uMDA5LS4xODRjLjc3My43MDggMi42NDUgMS4yMDMgNC44MyAxLjIwMyAyLjI0MyAwIDQuMTU5LS41MjQgNC44OTItMS4yNmwtLjAxMy4yNDFjMC0uMDA0LS4yMTggMS43NjQtLjY0NiAyLjYwNnpNNy40NDcgMjMuOTNhMjAuMTIgMjAuMTIgMCAwMC0uMjk0LTIuNDQydi0uMDY1YzEuNTM4LS4zMiAzLjE2Ny0uNjQ5IDQuODYyLS42NDkgMS42NzUgMCAzLjI5NC4zMjYgNC44MTYuNjM3YTIyLjY3MyAyMi42NzMgMCAwMC0uMzAzIDIuNTJjLS4xNDcgMi44ODQuMDIgMy4zMTQuMjMyIDUuMDQ4LjAwNi4wNTcuMDI2LjE1Mi4wNTYuMjc0LTEuNTEzLjI3OC0zIC41NC00LjkxMi41NC0xLjg0NyAwLTMuMjg5LS4yNS00Ljc1LS41MTF2LS4wMDhjLjAzLS4xMzEuMDU1LS4yMzMuMDYtLjI5LjIxOC0xLjc0NC4zOC0yLjE3My4yMzMtNS4wNTN6IiBmaWxsPSIjRjJGQUZGIi8+PHBhdGggZD0iTTEyLjA2NyAxOS43MTZsLTQuNjQ1LjY5MmMtLjQzMS0yLjkyLS44MzItNC4zNi0xLjIwMi00LjMyNGwtLjIxLTEuMjk3YTExLjczMiAxMS43MzIgMCAwMTYuMDI2LTEuNjczYy4zODYgMC0uMTM3LjA1LTEuNTY5LjE0N2wxLjYgNi40NTV6IiBmaWxsPSIjMTYxNjE2Ii8+PC9nPjwvZz48L3N2Zz4=";
3964
4025
  const TaxiCar_css_ts_vanilla = "";
3965
4026
  var carIcon = "_65j3sr1";
4027
+ var hide = createRuntimeFn({ defaultClassName: "", variantClassNames: { hide: { true: "_65j3sr2", false: "_65j3sr3" } }, defaultVariants: {}, compoundVariants: [] });
3966
4028
  var pointInfoBoxEmphasize = "_4a4ovk5";
3967
4029
  var pointInfoBoxTitle = "_4a4ovk3";
3968
4030
  var pointLayout = "_4a4ovk0";
@@ -3973,24 +4035,43 @@ const ATaxiCar = defineSetup(function ATaxiCar2(props) {
3973
4035
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
3974
4036
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
3975
4037
  if (!props.title)
3976
- return `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`;
3977
- return `
4038
+ return {
4039
+ img: `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`
4040
+ };
4041
+ const content = (hide$1) => `
3978
4042
  <div class="${pointLayout}">
3979
- <div class="${pointSingleInfoBox}">
4043
+ <div class="${pointSingleInfoBox} ${hide({
4044
+ hide: !hide$1
4045
+ })}">
3980
4046
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
3981
4047
  </div>
3982
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4048
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4049
+ hide: hide$1
4050
+ })}" style="${carStyle}">
3983
4051
  </div>
3984
4052
  `;
4053
+ return {
4054
+ box: content(true),
4055
+ img: content(false)
4056
+ };
3985
4057
  });
3986
- return () => Vue.h(AmapMarker, {
4058
+ return () => Vue.h("div", [Vue.h(AmapMarker, {
3987
4059
  "attrs": {
3988
4060
  "position": props.position,
3989
- "content": contentRef.value,
4061
+ "content": contentRef.value.img,
3990
4062
  "anchor": "bottom-center",
3991
- "registerOverlay": props.registerOverlay
4063
+ "registerOverlay": props.registerOverlay,
4064
+ "zIndex": ZINDEX_CAR_LAYER
3992
4065
  }
3993
- });
4066
+ }), Vue.h(AmapMarker, {
4067
+ "attrs": {
4068
+ "position": props.position,
4069
+ "content": contentRef.value.box,
4070
+ "anchor": "bottom-center",
4071
+ "registerOverlay": props.registerOverlay,
4072
+ "zIndex": ZINDEX_BUBBLE_LAYER
4073
+ }
4074
+ })]);
3994
4075
  });
3995
4076
  const GTaxiCar = defineSetup(function GTaxiCar2(props) {
3996
4077
  const contentRef = Vue.computed(() => {
@@ -3998,28 +4079,46 @@ const GTaxiCar = defineSetup(function GTaxiCar2(props) {
3998
4079
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
3999
4080
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
4000
4081
  if (!props.title)
4001
- return createDom("img", {
4002
- class: carIcon,
4003
- src: imgTaxicar,
4004
- style: carStyle
4005
- });
4006
- return createDom("div", {
4082
+ return {
4083
+ img: createDom("img", {
4084
+ class: carIcon,
4085
+ src: imgTaxicar,
4086
+ style: carStyle
4087
+ })
4088
+ };
4089
+ const content = (hide$1) => createDom("div", {
4007
4090
  class: pointLayout
4008
4091
  }, `
4009
- <div class="${pointSingleInfoBox}">
4092
+ <div class="${pointSingleInfoBox} ${hide({
4093
+ hide: !hide$1
4094
+ })}">
4010
4095
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
4011
4096
  </div>
4012
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4097
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4098
+ hide: hide$1
4099
+ })}" style="${carStyle}">
4013
4100
  `);
4101
+ return {
4102
+ box: content(true),
4103
+ img: content(false)
4104
+ };
4014
4105
  });
4015
4106
  return () => {
4016
- return Vue.h(GmapAdvancedMarkerView, {
4107
+ return Vue.h("div", [Vue.h(GmapAdvancedMarkerView, {
4017
4108
  "attrs": {
4018
4109
  "position": vec2lnglat(props.position),
4019
- "content": contentRef.value,
4020
- "registerOverlay": props.registerOverlay
4110
+ "content": contentRef.value.img,
4111
+ "registerOverlay": props.registerOverlay,
4112
+ "zIndex": ZINDEX_CAR_LAYER
4021
4113
  }
4022
- });
4114
+ }), Vue.h(GmapAdvancedMarkerView, {
4115
+ "attrs": {
4116
+ "position": vec2lnglat(props.position),
4117
+ "content": contentRef.value.box,
4118
+ "registerOverlay": props.registerOverlay,
4119
+ "zIndex": ZINDEX_BUBBLE_LAYER
4120
+ }
4121
+ })]);
4023
4122
  };
4024
4123
  });
4025
4124
  const TaxiCar = defineSetup(function TaxiCar2(props) {
@@ -4258,7 +4357,10 @@ const WaveCircle = defineSetup(function WaveCircle2(props) {
4258
4357
  });
4259
4358
  };
4260
4359
  });
4261
- const PASSENGER_DISTANCE_LIMIT = 2e3;
4360
+ const PASSENGER_DISTANCE_MAX = 2e3;
4361
+ const PASSENGER_DISTANCE_MIN = 10;
4362
+ const CAR_DISTANCE_MIN = 100;
4363
+ const carDurationWithinMinDistance = (distance) => Math.floor(distance / 5);
4262
4364
  const SectionDispatching = defineSetup(function SectionDispatching2(props) {
4263
4365
  return () => {
4264
4366
  const {
@@ -4320,7 +4422,7 @@ const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
4320
4422
  }), Vue.h(ConditionalFittablePassengerCircle, {
4321
4423
  "attrs": {
4322
4424
  "position": passengerPosition,
4323
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4425
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4324
4426
  "registerOverlay": registerOverlay
4325
4427
  }
4326
4428
  }), Vue.h(StartEndPoint, {
@@ -4368,10 +4470,11 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4368
4470
  } = props;
4369
4471
  const from = place2point(fromPlace);
4370
4472
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4473
+ const carDistance = carPosition ? apiMapDistance(carPosition, from) : void 0;
4371
4474
  return Vue.h("div", [Vue.h(ConditionalFittablePassengerCircle, {
4372
4475
  "attrs": {
4373
4476
  "position": passengerPosition,
4374
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4477
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4375
4478
  "registerOverlay": registerOverlay
4376
4479
  }
4377
4480
  }), Vue.h(StartEndPoint, {
@@ -4386,7 +4489,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4386
4489
  "label": fromPlace.name,
4387
4490
  "hideIcon": true
4388
4491
  }
4389
- }), carPosition[0] !== from[0] || carPosition[1] !== from[1] ? Vue.h(DrivingRoute, {
4492
+ }), !carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? Vue.h(DrivingRoute, {
4390
4493
  "attrs": {
4391
4494
  "from": carPosition,
4392
4495
  "to": from,
@@ -4414,7 +4517,21 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4414
4517
  }
4415
4518
  })]
4416
4519
  }
4417
- }) : null, !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && Vue.h(WalkingRoute, {
4520
+ }) : [Vue.h(TaxiCar, {
4521
+ "attrs": {
4522
+ "position": carPosition,
4523
+ "title": renderTitle({
4524
+ distance: carDistance,
4525
+ duration: carDurationWithinMinDistance(carDistance)
4526
+ }),
4527
+ "registerOverlay": registerOverlay
4528
+ }
4529
+ }), Vue.h(KeyedFitView, {
4530
+ "attrs": {
4531
+ "registerOverlay": registerOverlay,
4532
+ "fitViewKey": JSON.stringify(carPosition)
4533
+ }
4534
+ })], !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && Vue.h(WalkingRoute, {
4418
4535
  "attrs": {
4419
4536
  "from": passengerPosition,
4420
4537
  "to": from,
@@ -4459,7 +4576,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4459
4576
  }
4460
4577
  })
4461
4578
  }
4462
- }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && Vue.h(WalkingRoute, {
4579
+ }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && Vue.h(WalkingRoute, {
4463
4580
  "attrs": {
4464
4581
  "from": passengerPosition,
4465
4582
  "to": from,
@@ -4474,7 +4591,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4474
4591
  }), Vue.h(ConditionalFittablePassengerCircle, {
4475
4592
  "attrs": {
4476
4593
  "position": passengerPosition,
4477
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4594
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4478
4595
  "registerOverlay": registerOverlay
4479
4596
  }
4480
4597
  }), Vue.h(StartEndPoint, {
@@ -4522,7 +4639,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4522
4639
  } = props;
4523
4640
  const from = place2point(fromPlace);
4524
4641
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4525
- return Vue.h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && Vue.h(WalkingRoute, {
4642
+ return Vue.h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && Vue.h(WalkingRoute, {
4526
4643
  "attrs": {
4527
4644
  "from": passengerPosition,
4528
4645
  "to": from,
@@ -4537,16 +4654,21 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4537
4654
  }), Vue.h(ConditionalFittablePassengerCircle, {
4538
4655
  "attrs": {
4539
4656
  "position": passengerPosition,
4540
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4657
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4541
4658
  "registerOverlay": registerOverlay
4542
4659
  }
4543
- }), Vue.h(TaxiCar, {
4660
+ }), !!carPosition && [Vue.h(TaxiCar, {
4544
4661
  "attrs": {
4545
4662
  "position": carPosition,
4546
4663
  "title": title,
4547
4664
  "registerOverlay": registerOverlay
4548
4665
  }
4549
- }), Vue.h(StartEndPoint, {
4666
+ }), Vue.h(KeyedFitView, {
4667
+ "attrs": {
4668
+ "registerOverlay": registerOverlay,
4669
+ "fitViewKey": JSON.stringify(carPosition)
4670
+ }
4671
+ })], Vue.h(StartEndPoint, {
4550
4672
  "attrs": {
4551
4673
  "type": "start",
4552
4674
  "position": from,
@@ -4574,7 +4696,11 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4574
4696
  registerOverlay
4575
4697
  } = props;
4576
4698
  const to = place2point(toPlace);
4577
- return Vue.h("div", [Vue.h(DrivingRoute, {
4699
+ const {
4700
+ apiMapDistance
4701
+ } = useMapGeometry();
4702
+ const carDistance = carPosition ? apiMapDistance(carPosition, to) : void 0;
4703
+ return Vue.h("div", [!carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? Vue.h(DrivingRoute, {
4578
4704
  "attrs": {
4579
4705
  "from": carPosition,
4580
4706
  "to": to,
@@ -4602,7 +4728,21 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4602
4728
  }
4603
4729
  })]
4604
4730
  }
4605
- }), Vue.h(StartEndPoint, {
4731
+ }) : [Vue.h(TaxiCar, {
4732
+ "attrs": {
4733
+ "position": carPosition,
4734
+ "title": renderTitle({
4735
+ distance: carDistance,
4736
+ duration: carDurationWithinMinDistance(carDistance)
4737
+ }),
4738
+ "registerOverlay": registerOverlay
4739
+ }
4740
+ }), Vue.h(KeyedFitView, {
4741
+ "attrs": {
4742
+ "registerOverlay": registerOverlay,
4743
+ "fitViewKey": JSON.stringify(carPosition)
4744
+ }
4745
+ })], Vue.h(StartEndPoint, {
4606
4746
  "attrs": {
4607
4747
  "type": "end",
4608
4748
  "position": to,
@@ -4756,7 +4896,6 @@ const BusinessTaxiEndMap = defineSetup(function BusinessTaxiEndMap2(props) {
4756
4896
  const STATUS_NEED_CAR_POSITION = ["book-driverStartService", "dispatched", "driverStartService", "inService", "driverArrived"];
4757
4897
  const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap2(props) {
4758
4898
  const {
4759
- from,
4760
4899
  interval,
4761
4900
  registerOverlay,
4762
4901
  mapRef,
@@ -4768,10 +4907,8 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4768
4907
  const {
4769
4908
  geoPosition,
4770
4909
  geoError
4771
- } = useGeoLocation({
4772
- geoDefaultPosition: place2point(from)
4773
- });
4774
- const carPositionRef = Vue.ref(place2point(props.from));
4910
+ } = useGeoLocation();
4911
+ const carPositionRef = Vue.ref();
4775
4912
  Vue.watch(() => props.driverStatus, (status, _, onCleanup) => {
4776
4913
  if (!STATUS_NEED_CAR_POSITION.includes(status))
4777
4914
  return;
@@ -4785,7 +4922,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4785
4922
  return () => {
4786
4923
  const {
4787
4924
  driverStatus,
4788
- from: from2,
4925
+ from,
4789
4926
  to,
4790
4927
  dispatchingTitle,
4791
4928
  bookDispatchingTitle,
@@ -4796,7 +4933,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4796
4933
  const passengerPosition = geoError.value ? void 0 : geoPosition.value;
4797
4934
  return Vue.h(HeycarMap, {
4798
4935
  "attrs": {
4799
- "center": place2point(from2),
4936
+ "center": place2point(from),
4800
4937
  "zoom": 13,
4801
4938
  "mapRef": mapRef,
4802
4939
  "touchEnable": touchEnable
@@ -4806,26 +4943,26 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4806
4943
  }
4807
4944
  }, [driverStatus === "dispatching" ? Vue.h(SectionDispatching, {
4808
4945
  "attrs": {
4809
- "from": from2,
4946
+ "from": from,
4810
4947
  "title": dispatchingTitle,
4811
4948
  "registerOverlay": registerOverlay
4812
4949
  }
4813
4950
  }) : driverStatus === "book-dispatching" ? Vue.h(SectionDispatching, {
4814
4951
  "attrs": {
4815
- "from": from2,
4952
+ "from": from,
4816
4953
  "title": bookDispatchingTitle,
4817
4954
  "registerOverlay": registerOverlay
4818
4955
  }
4819
4956
  }) : driverStatus === "assign" || driverStatus === "confirmed" ? Vue.h(SectionConfirmed, {
4820
4957
  "attrs": {
4821
- "from": from2,
4958
+ "from": from,
4822
4959
  "to": to,
4823
4960
  "passengerPosition": passengerPosition,
4824
4961
  "registerOverlay": registerOverlay
4825
4962
  }
4826
4963
  }) : driverStatus === "dispatched" || driverStatus === "driverStartService" || driverStatus === "book-driverStartService" ? Vue.h(SectionDriverStartService, {
4827
4964
  "attrs": {
4828
- "from": from2,
4965
+ "from": from,
4829
4966
  "carPosition": carPosition,
4830
4967
  "passengerPosition": passengerPosition,
4831
4968
  "renderTitle": renderStartSerivceTitle,
@@ -4833,7 +4970,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4833
4970
  }
4834
4971
  }) : driverStatus === "book-dispatched" ? Vue.h(SectionBookDispatched, {
4835
4972
  "attrs": {
4836
- "from": from2,
4973
+ "from": from,
4837
4974
  "to": to,
4838
4975
  "passengerPosition": passengerPosition,
4839
4976
  "registerOverlay": registerOverlay
@@ -4847,7 +4984,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4847
4984
  }
4848
4985
  }) : driverStatus === "driverArrived" ? Vue.h(SectionDriverArrived, {
4849
4986
  "attrs": {
4850
- "from": from2,
4987
+ "from": from,
4851
4988
  "carPosition": carPosition,
4852
4989
  "passengerPosition": passengerPosition,
4853
4990
  "title": driverArrivedTitle,
@@ -4855,13 +4992,13 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4855
4992
  }
4856
4993
  }) : driverStatus === "canceled" || driverStatus === "canceling" ? Vue.h(SectionCanceled, {
4857
4994
  "attrs": {
4858
- "from": from2,
4995
+ "from": from,
4859
4996
  "to": to,
4860
4997
  "registerOverlay": registerOverlay
4861
4998
  }
4862
4999
  }) : driverStatus === "endService" || driverStatus === "completed" || driverStatus === "banlanceRefund" || driverStatus === "waitBanlanceRefund" || driverStatus === "rechargePayed" || driverStatus === "waitRechargePay" || driverStatus === "payed" || driverStatus === "waitpay" || driverStatus === "refund" ? Vue.h(SectionEndService, {
4863
5000
  "attrs": {
4864
- "from": from2,
5001
+ "from": from,
4865
5002
  "to": to,
4866
5003
  "registerOverlay": registerOverlay
4867
5004
  }
@@ -4869,7 +5006,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4869
5006
  // 匹配不到就显示灰色路线
4870
5007
  Vue.h(SectionEndService, {
4871
5008
  "attrs": {
4872
- "from": from2,
5009
+ "from": from,
4873
5010
  "to": to,
4874
5011
  "registerOverlay": registerOverlay
4875
5012
  }