@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.
package/dist/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => {
4
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ return value;
6
+ };
1
7
  import Vue, { defineComponent, h, computed, inject, provide, watch, onMounted, onUnmounted, watchPostEffect, shallowRef, reactive, toRefs, ref, toRef, watchEffect } from "vue";
2
8
  const style = "";
3
9
  Vue.util.warn;
@@ -2211,7 +2217,7 @@ const ADrivingLine = defineSetup(function ADrivingLine2(props) {
2211
2217
  "attrs": {
2212
2218
  "showDir": true,
2213
2219
  "path": props.path,
2214
- "strokeWeight": strokeWidth + 2 * dirWidth,
2220
+ "strokeWeight": strokeWidth + dirWidth,
2215
2221
  "strokeOpacity": 1,
2216
2222
  "strokeColor": "transparent",
2217
2223
  "lineJoin": "round",
@@ -2655,6 +2661,12 @@ const KeyedFitView = defineSetup(function KeyedFitView2(props, {
2655
2661
  return h("div", [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
2656
2662
  };
2657
2663
  });
2664
+ const BEIJIN_POINT = [116.2317, 39.5427];
2665
+ const ZINDEX_BUBBLE_LAYER = 50;
2666
+ const ZINDEX_START_END_LOGO_LAYER = 40;
2667
+ const ZINDEX_PLACE_LAYER = 30;
2668
+ const ZINDEX_CAR_LAYER = 21;
2669
+ const ZINDEX_PASSENGER_LAYER = 20;
2658
2670
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
2659
2671
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
2660
2672
  const StartEndPoint_css_ts_vanilla = "";
@@ -2772,7 +2784,8 @@ const AStartEndPoint = defineSetup(function AStartEndPoint2(props) {
2772
2784
  "registerOverlay": props.registerOverlay,
2773
2785
  "position": props.position,
2774
2786
  "content": contentRef.value,
2775
- "anchor": "bottom-center"
2787
+ "anchor": "bottom-center",
2788
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2776
2789
  }
2777
2790
  });
2778
2791
  });
@@ -2816,7 +2829,8 @@ const GStartEndPoint = defineSetup(function GStartEndPoint2(props) {
2816
2829
  "attrs": {
2817
2830
  "registerOverlay": props.registerOverlay,
2818
2831
  "position": vec2lnglat(props.position),
2819
- "content": contentRef.value
2832
+ "content": contentRef.value,
2833
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2820
2834
  }
2821
2835
  });
2822
2836
  };
@@ -2894,6 +2908,49 @@ const BusinessQuotingMap = defineLagecySetup(function BusinessQuotingMap2(props)
2894
2908
  })]);
2895
2909
  };
2896
2910
  }).props(["fallback", "from", "loading", "mapRef", "registerOverlay", "renderDescription", "to", "fromDescription", "log"]);
2911
+ const isPlace = (place) => {
2912
+ return place.lng !== void 0 && place.lat !== void 0;
2913
+ };
2914
+ const sleep = (milliSeconds) => new Promise((resolve) => setTimeout(resolve, milliSeconds));
2915
+ class SingleGeoWatch {
2916
+ constructor(option) {
2917
+ __publicField(this, "id", 0);
2918
+ __publicField(this, "listeners", /* @__PURE__ */ new Map());
2919
+ __publicField(this, "option", {});
2920
+ __publicField(this, "singleWatchId");
2921
+ this.option = option != null ? option : {};
2922
+ }
2923
+ watchPosition(onSuccess, onError) {
2924
+ this.id += 1;
2925
+ const { id } = this;
2926
+ this.listeners.set(id, [onSuccess, onError]);
2927
+ this.start();
2928
+ return id;
2929
+ }
2930
+ clearWatch(id) {
2931
+ this.listeners.delete(id);
2932
+ }
2933
+ async start() {
2934
+ const { listeners, option, singleWatchId } = this;
2935
+ if (singleWatchId) {
2936
+ navigator.geolocation.clearWatch(singleWatchId);
2937
+ await sleep(20);
2938
+ }
2939
+ this.singleWatchId = navigator.geolocation.watchPosition(
2940
+ (position) => {
2941
+ for (const [onSuccess] of listeners.values()) {
2942
+ onSuccess(position);
2943
+ }
2944
+ },
2945
+ (error) => {
2946
+ for (const [_, onError] of listeners.values()) {
2947
+ onError == null ? void 0 : onError(error);
2948
+ }
2949
+ },
2950
+ option
2951
+ );
2952
+ }
2953
+ }
2897
2954
  const useAmapGCJ02 = () => {
2898
2955
  const { readyPromise } = useMapSupplier();
2899
2956
  async function toGcj02(point) {
@@ -2924,6 +2981,11 @@ const useMapGCJ02 = () => {
2924
2981
  return supplier === "gmap" ? useGmapGCJ02() : useAmapGCJ02();
2925
2982
  };
2926
2983
  const GEO_TIMEOUT = 5e3;
2984
+ const singleGeoWatch = new SingleGeoWatch({
2985
+ timeout: GEO_TIMEOUT,
2986
+ maximumAge: 0,
2987
+ enableHighAccuracy: false
2988
+ });
2927
2989
  const useGeoLocation = (props) => {
2928
2990
  var _a, _b;
2929
2991
  const { onChange, onLoad, onLoadDefault, onError, geoDefaultPosition } = props != null ? props : {};
@@ -2946,12 +3008,11 @@ const useGeoLocation = (props) => {
2946
3008
  () => true,
2947
3009
  (_1, _2, onCleanup) => {
2948
3010
  loading.value = true;
2949
- const watchId = navigator.geolocation.watchPosition(
3011
+ const watchId = singleGeoWatch.watchPosition(
2950
3012
  async (position) => {
2951
3013
  const coordinate = position.coords;
2952
3014
  const wgsPoint = [position.coords.longitude, position.coords.latitude];
2953
3015
  const point = await toGcj02(wgsPoint);
2954
- console.log("wgsPoint, point = ", wgsPoint, point);
2955
3016
  coordinateRef.value = coordinate;
2956
3017
  positionRef.value = point;
2957
3018
  if (loading.value) {
@@ -2970,10 +3031,9 @@ const useGeoLocation = (props) => {
2970
3031
  onLoadDefault == null ? void 0 : onLoadDefault({ position });
2971
3032
  }
2972
3033
  onError == null ? void 0 : onError(error);
2973
- },
2974
- { timeout: GEO_TIMEOUT, maximumAge: 0, enableHighAccuracy: false }
3034
+ }
2975
3035
  );
2976
- onCleanup(() => navigator.geolocation.clearWatch(watchId));
3036
+ onCleanup(() => singleGeoWatch.clearWatch(watchId));
2977
3037
  },
2978
3038
  { immediate: true }
2979
3039
  );
@@ -3414,7 +3474,8 @@ const APassengerCircle = defineSetup(function APassengerCircle2(props) {
3414
3474
  "position": props.position,
3415
3475
  "content": contentRef.value,
3416
3476
  "anchor": "bottom-center",
3417
- "registerOverlay": props.registerOverlay
3477
+ "registerOverlay": props.registerOverlay,
3478
+ "zIndex": ZINDEX_PASSENGER_LAYER
3418
3479
  }
3419
3480
  });
3420
3481
  };
@@ -3436,7 +3497,8 @@ const GPassengerCircle = defineSetup(function GPassengerCircle2(props) {
3436
3497
  "attrs": {
3437
3498
  "position": vec2lnglat(props.position),
3438
3499
  "content": contentRef.value,
3439
- "registerOverlay": props.registerOverlay
3500
+ "registerOverlay": props.registerOverlay,
3501
+ "zIndex": ZINDEX_PASSENGER_LAYER
3440
3502
  }
3441
3503
  });
3442
3504
  });
@@ -3611,7 +3673,8 @@ const APlaceCircle = defineSetup(function APlaceCircle2(props, {
3611
3673
  "attrs": {
3612
3674
  "position": props.position,
3613
3675
  "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3614
- "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft
3676
+ "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft,
3677
+ "zIndex": ZINDEX_PLACE_LAYER
3615
3678
  },
3616
3679
  "on": {
3617
3680
  "click": handleClick
@@ -3662,7 +3725,8 @@ const GPlaceCircle = defineSetup(function GPlaceCircle2(props, {
3662
3725
  return () => h(GmapAdvancedMarkerView, {
3663
3726
  "attrs": {
3664
3727
  "position": vec2lnglat(props.position),
3665
- "content": props.label ? contentRef.value : contentWithoutLabelRef.value
3728
+ "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3729
+ "zIndex": ZINDEX_PLACE_LAYER
3666
3730
  },
3667
3731
  "on": {
3668
3732
  "click": handleClick
@@ -3878,7 +3942,8 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3878
3942
  ...place
3879
3943
  });
3880
3944
  emit("changeRecomandPlace", place);
3881
- await pipeDefer(setZoom)(READY_ZOOM);
3945
+ if (isFirstWorkflowRecomendLoadingRef.value)
3946
+ await pipeDefer(setZoom)(READY_ZOOM);
3882
3947
  completeFirstWorkflowRecomend();
3883
3948
  },
3884
3949
  onChangeCity: (value) => {
@@ -3932,10 +3997,6 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3932
3997
  })]);
3933
3998
  };
3934
3999
  }).props(["log", "geoLoadingTitle", "unavailableTitle", "recomendDescription", "fallback", "geoDefaultPosition", "getRecomendPlace", "getDefaultCenterPlace", "loading", "mapContext"]);
3935
- const BEIJIN_POINT = [116.2317, 39.5427];
3936
- const isPlace = (place) => {
3937
- return place.lng !== void 0 && place.lat !== void 0;
3938
- };
3939
4000
  const useAmapGeometry = () => {
3940
4001
  const payload = useMapSupplier();
3941
4002
  const apiMapDistance = (from, to) => {
@@ -3961,6 +4022,7 @@ const useMapGeometry = () => {
3961
4022
  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=";
3962
4023
  const TaxiCar_css_ts_vanilla = "";
3963
4024
  var carIcon = "_65j3sr1";
4025
+ var hide = createRuntimeFn({ defaultClassName: "", variantClassNames: { hide: { true: "_65j3sr2", false: "_65j3sr3" } }, defaultVariants: {}, compoundVariants: [] });
3964
4026
  var pointInfoBoxEmphasize = "_4a4ovk5";
3965
4027
  var pointInfoBoxTitle = "_4a4ovk3";
3966
4028
  var pointLayout = "_4a4ovk0";
@@ -3971,24 +4033,43 @@ const ATaxiCar = defineSetup(function ATaxiCar2(props) {
3971
4033
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
3972
4034
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
3973
4035
  if (!props.title)
3974
- return `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`;
3975
- return `
4036
+ return {
4037
+ img: `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`
4038
+ };
4039
+ const content = (hide$1) => `
3976
4040
  <div class="${pointLayout}">
3977
- <div class="${pointSingleInfoBox}">
4041
+ <div class="${pointSingleInfoBox} ${hide({
4042
+ hide: !hide$1
4043
+ })}">
3978
4044
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
3979
4045
  </div>
3980
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4046
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4047
+ hide: hide$1
4048
+ })}" style="${carStyle}">
3981
4049
  </div>
3982
4050
  `;
4051
+ return {
4052
+ box: content(true),
4053
+ img: content(false)
4054
+ };
3983
4055
  });
3984
- return () => h(AmapMarker, {
4056
+ return () => h("div", [h(AmapMarker, {
3985
4057
  "attrs": {
3986
4058
  "position": props.position,
3987
- "content": contentRef.value,
4059
+ "content": contentRef.value.img,
3988
4060
  "anchor": "bottom-center",
3989
- "registerOverlay": props.registerOverlay
4061
+ "registerOverlay": props.registerOverlay,
4062
+ "zIndex": ZINDEX_CAR_LAYER
3990
4063
  }
3991
- });
4064
+ }), h(AmapMarker, {
4065
+ "attrs": {
4066
+ "position": props.position,
4067
+ "content": contentRef.value.box,
4068
+ "anchor": "bottom-center",
4069
+ "registerOverlay": props.registerOverlay,
4070
+ "zIndex": ZINDEX_BUBBLE_LAYER
4071
+ }
4072
+ })]);
3992
4073
  });
3993
4074
  const GTaxiCar = defineSetup(function GTaxiCar2(props) {
3994
4075
  const contentRef = computed(() => {
@@ -3996,28 +4077,46 @@ const GTaxiCar = defineSetup(function GTaxiCar2(props) {
3996
4077
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
3997
4078
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
3998
4079
  if (!props.title)
3999
- return createDom("img", {
4000
- class: carIcon,
4001
- src: imgTaxicar,
4002
- style: carStyle
4003
- });
4004
- return createDom("div", {
4080
+ return {
4081
+ img: createDom("img", {
4082
+ class: carIcon,
4083
+ src: imgTaxicar,
4084
+ style: carStyle
4085
+ })
4086
+ };
4087
+ const content = (hide$1) => createDom("div", {
4005
4088
  class: pointLayout
4006
4089
  }, `
4007
- <div class="${pointSingleInfoBox}">
4090
+ <div class="${pointSingleInfoBox} ${hide({
4091
+ hide: !hide$1
4092
+ })}">
4008
4093
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
4009
4094
  </div>
4010
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4095
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4096
+ hide: hide$1
4097
+ })}" style="${carStyle}">
4011
4098
  `);
4099
+ return {
4100
+ box: content(true),
4101
+ img: content(false)
4102
+ };
4012
4103
  });
4013
4104
  return () => {
4014
- return h(GmapAdvancedMarkerView, {
4105
+ return h("div", [h(GmapAdvancedMarkerView, {
4015
4106
  "attrs": {
4016
4107
  "position": vec2lnglat(props.position),
4017
- "content": contentRef.value,
4018
- "registerOverlay": props.registerOverlay
4108
+ "content": contentRef.value.img,
4109
+ "registerOverlay": props.registerOverlay,
4110
+ "zIndex": ZINDEX_CAR_LAYER
4019
4111
  }
4020
- });
4112
+ }), h(GmapAdvancedMarkerView, {
4113
+ "attrs": {
4114
+ "position": vec2lnglat(props.position),
4115
+ "content": contentRef.value.box,
4116
+ "registerOverlay": props.registerOverlay,
4117
+ "zIndex": ZINDEX_BUBBLE_LAYER
4118
+ }
4119
+ })]);
4021
4120
  };
4022
4121
  });
4023
4122
  const TaxiCar = defineSetup(function TaxiCar2(props) {
@@ -4256,7 +4355,10 @@ const WaveCircle = defineSetup(function WaveCircle2(props) {
4256
4355
  });
4257
4356
  };
4258
4357
  });
4259
- const PASSENGER_DISTANCE_LIMIT = 2e3;
4358
+ const PASSENGER_DISTANCE_MAX = 2e3;
4359
+ const PASSENGER_DISTANCE_MIN = 10;
4360
+ const CAR_DISTANCE_MIN = 100;
4361
+ const carDurationWithinMinDistance = (distance) => Math.floor(distance / 5);
4260
4362
  const SectionDispatching = defineSetup(function SectionDispatching2(props) {
4261
4363
  return () => {
4262
4364
  const {
@@ -4318,7 +4420,7 @@ const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
4318
4420
  }), h(ConditionalFittablePassengerCircle, {
4319
4421
  "attrs": {
4320
4422
  "position": passengerPosition,
4321
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4423
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4322
4424
  "registerOverlay": registerOverlay
4323
4425
  }
4324
4426
  }), h(StartEndPoint, {
@@ -4366,10 +4468,11 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4366
4468
  } = props;
4367
4469
  const from = place2point(fromPlace);
4368
4470
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4471
+ const carDistance = carPosition ? apiMapDistance(carPosition, from) : void 0;
4369
4472
  return h("div", [h(ConditionalFittablePassengerCircle, {
4370
4473
  "attrs": {
4371
4474
  "position": passengerPosition,
4372
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4475
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4373
4476
  "registerOverlay": registerOverlay
4374
4477
  }
4375
4478
  }), h(StartEndPoint, {
@@ -4384,7 +4487,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4384
4487
  "label": fromPlace.name,
4385
4488
  "hideIcon": true
4386
4489
  }
4387
- }), carPosition[0] !== from[0] || carPosition[1] !== from[1] ? h(DrivingRoute, {
4490
+ }), !carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? h(DrivingRoute, {
4388
4491
  "attrs": {
4389
4492
  "from": carPosition,
4390
4493
  "to": from,
@@ -4412,7 +4515,21 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4412
4515
  }
4413
4516
  })]
4414
4517
  }
4415
- }) : null, !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && h(WalkingRoute, {
4518
+ }) : [h(TaxiCar, {
4519
+ "attrs": {
4520
+ "position": carPosition,
4521
+ "title": renderTitle({
4522
+ distance: carDistance,
4523
+ duration: carDurationWithinMinDistance(carDistance)
4524
+ }),
4525
+ "registerOverlay": registerOverlay
4526
+ }
4527
+ }), h(KeyedFitView, {
4528
+ "attrs": {
4529
+ "registerOverlay": registerOverlay,
4530
+ "fitViewKey": JSON.stringify(carPosition)
4531
+ }
4532
+ })], !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && h(WalkingRoute, {
4416
4533
  "attrs": {
4417
4534
  "from": passengerPosition,
4418
4535
  "to": from,
@@ -4457,7 +4574,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4457
4574
  }
4458
4575
  })
4459
4576
  }
4460
- }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && h(WalkingRoute, {
4577
+ }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && h(WalkingRoute, {
4461
4578
  "attrs": {
4462
4579
  "from": passengerPosition,
4463
4580
  "to": from,
@@ -4472,7 +4589,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4472
4589
  }), h(ConditionalFittablePassengerCircle, {
4473
4590
  "attrs": {
4474
4591
  "position": passengerPosition,
4475
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4592
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4476
4593
  "registerOverlay": registerOverlay
4477
4594
  }
4478
4595
  }), h(StartEndPoint, {
@@ -4520,7 +4637,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4520
4637
  } = props;
4521
4638
  const from = place2point(fromPlace);
4522
4639
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4523
- return h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && h(WalkingRoute, {
4640
+ return h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && h(WalkingRoute, {
4524
4641
  "attrs": {
4525
4642
  "from": passengerPosition,
4526
4643
  "to": from,
@@ -4535,16 +4652,21 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4535
4652
  }), h(ConditionalFittablePassengerCircle, {
4536
4653
  "attrs": {
4537
4654
  "position": passengerPosition,
4538
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4655
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4539
4656
  "registerOverlay": registerOverlay
4540
4657
  }
4541
- }), h(TaxiCar, {
4658
+ }), !!carPosition && [h(TaxiCar, {
4542
4659
  "attrs": {
4543
4660
  "position": carPosition,
4544
4661
  "title": title,
4545
4662
  "registerOverlay": registerOverlay
4546
4663
  }
4547
- }), h(StartEndPoint, {
4664
+ }), h(KeyedFitView, {
4665
+ "attrs": {
4666
+ "registerOverlay": registerOverlay,
4667
+ "fitViewKey": JSON.stringify(carPosition)
4668
+ }
4669
+ })], h(StartEndPoint, {
4548
4670
  "attrs": {
4549
4671
  "type": "start",
4550
4672
  "position": from,
@@ -4572,7 +4694,11 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4572
4694
  registerOverlay
4573
4695
  } = props;
4574
4696
  const to = place2point(toPlace);
4575
- return h("div", [h(DrivingRoute, {
4697
+ const {
4698
+ apiMapDistance
4699
+ } = useMapGeometry();
4700
+ const carDistance = carPosition ? apiMapDistance(carPosition, to) : void 0;
4701
+ return h("div", [!carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? h(DrivingRoute, {
4576
4702
  "attrs": {
4577
4703
  "from": carPosition,
4578
4704
  "to": to,
@@ -4600,7 +4726,21 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4600
4726
  }
4601
4727
  })]
4602
4728
  }
4603
- }), h(StartEndPoint, {
4729
+ }) : [h(TaxiCar, {
4730
+ "attrs": {
4731
+ "position": carPosition,
4732
+ "title": renderTitle({
4733
+ distance: carDistance,
4734
+ duration: carDurationWithinMinDistance(carDistance)
4735
+ }),
4736
+ "registerOverlay": registerOverlay
4737
+ }
4738
+ }), h(KeyedFitView, {
4739
+ "attrs": {
4740
+ "registerOverlay": registerOverlay,
4741
+ "fitViewKey": JSON.stringify(carPosition)
4742
+ }
4743
+ })], h(StartEndPoint, {
4604
4744
  "attrs": {
4605
4745
  "type": "end",
4606
4746
  "position": to,
@@ -4754,7 +4894,6 @@ const BusinessTaxiEndMap = defineSetup(function BusinessTaxiEndMap2(props) {
4754
4894
  const STATUS_NEED_CAR_POSITION = ["book-driverStartService", "dispatched", "driverStartService", "inService", "driverArrived"];
4755
4895
  const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap2(props) {
4756
4896
  const {
4757
- from,
4758
4897
  interval,
4759
4898
  registerOverlay,
4760
4899
  mapRef,
@@ -4766,10 +4905,8 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4766
4905
  const {
4767
4906
  geoPosition,
4768
4907
  geoError
4769
- } = useGeoLocation({
4770
- geoDefaultPosition: place2point(from)
4771
- });
4772
- const carPositionRef = ref(place2point(props.from));
4908
+ } = useGeoLocation();
4909
+ const carPositionRef = ref();
4773
4910
  watch(() => props.driverStatus, (status, _, onCleanup) => {
4774
4911
  if (!STATUS_NEED_CAR_POSITION.includes(status))
4775
4912
  return;
@@ -4783,7 +4920,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4783
4920
  return () => {
4784
4921
  const {
4785
4922
  driverStatus,
4786
- from: from2,
4923
+ from,
4787
4924
  to,
4788
4925
  dispatchingTitle,
4789
4926
  bookDispatchingTitle,
@@ -4794,7 +4931,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4794
4931
  const passengerPosition = geoError.value ? void 0 : geoPosition.value;
4795
4932
  return h(HeycarMap, {
4796
4933
  "attrs": {
4797
- "center": place2point(from2),
4934
+ "center": place2point(from),
4798
4935
  "zoom": 13,
4799
4936
  "mapRef": mapRef,
4800
4937
  "touchEnable": touchEnable
@@ -4804,26 +4941,26 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4804
4941
  }
4805
4942
  }, [driverStatus === "dispatching" ? h(SectionDispatching, {
4806
4943
  "attrs": {
4807
- "from": from2,
4944
+ "from": from,
4808
4945
  "title": dispatchingTitle,
4809
4946
  "registerOverlay": registerOverlay
4810
4947
  }
4811
4948
  }) : driverStatus === "book-dispatching" ? h(SectionDispatching, {
4812
4949
  "attrs": {
4813
- "from": from2,
4950
+ "from": from,
4814
4951
  "title": bookDispatchingTitle,
4815
4952
  "registerOverlay": registerOverlay
4816
4953
  }
4817
4954
  }) : driverStatus === "assign" || driverStatus === "confirmed" ? h(SectionConfirmed, {
4818
4955
  "attrs": {
4819
- "from": from2,
4956
+ "from": from,
4820
4957
  "to": to,
4821
4958
  "passengerPosition": passengerPosition,
4822
4959
  "registerOverlay": registerOverlay
4823
4960
  }
4824
4961
  }) : driverStatus === "dispatched" || driverStatus === "driverStartService" || driverStatus === "book-driverStartService" ? h(SectionDriverStartService, {
4825
4962
  "attrs": {
4826
- "from": from2,
4963
+ "from": from,
4827
4964
  "carPosition": carPosition,
4828
4965
  "passengerPosition": passengerPosition,
4829
4966
  "renderTitle": renderStartSerivceTitle,
@@ -4831,7 +4968,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4831
4968
  }
4832
4969
  }) : driverStatus === "book-dispatched" ? h(SectionBookDispatched, {
4833
4970
  "attrs": {
4834
- "from": from2,
4971
+ "from": from,
4835
4972
  "to": to,
4836
4973
  "passengerPosition": passengerPosition,
4837
4974
  "registerOverlay": registerOverlay
@@ -4845,7 +4982,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4845
4982
  }
4846
4983
  }) : driverStatus === "driverArrived" ? h(SectionDriverArrived, {
4847
4984
  "attrs": {
4848
- "from": from2,
4985
+ "from": from,
4849
4986
  "carPosition": carPosition,
4850
4987
  "passengerPosition": passengerPosition,
4851
4988
  "title": driverArrivedTitle,
@@ -4853,13 +4990,13 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4853
4990
  }
4854
4991
  }) : driverStatus === "canceled" || driverStatus === "canceling" ? h(SectionCanceled, {
4855
4992
  "attrs": {
4856
- "from": from2,
4993
+ "from": from,
4857
4994
  "to": to,
4858
4995
  "registerOverlay": registerOverlay
4859
4996
  }
4860
4997
  }) : driverStatus === "endService" || driverStatus === "completed" || driverStatus === "banlanceRefund" || driverStatus === "waitBanlanceRefund" || driverStatus === "rechargePayed" || driverStatus === "waitRechargePay" || driverStatus === "payed" || driverStatus === "waitpay" || driverStatus === "refund" ? h(SectionEndService, {
4861
4998
  "attrs": {
4862
- "from": from2,
4999
+ "from": from,
4863
5000
  "to": to,
4864
5001
  "registerOverlay": registerOverlay
4865
5002
  }
@@ -4867,7 +5004,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4867
5004
  // 匹配不到就显示灰色路线
4868
5005
  h(SectionEndService, {
4869
5006
  "attrs": {
4870
- "from": from2,
5007
+ "from": from,
4871
5008
  "to": to,
4872
5009
  "registerOverlay": registerOverlay
4873
5010
  }
package/dist/style.css CHANGED
@@ -140,7 +140,7 @@
140
140
  font-family: PingFangSC-Medium, PingFang SC;
141
141
  font-weight: 500;
142
142
  color: #1E1E1E;
143
- line-height: 3.73vw;
143
+ line-height: 3.9vw;
144
144
  -webkit-line-clamp: 2;
145
145
  -webkit-box-orient: vertical;
146
146
  overflow: hidden;
@@ -227,6 +227,9 @@
227
227
  margin-bottom: -5.5vw;
228
228
  width: 6vw;
229
229
  height: 11vw;
230
+ }
231
+ ._65j3sr2 {
232
+ visibility: hidden;
230
233
  }@keyframes rrvp0y0 {
231
234
  0% {
232
235
  transform: scale(0);
@@ -1,2 +1,3 @@
1
1
  import type { Place } from "../types/interface";
2
2
  export declare const isPlace: (place: Partial<Place>) => place is Place;
3
+ export declare const sleep: (milliSeconds: number) => Promise<unknown>;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @note navigator.geolocation.watchPosition 期间,再调用 watchPosition 或 getCurrentPosition 会导致定位失败。
3
+ */
4
+ export declare class SingleGeoWatch {
5
+ id: number;
6
+ listeners: Map<number, [PositionCallback, PositionErrorCallback | undefined]>;
7
+ option: PositionOptions;
8
+ singleWatchId: number | undefined;
9
+ constructor(option?: PositionOptions);
10
+ watchPosition(onSuccess: PositionCallback, onError?: PositionErrorCallback): number;
11
+ clearWatch(id: number): void;
12
+ start(): Promise<void>;
13
+ }
@@ -0,0 +1,7 @@
1
+ export declare class WaitQueue {
2
+ id: number;
3
+ queue: Set<number>;
4
+ done: (() => void) | undefined;
5
+ promise: Promise<void>;
6
+ add(): () => void;
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heycar/heycars-map",
3
- "version": "0.4.8",
3
+ "version": "0.5.0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite -c vite.config.dev.ts",