@heycar/heycars-map 0.4.9 → 0.5.1

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
+ }>;
@@ -7,6 +7,7 @@ export interface UseMapPlaceOnChangeCityProps {
7
7
  }
8
8
  export interface UseMapPlaceProps {
9
9
  pointRef: Ref<Point>;
10
+ emptyPlaceName: string;
10
11
  onChange?: (value: Place) => any;
11
12
  onChangeCity?: (value: UseMapPlaceOnChangeCityProps) => any;
12
13
  }
@@ -4,6 +4,7 @@ import { UseMapPlaceProps } from "./useMapPlace";
4
4
  export interface UseMapRecomendPlaceProps<C = Record<string, any>> {
5
5
  pointRef: Ref<Point>;
6
6
  context?: C;
7
+ emptyPlaceName: string;
7
8
  getLimit: (context?: C) => number;
8
9
  getRecomendPlace: (place: Place, context?: C) => Promise<Place[] | undefined>;
9
10
  onChangeCity?: UseMapPlaceProps["onChangeCity"];
package/dist/index.cjs CHANGED
@@ -2663,6 +2663,12 @@ const KeyedFitView = defineSetup(function KeyedFitView2(props, {
2663
2663
  return Vue.h("div", [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
2664
2664
  };
2665
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;
2666
2672
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
2667
2673
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
2668
2674
  const StartEndPoint_css_ts_vanilla = "";
@@ -2780,7 +2786,8 @@ const AStartEndPoint = defineSetup(function AStartEndPoint2(props) {
2780
2786
  "registerOverlay": props.registerOverlay,
2781
2787
  "position": props.position,
2782
2788
  "content": contentRef.value,
2783
- "anchor": "bottom-center"
2789
+ "anchor": "bottom-center",
2790
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2784
2791
  }
2785
2792
  });
2786
2793
  });
@@ -2824,7 +2831,8 @@ const GStartEndPoint = defineSetup(function GStartEndPoint2(props) {
2824
2831
  "attrs": {
2825
2832
  "registerOverlay": props.registerOverlay,
2826
2833
  "position": vec2lnglat(props.position),
2827
- "content": contentRef.value
2834
+ "content": contentRef.value,
2835
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2828
2836
  }
2829
2837
  });
2830
2838
  };
@@ -3078,6 +3086,7 @@ const useAmapDrag = (props) => {
3078
3086
  var _a;
3079
3087
  isDragging.value = false;
3080
3088
  const { lng, lat } = target.getCenter();
3089
+ spaceLog("dragEnd", "[lng, lat] = ", [lng, lat]);
3081
3090
  centerRef.value = [lng, lat];
3082
3091
  (_a = pipeAsync(onChange)) == null ? void 0 : _a([lng, lat]);
3083
3092
  };
@@ -3127,7 +3136,7 @@ const useUpdate = () => {
3127
3136
  return { idx, update };
3128
3137
  };
3129
3138
  const useAmapPlace = (props) => {
3130
- const { onChange, onChangeCity } = props;
3139
+ const { onChange, onChangeCity, emptyPlaceName } = props;
3131
3140
  const defaultPoint = [...props.pointRef.value];
3132
3141
  const pointRef = Vue.ref(defaultPoint);
3133
3142
  const { readyPromise } = useMapSupplier();
@@ -3167,9 +3176,11 @@ const useAmapPlace = (props) => {
3167
3176
  geocoder.getAddress(new AMap.LngLat(lng, lat), (status, result) => {
3168
3177
  switch (status) {
3169
3178
  case "complete": {
3170
- const { formattedAddress: name, addressComponent } = result.regeocode;
3179
+ const { formattedAddress, addressComponent } = result.regeocode;
3171
3180
  const cityName = addressComponent.city ? addressComponent.city : addressComponent.province;
3172
3181
  const cityParentName = addressComponent.province;
3182
+ const name = formattedAddress ? formattedAddress : emptyPlaceName;
3183
+ console.log("geocoder.getAddress status, name, lng, lat = ", status, name, lng, lat);
3173
3184
  place.name = name;
3174
3185
  place.lng = lng;
3175
3186
  place.lat = lat;
@@ -3178,9 +3189,10 @@ const useAmapPlace = (props) => {
3178
3189
  return;
3179
3190
  }
3180
3191
  case "no_data":
3181
- place.name = "";
3192
+ place.name = emptyPlaceName;
3182
3193
  place.lng = lng;
3183
3194
  place.lat = lat;
3195
+ console.log("geocoder.getAddress status, name, lng, lat = ", status, "", lng, lat);
3184
3196
  onChange == null ? void 0 : onChange({ lng, lat, name: "" });
3185
3197
  return;
3186
3198
  case "error":
@@ -3192,7 +3204,7 @@ const useAmapPlace = (props) => {
3192
3204
  return { place, updatePlace, setPlace, updateCity };
3193
3205
  };
3194
3206
  const useGmapPlace = (props) => {
3195
- const { onChange, onChangeCity } = props;
3207
+ const { onChange, onChangeCity, emptyPlaceName } = props;
3196
3208
  const defaultPoint = [...props.pointRef.value];
3197
3209
  const pointRef = Vue.ref(defaultPoint);
3198
3210
  const { readyPromise } = useMapSupplier();
@@ -3227,7 +3239,7 @@ const useGmapPlace = (props) => {
3227
3239
  const geocoder = new google.maps.Geocoder();
3228
3240
  const [lng, lat] = pointRef.value;
3229
3241
  const { results } = await geocoder.geocode({ language: LANGUAGE, location: { lng, lat } });
3230
- const name = results[0].formatted_address;
3242
+ const name = results[0].formatted_address ? results[0].formatted_address : emptyPlaceName;
3231
3243
  const cityName = geocoderResult2cityName(results[0]);
3232
3244
  const cityParentName = results.slice(-2)[0].address_components[0].long_name;
3233
3245
  const countryName = results.slice(-1)[0].address_components[0].long_name;
@@ -3269,12 +3281,22 @@ const findGmapNearestPlace = (place, candidates) => {
3269
3281
  return { shortestPlace, shortestDistance };
3270
3282
  };
3271
3283
  const useAmapRecomendPlace = (props) => {
3272
- const { pointRef, getRecomendPlace, getLimit, context: context2, onChange, onChangePlace, onChangeCity } = props;
3284
+ const {
3285
+ pointRef,
3286
+ getRecomendPlace,
3287
+ getLimit,
3288
+ context: context2,
3289
+ emptyPlaceName,
3290
+ onChange,
3291
+ onChangePlace,
3292
+ onChangeCity
3293
+ } = props;
3273
3294
  const availableRef = Vue.ref(true);
3274
3295
  const placeCandidatesRef = Vue.ref([]);
3275
3296
  const { idx: recomendPlaceKey, update: updateRecomandPlace } = useUpdate();
3276
3297
  const { readyPromise } = useMapSupplier();
3277
3298
  const { place, updatePlace, setPlace, updateCity } = useAmapPlace({
3299
+ emptyPlaceName,
3278
3300
  pointRef,
3279
3301
  onChange: onChangePlace,
3280
3302
  onChangeCity
@@ -3325,12 +3347,22 @@ const useAmapRecomendPlace = (props) => {
3325
3347
  };
3326
3348
  };
3327
3349
  const useGmapRecomendPlace = (props) => {
3328
- const { pointRef, getRecomendPlace, getLimit, context: context2, onChange, onChangePlace, onChangeCity } = props;
3350
+ const {
3351
+ pointRef,
3352
+ getRecomendPlace,
3353
+ getLimit,
3354
+ context: context2,
3355
+ emptyPlaceName,
3356
+ onChange,
3357
+ onChangePlace,
3358
+ onChangeCity
3359
+ } = props;
3329
3360
  const availableRef = Vue.ref(true);
3330
3361
  const placeCandidatesRef = Vue.ref([]);
3331
3362
  const { idx: recomendPlaceKey, update: updateRecomandPlace } = useUpdate();
3332
3363
  const { readyPromise } = useMapSupplier();
3333
3364
  const { place, updatePlace, setPlace, updateCity } = useGmapPlace({
3365
+ emptyPlaceName,
3334
3366
  pointRef,
3335
3367
  onChange: onChangePlace,
3336
3368
  onChangeCity
@@ -3468,7 +3500,8 @@ const APassengerCircle = defineSetup(function APassengerCircle2(props) {
3468
3500
  "position": props.position,
3469
3501
  "content": contentRef.value,
3470
3502
  "anchor": "bottom-center",
3471
- "registerOverlay": props.registerOverlay
3503
+ "registerOverlay": props.registerOverlay,
3504
+ "zIndex": ZINDEX_PASSENGER_LAYER
3472
3505
  }
3473
3506
  });
3474
3507
  };
@@ -3490,7 +3523,8 @@ const GPassengerCircle = defineSetup(function GPassengerCircle2(props) {
3490
3523
  "attrs": {
3491
3524
  "position": vec2lnglat(props.position),
3492
3525
  "content": contentRef.value,
3493
- "registerOverlay": props.registerOverlay
3526
+ "registerOverlay": props.registerOverlay,
3527
+ "zIndex": ZINDEX_PASSENGER_LAYER
3494
3528
  }
3495
3529
  });
3496
3530
  });
@@ -3665,7 +3699,8 @@ const APlaceCircle = defineSetup(function APlaceCircle2(props, {
3665
3699
  "attrs": {
3666
3700
  "position": props.position,
3667
3701
  "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3668
- "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft
3702
+ "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft,
3703
+ "zIndex": ZINDEX_PLACE_LAYER
3669
3704
  },
3670
3705
  "on": {
3671
3706
  "click": handleClick
@@ -3716,7 +3751,8 @@ const GPlaceCircle = defineSetup(function GPlaceCircle2(props, {
3716
3751
  return () => Vue.h(GmapAdvancedMarkerView, {
3717
3752
  "attrs": {
3718
3753
  "position": vec2lnglat(props.position),
3719
- "content": props.label ? contentRef.value : contentWithoutLabelRef.value
3754
+ "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3755
+ "zIndex": ZINDEX_PLACE_LAYER
3720
3756
  },
3721
3757
  "on": {
3722
3758
  "click": handleClick
@@ -3793,7 +3829,8 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3793
3829
  const pipedGetRecomendPlace = pipeOnlyLastEffect(getRecomendPlace);
3794
3830
  const {
3795
3831
  mapRef,
3796
- setMap
3832
+ setMap,
3833
+ panTo
3797
3834
  } = useHeycarMap();
3798
3835
  const {
3799
3836
  readyPromise
@@ -3904,6 +3941,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3904
3941
  isElectedRef
3905
3942
  } = useMapRecomendPlace({
3906
3943
  pointRef: centerPoint,
3944
+ emptyPlaceName: DEFAULT_PLACE_NAME,
3907
3945
  context: centerSource,
3908
3946
  getRecomendPlace: pipedGetRecomendPlace,
3909
3947
  getLimit: (context2) => {
@@ -3931,8 +3969,10 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3931
3969
  Object.assign(centerPlace, {
3932
3970
  ...place
3933
3971
  });
3972
+ panTo(place2point(place));
3934
3973
  emit("changeRecomandPlace", place);
3935
- await pipeDefer(setZoom)(READY_ZOOM);
3974
+ if (isFirstWorkflowRecomendLoadingRef.value)
3975
+ await pipeDefer(setZoom)(READY_ZOOM);
3936
3976
  completeFirstWorkflowRecomend();
3937
3977
  },
3938
3978
  onChangeCity: (value) => {
@@ -3948,13 +3988,12 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3948
3988
  mapContext.onChangeRecomendPlaces([...placeCandidates.value]);
3949
3989
  });
3950
3990
  return () => {
3951
- var _a2;
3952
3991
  const {
3953
3992
  geoLoadingTitle,
3954
3993
  recomendDescription,
3955
3994
  unavailableTitle
3956
3995
  } = props;
3957
- const title = geoLoading.value ? geoLoadingTitle : !availableRef.value ? unavailableTitle : (_a2 = centerPlace.name) != null ? _a2 : DEFAULT_PLACE_NAME;
3996
+ const title = geoLoading.value ? geoLoadingTitle : !availableRef.value ? unavailableTitle : centerPlace.name;
3958
3997
  const description = !availableRef.value ? void 0 : isElectedRef.value ? recomendDescription : void 0;
3959
3998
  return Vue.h(HeycarMap, {
3960
3999
  "attrs": {
@@ -3986,7 +4025,6 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3986
4025
  })]);
3987
4026
  };
3988
4027
  }).props(["log", "geoLoadingTitle", "unavailableTitle", "recomendDescription", "fallback", "geoDefaultPosition", "getRecomendPlace", "getDefaultCenterPlace", "loading", "mapContext"]);
3989
- const BEIJIN_POINT = [116.2317, 39.5427];
3990
4028
  const useAmapGeometry = () => {
3991
4029
  const payload = useMapSupplier();
3992
4030
  const apiMapDistance = (from, to) => {
@@ -4012,6 +4050,7 @@ const useMapGeometry = () => {
4012
4050
  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=";
4013
4051
  const TaxiCar_css_ts_vanilla = "";
4014
4052
  var carIcon = "_65j3sr1";
4053
+ var hide = createRuntimeFn({ defaultClassName: "", variantClassNames: { hide: { true: "_65j3sr2", false: "_65j3sr3" } }, defaultVariants: {}, compoundVariants: [] });
4015
4054
  var pointInfoBoxEmphasize = "_4a4ovk5";
4016
4055
  var pointInfoBoxTitle = "_4a4ovk3";
4017
4056
  var pointLayout = "_4a4ovk0";
@@ -4022,24 +4061,43 @@ const ATaxiCar = defineSetup(function ATaxiCar2(props) {
4022
4061
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
4023
4062
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
4024
4063
  if (!props.title)
4025
- return `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`;
4026
- return `
4064
+ return {
4065
+ img: `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`
4066
+ };
4067
+ const content = (hide$1) => `
4027
4068
  <div class="${pointLayout}">
4028
- <div class="${pointSingleInfoBox}">
4069
+ <div class="${pointSingleInfoBox} ${hide({
4070
+ hide: !hide$1
4071
+ })}">
4029
4072
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
4030
4073
  </div>
4031
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4074
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4075
+ hide: hide$1
4076
+ })}" style="${carStyle}">
4032
4077
  </div>
4033
4078
  `;
4079
+ return {
4080
+ box: content(true),
4081
+ img: content(false)
4082
+ };
4034
4083
  });
4035
- return () => Vue.h(AmapMarker, {
4084
+ return () => Vue.h("div", [Vue.h(AmapMarker, {
4036
4085
  "attrs": {
4037
4086
  "position": props.position,
4038
- "content": contentRef.value,
4087
+ "content": contentRef.value.img,
4039
4088
  "anchor": "bottom-center",
4040
- "registerOverlay": props.registerOverlay
4089
+ "registerOverlay": props.registerOverlay,
4090
+ "zIndex": ZINDEX_CAR_LAYER
4041
4091
  }
4042
- });
4092
+ }), Vue.h(AmapMarker, {
4093
+ "attrs": {
4094
+ "position": props.position,
4095
+ "content": contentRef.value.box,
4096
+ "anchor": "bottom-center",
4097
+ "registerOverlay": props.registerOverlay,
4098
+ "zIndex": ZINDEX_BUBBLE_LAYER
4099
+ }
4100
+ })]);
4043
4101
  });
4044
4102
  const GTaxiCar = defineSetup(function GTaxiCar2(props) {
4045
4103
  const contentRef = Vue.computed(() => {
@@ -4047,28 +4105,46 @@ const GTaxiCar = defineSetup(function GTaxiCar2(props) {
4047
4105
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
4048
4106
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
4049
4107
  if (!props.title)
4050
- return createDom("img", {
4051
- class: carIcon,
4052
- src: imgTaxicar,
4053
- style: carStyle
4054
- });
4055
- return createDom("div", {
4108
+ return {
4109
+ img: createDom("img", {
4110
+ class: carIcon,
4111
+ src: imgTaxicar,
4112
+ style: carStyle
4113
+ })
4114
+ };
4115
+ const content = (hide$1) => createDom("div", {
4056
4116
  class: pointLayout
4057
4117
  }, `
4058
- <div class="${pointSingleInfoBox}">
4118
+ <div class="${pointSingleInfoBox} ${hide({
4119
+ hide: !hide$1
4120
+ })}">
4059
4121
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
4060
4122
  </div>
4061
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4123
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4124
+ hide: hide$1
4125
+ })}" style="${carStyle}">
4062
4126
  `);
4127
+ return {
4128
+ box: content(true),
4129
+ img: content(false)
4130
+ };
4063
4131
  });
4064
4132
  return () => {
4065
- return Vue.h(GmapAdvancedMarkerView, {
4133
+ return Vue.h("div", [Vue.h(GmapAdvancedMarkerView, {
4066
4134
  "attrs": {
4067
4135
  "position": vec2lnglat(props.position),
4068
- "content": contentRef.value,
4069
- "registerOverlay": props.registerOverlay
4136
+ "content": contentRef.value.img,
4137
+ "registerOverlay": props.registerOverlay,
4138
+ "zIndex": ZINDEX_CAR_LAYER
4070
4139
  }
4071
- });
4140
+ }), Vue.h(GmapAdvancedMarkerView, {
4141
+ "attrs": {
4142
+ "position": vec2lnglat(props.position),
4143
+ "content": contentRef.value.box,
4144
+ "registerOverlay": props.registerOverlay,
4145
+ "zIndex": ZINDEX_BUBBLE_LAYER
4146
+ }
4147
+ })]);
4072
4148
  };
4073
4149
  });
4074
4150
  const TaxiCar = defineSetup(function TaxiCar2(props) {
@@ -4307,7 +4383,10 @@ const WaveCircle = defineSetup(function WaveCircle2(props) {
4307
4383
  });
4308
4384
  };
4309
4385
  });
4310
- const PASSENGER_DISTANCE_LIMIT = 2e3;
4386
+ const PASSENGER_DISTANCE_MAX = 2e3;
4387
+ const PASSENGER_DISTANCE_MIN = 10;
4388
+ const CAR_DISTANCE_MIN = 100;
4389
+ const carDurationWithinMinDistance = (distance) => Math.floor(distance / 5);
4311
4390
  const SectionDispatching = defineSetup(function SectionDispatching2(props) {
4312
4391
  return () => {
4313
4392
  const {
@@ -4369,7 +4448,7 @@ const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
4369
4448
  }), Vue.h(ConditionalFittablePassengerCircle, {
4370
4449
  "attrs": {
4371
4450
  "position": passengerPosition,
4372
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4451
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4373
4452
  "registerOverlay": registerOverlay
4374
4453
  }
4375
4454
  }), Vue.h(StartEndPoint, {
@@ -4417,10 +4496,11 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4417
4496
  } = props;
4418
4497
  const from = place2point(fromPlace);
4419
4498
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4499
+ const carDistance = carPosition ? apiMapDistance(carPosition, from) : void 0;
4420
4500
  return Vue.h("div", [Vue.h(ConditionalFittablePassengerCircle, {
4421
4501
  "attrs": {
4422
4502
  "position": passengerPosition,
4423
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4503
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4424
4504
  "registerOverlay": registerOverlay
4425
4505
  }
4426
4506
  }), Vue.h(StartEndPoint, {
@@ -4435,7 +4515,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4435
4515
  "label": fromPlace.name,
4436
4516
  "hideIcon": true
4437
4517
  }
4438
- }), carPosition[0] !== from[0] || carPosition[1] !== from[1] ? Vue.h(DrivingRoute, {
4518
+ }), !carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? Vue.h(DrivingRoute, {
4439
4519
  "attrs": {
4440
4520
  "from": carPosition,
4441
4521
  "to": from,
@@ -4463,7 +4543,21 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4463
4543
  }
4464
4544
  })]
4465
4545
  }
4466
- }) : null, !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && Vue.h(WalkingRoute, {
4546
+ }) : [Vue.h(TaxiCar, {
4547
+ "attrs": {
4548
+ "position": carPosition,
4549
+ "title": renderTitle({
4550
+ distance: carDistance,
4551
+ duration: carDurationWithinMinDistance(carDistance)
4552
+ }),
4553
+ "registerOverlay": registerOverlay
4554
+ }
4555
+ }), Vue.h(KeyedFitView, {
4556
+ "attrs": {
4557
+ "registerOverlay": registerOverlay,
4558
+ "fitViewKey": JSON.stringify(carPosition)
4559
+ }
4560
+ })], !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && Vue.h(WalkingRoute, {
4467
4561
  "attrs": {
4468
4562
  "from": passengerPosition,
4469
4563
  "to": from,
@@ -4508,7 +4602,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4508
4602
  }
4509
4603
  })
4510
4604
  }
4511
- }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && Vue.h(WalkingRoute, {
4605
+ }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && Vue.h(WalkingRoute, {
4512
4606
  "attrs": {
4513
4607
  "from": passengerPosition,
4514
4608
  "to": from,
@@ -4523,7 +4617,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4523
4617
  }), Vue.h(ConditionalFittablePassengerCircle, {
4524
4618
  "attrs": {
4525
4619
  "position": passengerPosition,
4526
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4620
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4527
4621
  "registerOverlay": registerOverlay
4528
4622
  }
4529
4623
  }), Vue.h(StartEndPoint, {
@@ -4571,7 +4665,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4571
4665
  } = props;
4572
4666
  const from = place2point(fromPlace);
4573
4667
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4574
- return Vue.h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && Vue.h(WalkingRoute, {
4668
+ return Vue.h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && Vue.h(WalkingRoute, {
4575
4669
  "attrs": {
4576
4670
  "from": passengerPosition,
4577
4671
  "to": from,
@@ -4586,16 +4680,21 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4586
4680
  }), Vue.h(ConditionalFittablePassengerCircle, {
4587
4681
  "attrs": {
4588
4682
  "position": passengerPosition,
4589
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4683
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4590
4684
  "registerOverlay": registerOverlay
4591
4685
  }
4592
- }), Vue.h(TaxiCar, {
4686
+ }), !!carPosition && [Vue.h(TaxiCar, {
4593
4687
  "attrs": {
4594
4688
  "position": carPosition,
4595
4689
  "title": title,
4596
4690
  "registerOverlay": registerOverlay
4597
4691
  }
4598
- }), Vue.h(StartEndPoint, {
4692
+ }), Vue.h(KeyedFitView, {
4693
+ "attrs": {
4694
+ "registerOverlay": registerOverlay,
4695
+ "fitViewKey": JSON.stringify(carPosition)
4696
+ }
4697
+ })], Vue.h(StartEndPoint, {
4599
4698
  "attrs": {
4600
4699
  "type": "start",
4601
4700
  "position": from,
@@ -4623,7 +4722,11 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4623
4722
  registerOverlay
4624
4723
  } = props;
4625
4724
  const to = place2point(toPlace);
4626
- return Vue.h("div", [Vue.h(DrivingRoute, {
4725
+ const {
4726
+ apiMapDistance
4727
+ } = useMapGeometry();
4728
+ const carDistance = carPosition ? apiMapDistance(carPosition, to) : void 0;
4729
+ return Vue.h("div", [!carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? Vue.h(DrivingRoute, {
4627
4730
  "attrs": {
4628
4731
  "from": carPosition,
4629
4732
  "to": to,
@@ -4651,7 +4754,21 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4651
4754
  }
4652
4755
  })]
4653
4756
  }
4654
- }), Vue.h(StartEndPoint, {
4757
+ }) : [Vue.h(TaxiCar, {
4758
+ "attrs": {
4759
+ "position": carPosition,
4760
+ "title": renderTitle({
4761
+ distance: carDistance,
4762
+ duration: carDurationWithinMinDistance(carDistance)
4763
+ }),
4764
+ "registerOverlay": registerOverlay
4765
+ }
4766
+ }), Vue.h(KeyedFitView, {
4767
+ "attrs": {
4768
+ "registerOverlay": registerOverlay,
4769
+ "fitViewKey": JSON.stringify(carPosition)
4770
+ }
4771
+ })], Vue.h(StartEndPoint, {
4655
4772
  "attrs": {
4656
4773
  "type": "end",
4657
4774
  "position": to,
@@ -4773,7 +4890,7 @@ const BusinessTaxiEndMap = defineSetup(function BusinessTaxiEndMap2(props) {
4773
4890
  } = useMapFitView({
4774
4891
  mapRef,
4775
4892
  autoFitTimeout: 5e3,
4776
- padding: [25, 20, 15, 15]
4893
+ padding: [19, 36, 19, 26]
4777
4894
  });
4778
4895
  const deferedSetFitView = pipeDefer(registerFitVeiw.setFitView);
4779
4896
  return () => {
@@ -4817,7 +4934,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4817
4934
  geoPosition,
4818
4935
  geoError
4819
4936
  } = useGeoLocation();
4820
- const carPositionRef = Vue.ref(place2point(props.from));
4937
+ const carPositionRef = Vue.ref();
4821
4938
  Vue.watch(() => props.driverStatus, (status, _, onCleanup) => {
4822
4939
  if (!STATUS_NEED_CAR_POSITION.includes(status))
4823
4940
  return;
@@ -5156,7 +5273,7 @@ const useBusinessTaxiServiceMap = () => {
5156
5273
  const { registerFitVeiw, setFitView } = useMapFitView({
5157
5274
  mapRef,
5158
5275
  autoFitTimeout: 5e3,
5159
- padding: [19, 26, 19, 26]
5276
+ padding: [19, 36, 19, 26]
5160
5277
  });
5161
5278
  return { setMap, registerFitVeiw, setFitView };
5162
5279
  };
package/dist/index.js CHANGED
@@ -2661,6 +2661,12 @@ const KeyedFitView = defineSetup(function KeyedFitView2(props, {
2661
2661
  return h("div", [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
2662
2662
  };
2663
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;
2664
2670
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
2665
2671
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
2666
2672
  const StartEndPoint_css_ts_vanilla = "";
@@ -2778,7 +2784,8 @@ const AStartEndPoint = defineSetup(function AStartEndPoint2(props) {
2778
2784
  "registerOverlay": props.registerOverlay,
2779
2785
  "position": props.position,
2780
2786
  "content": contentRef.value,
2781
- "anchor": "bottom-center"
2787
+ "anchor": "bottom-center",
2788
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2782
2789
  }
2783
2790
  });
2784
2791
  });
@@ -2822,7 +2829,8 @@ const GStartEndPoint = defineSetup(function GStartEndPoint2(props) {
2822
2829
  "attrs": {
2823
2830
  "registerOverlay": props.registerOverlay,
2824
2831
  "position": vec2lnglat(props.position),
2825
- "content": contentRef.value
2832
+ "content": contentRef.value,
2833
+ "zIndex": ZINDEX_START_END_LOGO_LAYER
2826
2834
  }
2827
2835
  });
2828
2836
  };
@@ -3076,6 +3084,7 @@ const useAmapDrag = (props) => {
3076
3084
  var _a;
3077
3085
  isDragging.value = false;
3078
3086
  const { lng, lat } = target.getCenter();
3087
+ spaceLog("dragEnd", "[lng, lat] = ", [lng, lat]);
3079
3088
  centerRef.value = [lng, lat];
3080
3089
  (_a = pipeAsync(onChange)) == null ? void 0 : _a([lng, lat]);
3081
3090
  };
@@ -3125,7 +3134,7 @@ const useUpdate = () => {
3125
3134
  return { idx, update };
3126
3135
  };
3127
3136
  const useAmapPlace = (props) => {
3128
- const { onChange, onChangeCity } = props;
3137
+ const { onChange, onChangeCity, emptyPlaceName } = props;
3129
3138
  const defaultPoint = [...props.pointRef.value];
3130
3139
  const pointRef = ref(defaultPoint);
3131
3140
  const { readyPromise } = useMapSupplier();
@@ -3165,9 +3174,11 @@ const useAmapPlace = (props) => {
3165
3174
  geocoder.getAddress(new AMap.LngLat(lng, lat), (status, result) => {
3166
3175
  switch (status) {
3167
3176
  case "complete": {
3168
- const { formattedAddress: name, addressComponent } = result.regeocode;
3177
+ const { formattedAddress, addressComponent } = result.regeocode;
3169
3178
  const cityName = addressComponent.city ? addressComponent.city : addressComponent.province;
3170
3179
  const cityParentName = addressComponent.province;
3180
+ const name = formattedAddress ? formattedAddress : emptyPlaceName;
3181
+ console.log("geocoder.getAddress status, name, lng, lat = ", status, name, lng, lat);
3171
3182
  place.name = name;
3172
3183
  place.lng = lng;
3173
3184
  place.lat = lat;
@@ -3176,9 +3187,10 @@ const useAmapPlace = (props) => {
3176
3187
  return;
3177
3188
  }
3178
3189
  case "no_data":
3179
- place.name = "";
3190
+ place.name = emptyPlaceName;
3180
3191
  place.lng = lng;
3181
3192
  place.lat = lat;
3193
+ console.log("geocoder.getAddress status, name, lng, lat = ", status, "", lng, lat);
3182
3194
  onChange == null ? void 0 : onChange({ lng, lat, name: "" });
3183
3195
  return;
3184
3196
  case "error":
@@ -3190,7 +3202,7 @@ const useAmapPlace = (props) => {
3190
3202
  return { place, updatePlace, setPlace, updateCity };
3191
3203
  };
3192
3204
  const useGmapPlace = (props) => {
3193
- const { onChange, onChangeCity } = props;
3205
+ const { onChange, onChangeCity, emptyPlaceName } = props;
3194
3206
  const defaultPoint = [...props.pointRef.value];
3195
3207
  const pointRef = ref(defaultPoint);
3196
3208
  const { readyPromise } = useMapSupplier();
@@ -3225,7 +3237,7 @@ const useGmapPlace = (props) => {
3225
3237
  const geocoder = new google.maps.Geocoder();
3226
3238
  const [lng, lat] = pointRef.value;
3227
3239
  const { results } = await geocoder.geocode({ language: LANGUAGE, location: { lng, lat } });
3228
- const name = results[0].formatted_address;
3240
+ const name = results[0].formatted_address ? results[0].formatted_address : emptyPlaceName;
3229
3241
  const cityName = geocoderResult2cityName(results[0]);
3230
3242
  const cityParentName = results.slice(-2)[0].address_components[0].long_name;
3231
3243
  const countryName = results.slice(-1)[0].address_components[0].long_name;
@@ -3267,12 +3279,22 @@ const findGmapNearestPlace = (place, candidates) => {
3267
3279
  return { shortestPlace, shortestDistance };
3268
3280
  };
3269
3281
  const useAmapRecomendPlace = (props) => {
3270
- const { pointRef, getRecomendPlace, getLimit, context: context2, onChange, onChangePlace, onChangeCity } = props;
3282
+ const {
3283
+ pointRef,
3284
+ getRecomendPlace,
3285
+ getLimit,
3286
+ context: context2,
3287
+ emptyPlaceName,
3288
+ onChange,
3289
+ onChangePlace,
3290
+ onChangeCity
3291
+ } = props;
3271
3292
  const availableRef = ref(true);
3272
3293
  const placeCandidatesRef = ref([]);
3273
3294
  const { idx: recomendPlaceKey, update: updateRecomandPlace } = useUpdate();
3274
3295
  const { readyPromise } = useMapSupplier();
3275
3296
  const { place, updatePlace, setPlace, updateCity } = useAmapPlace({
3297
+ emptyPlaceName,
3276
3298
  pointRef,
3277
3299
  onChange: onChangePlace,
3278
3300
  onChangeCity
@@ -3323,12 +3345,22 @@ const useAmapRecomendPlace = (props) => {
3323
3345
  };
3324
3346
  };
3325
3347
  const useGmapRecomendPlace = (props) => {
3326
- const { pointRef, getRecomendPlace, getLimit, context: context2, onChange, onChangePlace, onChangeCity } = props;
3348
+ const {
3349
+ pointRef,
3350
+ getRecomendPlace,
3351
+ getLimit,
3352
+ context: context2,
3353
+ emptyPlaceName,
3354
+ onChange,
3355
+ onChangePlace,
3356
+ onChangeCity
3357
+ } = props;
3327
3358
  const availableRef = ref(true);
3328
3359
  const placeCandidatesRef = ref([]);
3329
3360
  const { idx: recomendPlaceKey, update: updateRecomandPlace } = useUpdate();
3330
3361
  const { readyPromise } = useMapSupplier();
3331
3362
  const { place, updatePlace, setPlace, updateCity } = useGmapPlace({
3363
+ emptyPlaceName,
3332
3364
  pointRef,
3333
3365
  onChange: onChangePlace,
3334
3366
  onChangeCity
@@ -3466,7 +3498,8 @@ const APassengerCircle = defineSetup(function APassengerCircle2(props) {
3466
3498
  "position": props.position,
3467
3499
  "content": contentRef.value,
3468
3500
  "anchor": "bottom-center",
3469
- "registerOverlay": props.registerOverlay
3501
+ "registerOverlay": props.registerOverlay,
3502
+ "zIndex": ZINDEX_PASSENGER_LAYER
3470
3503
  }
3471
3504
  });
3472
3505
  };
@@ -3488,7 +3521,8 @@ const GPassengerCircle = defineSetup(function GPassengerCircle2(props) {
3488
3521
  "attrs": {
3489
3522
  "position": vec2lnglat(props.position),
3490
3523
  "content": contentRef.value,
3491
- "registerOverlay": props.registerOverlay
3524
+ "registerOverlay": props.registerOverlay,
3525
+ "zIndex": ZINDEX_PASSENGER_LAYER
3492
3526
  }
3493
3527
  });
3494
3528
  });
@@ -3663,7 +3697,8 @@ const APlaceCircle = defineSetup(function APlaceCircle2(props, {
3663
3697
  "attrs": {
3664
3698
  "position": props.position,
3665
3699
  "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3666
- "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft
3700
+ "anchor": textAlignRef.value === "left" ? AnchorType.middleRight : AnchorType.middleLeft,
3701
+ "zIndex": ZINDEX_PLACE_LAYER
3667
3702
  },
3668
3703
  "on": {
3669
3704
  "click": handleClick
@@ -3714,7 +3749,8 @@ const GPlaceCircle = defineSetup(function GPlaceCircle2(props, {
3714
3749
  return () => h(GmapAdvancedMarkerView, {
3715
3750
  "attrs": {
3716
3751
  "position": vec2lnglat(props.position),
3717
- "content": props.label ? contentRef.value : contentWithoutLabelRef.value
3752
+ "content": props.label ? contentRef.value : contentWithoutLabelRef.value,
3753
+ "zIndex": ZINDEX_PLACE_LAYER
3718
3754
  },
3719
3755
  "on": {
3720
3756
  "click": handleClick
@@ -3791,7 +3827,8 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3791
3827
  const pipedGetRecomendPlace = pipeOnlyLastEffect(getRecomendPlace);
3792
3828
  const {
3793
3829
  mapRef,
3794
- setMap
3830
+ setMap,
3831
+ panTo
3795
3832
  } = useHeycarMap();
3796
3833
  const {
3797
3834
  readyPromise
@@ -3902,6 +3939,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3902
3939
  isElectedRef
3903
3940
  } = useMapRecomendPlace({
3904
3941
  pointRef: centerPoint,
3942
+ emptyPlaceName: DEFAULT_PLACE_NAME,
3905
3943
  context: centerSource,
3906
3944
  getRecomendPlace: pipedGetRecomendPlace,
3907
3945
  getLimit: (context2) => {
@@ -3929,8 +3967,10 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3929
3967
  Object.assign(centerPlace, {
3930
3968
  ...place
3931
3969
  });
3970
+ panTo(place2point(place));
3932
3971
  emit("changeRecomandPlace", place);
3933
- await pipeDefer(setZoom)(READY_ZOOM);
3972
+ if (isFirstWorkflowRecomendLoadingRef.value)
3973
+ await pipeDefer(setZoom)(READY_ZOOM);
3934
3974
  completeFirstWorkflowRecomend();
3935
3975
  },
3936
3976
  onChangeCity: (value) => {
@@ -3946,13 +3986,12 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3946
3986
  mapContext.onChangeRecomendPlaces([...placeCandidates.value]);
3947
3987
  });
3948
3988
  return () => {
3949
- var _a2;
3950
3989
  const {
3951
3990
  geoLoadingTitle,
3952
3991
  recomendDescription,
3953
3992
  unavailableTitle
3954
3993
  } = props;
3955
- const title = geoLoading.value ? geoLoadingTitle : !availableRef.value ? unavailableTitle : (_a2 = centerPlace.name) != null ? _a2 : DEFAULT_PLACE_NAME;
3994
+ const title = geoLoading.value ? geoLoadingTitle : !availableRef.value ? unavailableTitle : centerPlace.name;
3956
3995
  const description = !availableRef.value ? void 0 : isElectedRef.value ? recomendDescription : void 0;
3957
3996
  return h(HeycarMap, {
3958
3997
  "attrs": {
@@ -3984,7 +4023,6 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
3984
4023
  })]);
3985
4024
  };
3986
4025
  }).props(["log", "geoLoadingTitle", "unavailableTitle", "recomendDescription", "fallback", "geoDefaultPosition", "getRecomendPlace", "getDefaultCenterPlace", "loading", "mapContext"]);
3987
- const BEIJIN_POINT = [116.2317, 39.5427];
3988
4026
  const useAmapGeometry = () => {
3989
4027
  const payload = useMapSupplier();
3990
4028
  const apiMapDistance = (from, to) => {
@@ -4010,6 +4048,7 @@ const useMapGeometry = () => {
4010
4048
  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=";
4011
4049
  const TaxiCar_css_ts_vanilla = "";
4012
4050
  var carIcon = "_65j3sr1";
4051
+ var hide = createRuntimeFn({ defaultClassName: "", variantClassNames: { hide: { true: "_65j3sr2", false: "_65j3sr3" } }, defaultVariants: {}, compoundVariants: [] });
4013
4052
  var pointInfoBoxEmphasize = "_4a4ovk5";
4014
4053
  var pointInfoBoxTitle = "_4a4ovk3";
4015
4054
  var pointLayout = "_4a4ovk0";
@@ -4020,24 +4059,43 @@ const ATaxiCar = defineSetup(function ATaxiCar2(props) {
4020
4059
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
4021
4060
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
4022
4061
  if (!props.title)
4023
- return `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`;
4024
- return `
4062
+ return {
4063
+ img: `<img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">`
4064
+ };
4065
+ const content = (hide$1) => `
4025
4066
  <div class="${pointLayout}">
4026
- <div class="${pointSingleInfoBox}">
4067
+ <div class="${pointSingleInfoBox} ${hide({
4068
+ hide: !hide$1
4069
+ })}">
4027
4070
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
4028
4071
  </div>
4029
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4072
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4073
+ hide: hide$1
4074
+ })}" style="${carStyle}">
4030
4075
  </div>
4031
4076
  `;
4077
+ return {
4078
+ box: content(true),
4079
+ img: content(false)
4080
+ };
4032
4081
  });
4033
- return () => h(AmapMarker, {
4082
+ return () => h("div", [h(AmapMarker, {
4034
4083
  "attrs": {
4035
4084
  "position": props.position,
4036
- "content": contentRef.value,
4085
+ "content": contentRef.value.img,
4037
4086
  "anchor": "bottom-center",
4038
- "registerOverlay": props.registerOverlay
4087
+ "registerOverlay": props.registerOverlay,
4088
+ "zIndex": ZINDEX_CAR_LAYER
4039
4089
  }
4040
- });
4090
+ }), h(AmapMarker, {
4091
+ "attrs": {
4092
+ "position": props.position,
4093
+ "content": contentRef.value.box,
4094
+ "anchor": "bottom-center",
4095
+ "registerOverlay": props.registerOverlay,
4096
+ "zIndex": ZINDEX_BUBBLE_LAYER
4097
+ }
4098
+ })]);
4041
4099
  });
4042
4100
  const GTaxiCar = defineSetup(function GTaxiCar2(props) {
4043
4101
  const contentRef = computed(() => {
@@ -4045,28 +4103,46 @@ const GTaxiCar = defineSetup(function GTaxiCar2(props) {
4045
4103
  const titleRow = !props.title ? "" : decodeAsterisk(props.title).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize}">${item.value}</span>`).join("");
4046
4104
  const carStyle = `transform:rotate(${(_a = props.angle) != null ? _a : 0}deg)`;
4047
4105
  if (!props.title)
4048
- return createDom("img", {
4049
- class: carIcon,
4050
- src: imgTaxicar,
4051
- style: carStyle
4052
- });
4053
- return createDom("div", {
4106
+ return {
4107
+ img: createDom("img", {
4108
+ class: carIcon,
4109
+ src: imgTaxicar,
4110
+ style: carStyle
4111
+ })
4112
+ };
4113
+ const content = (hide$1) => createDom("div", {
4054
4114
  class: pointLayout
4055
4115
  }, `
4056
- <div class="${pointSingleInfoBox}">
4116
+ <div class="${pointSingleInfoBox} ${hide({
4117
+ hide: !hide$1
4118
+ })}">
4057
4119
  <div class="${pointInfoBoxTitle}">${titleRow}</div>
4058
4120
  </div>
4059
- <img src="${imgTaxicar}" class="${carIcon}" style="${carStyle}">
4121
+ <img src="${imgTaxicar}" class="${carIcon} ${hide({
4122
+ hide: hide$1
4123
+ })}" style="${carStyle}">
4060
4124
  `);
4125
+ return {
4126
+ box: content(true),
4127
+ img: content(false)
4128
+ };
4061
4129
  });
4062
4130
  return () => {
4063
- return h(GmapAdvancedMarkerView, {
4131
+ return h("div", [h(GmapAdvancedMarkerView, {
4064
4132
  "attrs": {
4065
4133
  "position": vec2lnglat(props.position),
4066
- "content": contentRef.value,
4067
- "registerOverlay": props.registerOverlay
4134
+ "content": contentRef.value.img,
4135
+ "registerOverlay": props.registerOverlay,
4136
+ "zIndex": ZINDEX_CAR_LAYER
4068
4137
  }
4069
- });
4138
+ }), h(GmapAdvancedMarkerView, {
4139
+ "attrs": {
4140
+ "position": vec2lnglat(props.position),
4141
+ "content": contentRef.value.box,
4142
+ "registerOverlay": props.registerOverlay,
4143
+ "zIndex": ZINDEX_BUBBLE_LAYER
4144
+ }
4145
+ })]);
4070
4146
  };
4071
4147
  });
4072
4148
  const TaxiCar = defineSetup(function TaxiCar2(props) {
@@ -4305,7 +4381,10 @@ const WaveCircle = defineSetup(function WaveCircle2(props) {
4305
4381
  });
4306
4382
  };
4307
4383
  });
4308
- const PASSENGER_DISTANCE_LIMIT = 2e3;
4384
+ const PASSENGER_DISTANCE_MAX = 2e3;
4385
+ const PASSENGER_DISTANCE_MIN = 10;
4386
+ const CAR_DISTANCE_MIN = 100;
4387
+ const carDurationWithinMinDistance = (distance) => Math.floor(distance / 5);
4309
4388
  const SectionDispatching = defineSetup(function SectionDispatching2(props) {
4310
4389
  return () => {
4311
4390
  const {
@@ -4367,7 +4446,7 @@ const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
4367
4446
  }), h(ConditionalFittablePassengerCircle, {
4368
4447
  "attrs": {
4369
4448
  "position": passengerPosition,
4370
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4449
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4371
4450
  "registerOverlay": registerOverlay
4372
4451
  }
4373
4452
  }), h(StartEndPoint, {
@@ -4415,10 +4494,11 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4415
4494
  } = props;
4416
4495
  const from = place2point(fromPlace);
4417
4496
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4497
+ const carDistance = carPosition ? apiMapDistance(carPosition, from) : void 0;
4418
4498
  return h("div", [h(ConditionalFittablePassengerCircle, {
4419
4499
  "attrs": {
4420
4500
  "position": passengerPosition,
4421
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4501
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4422
4502
  "registerOverlay": registerOverlay
4423
4503
  }
4424
4504
  }), h(StartEndPoint, {
@@ -4433,7 +4513,7 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4433
4513
  "label": fromPlace.name,
4434
4514
  "hideIcon": true
4435
4515
  }
4436
- }), carPosition[0] !== from[0] || carPosition[1] !== from[1] ? h(DrivingRoute, {
4516
+ }), !carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? h(DrivingRoute, {
4437
4517
  "attrs": {
4438
4518
  "from": carPosition,
4439
4519
  "to": from,
@@ -4461,7 +4541,21 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
4461
4541
  }
4462
4542
  })]
4463
4543
  }
4464
- }) : null, !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && h(WalkingRoute, {
4544
+ }) : [h(TaxiCar, {
4545
+ "attrs": {
4546
+ "position": carPosition,
4547
+ "title": renderTitle({
4548
+ distance: carDistance,
4549
+ duration: carDurationWithinMinDistance(carDistance)
4550
+ }),
4551
+ "registerOverlay": registerOverlay
4552
+ }
4553
+ }), h(KeyedFitView, {
4554
+ "attrs": {
4555
+ "registerOverlay": registerOverlay,
4556
+ "fitViewKey": JSON.stringify(carPosition)
4557
+ }
4558
+ })], !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && h(WalkingRoute, {
4465
4559
  "attrs": {
4466
4560
  "from": passengerPosition,
4467
4561
  "to": from,
@@ -4506,7 +4600,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4506
4600
  }
4507
4601
  })
4508
4602
  }
4509
- }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && h(WalkingRoute, {
4603
+ }), !!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && h(WalkingRoute, {
4510
4604
  "attrs": {
4511
4605
  "from": passengerPosition,
4512
4606
  "to": from,
@@ -4521,7 +4615,7 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
4521
4615
  }), h(ConditionalFittablePassengerCircle, {
4522
4616
  "attrs": {
4523
4617
  "position": passengerPosition,
4524
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4618
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4525
4619
  "registerOverlay": registerOverlay
4526
4620
  }
4527
4621
  }), h(StartEndPoint, {
@@ -4569,7 +4663,7 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4569
4663
  } = props;
4570
4664
  const from = place2point(fromPlace);
4571
4665
  const passengerDistance = passengerPosition ? apiMapDistance(passengerPosition, from) : void 0;
4572
- return h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT && h(WalkingRoute, {
4666
+ return h("div", [!!passengerPosition && passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX && passengerDistance > PASSENGER_DISTANCE_MIN && h(WalkingRoute, {
4573
4667
  "attrs": {
4574
4668
  "from": passengerPosition,
4575
4669
  "to": from,
@@ -4584,16 +4678,21 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
4584
4678
  }), h(ConditionalFittablePassengerCircle, {
4585
4679
  "attrs": {
4586
4680
  "position": passengerPosition,
4587
- "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_LIMIT,
4681
+ "condition": !!passengerDistance && passengerDistance < PASSENGER_DISTANCE_MAX,
4588
4682
  "registerOverlay": registerOverlay
4589
4683
  }
4590
- }), h(TaxiCar, {
4684
+ }), !!carPosition && [h(TaxiCar, {
4591
4685
  "attrs": {
4592
4686
  "position": carPosition,
4593
4687
  "title": title,
4594
4688
  "registerOverlay": registerOverlay
4595
4689
  }
4596
- }), h(StartEndPoint, {
4690
+ }), h(KeyedFitView, {
4691
+ "attrs": {
4692
+ "registerOverlay": registerOverlay,
4693
+ "fitViewKey": JSON.stringify(carPosition)
4694
+ }
4695
+ })], h(StartEndPoint, {
4597
4696
  "attrs": {
4598
4697
  "type": "start",
4599
4698
  "position": from,
@@ -4621,7 +4720,11 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4621
4720
  registerOverlay
4622
4721
  } = props;
4623
4722
  const to = place2point(toPlace);
4624
- return h("div", [h(DrivingRoute, {
4723
+ const {
4724
+ apiMapDistance
4725
+ } = useMapGeometry();
4726
+ const carDistance = carPosition ? apiMapDistance(carPosition, to) : void 0;
4727
+ return h("div", [!carPosition || !carDistance ? null : carDistance > CAR_DISTANCE_MIN ? h(DrivingRoute, {
4625
4728
  "attrs": {
4626
4729
  "from": carPosition,
4627
4730
  "to": to,
@@ -4649,7 +4752,21 @@ const SectionInService = defineSetup(function SectionInService2(props) {
4649
4752
  }
4650
4753
  })]
4651
4754
  }
4652
- }), h(StartEndPoint, {
4755
+ }) : [h(TaxiCar, {
4756
+ "attrs": {
4757
+ "position": carPosition,
4758
+ "title": renderTitle({
4759
+ distance: carDistance,
4760
+ duration: carDurationWithinMinDistance(carDistance)
4761
+ }),
4762
+ "registerOverlay": registerOverlay
4763
+ }
4764
+ }), h(KeyedFitView, {
4765
+ "attrs": {
4766
+ "registerOverlay": registerOverlay,
4767
+ "fitViewKey": JSON.stringify(carPosition)
4768
+ }
4769
+ })], h(StartEndPoint, {
4653
4770
  "attrs": {
4654
4771
  "type": "end",
4655
4772
  "position": to,
@@ -4771,7 +4888,7 @@ const BusinessTaxiEndMap = defineSetup(function BusinessTaxiEndMap2(props) {
4771
4888
  } = useMapFitView({
4772
4889
  mapRef,
4773
4890
  autoFitTimeout: 5e3,
4774
- padding: [25, 20, 15, 15]
4891
+ padding: [19, 36, 19, 26]
4775
4892
  });
4776
4893
  const deferedSetFitView = pipeDefer(registerFitVeiw.setFitView);
4777
4894
  return () => {
@@ -4815,7 +4932,7 @@ const BusinessTaxiServiceMap = defineLagecySetup(function BusinessTaxiServiceMap
4815
4932
  geoPosition,
4816
4933
  geoError
4817
4934
  } = useGeoLocation();
4818
- const carPositionRef = ref(place2point(props.from));
4935
+ const carPositionRef = ref();
4819
4936
  watch(() => props.driverStatus, (status, _, onCleanup) => {
4820
4937
  if (!STATUS_NEED_CAR_POSITION.includes(status))
4821
4938
  return;
@@ -5154,7 +5271,7 @@ const useBusinessTaxiServiceMap = () => {
5154
5271
  const { registerFitVeiw, setFitView } = useMapFitView({
5155
5272
  mapRef,
5156
5273
  autoFitTimeout: 5e3,
5157
- padding: [19, 26, 19, 26]
5274
+ padding: [19, 36, 19, 26]
5158
5275
  });
5159
5276
  return { setMap, registerFitVeiw, setFitView };
5160
5277
  };
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: 4vw;
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heycar/heycars-map",
3
- "version": "0.4.9",
3
+ "version": "0.5.1",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite -c vite.config.dev.ts",
package/todo.md CHANGED
@@ -3,46 +3,28 @@ https://dawchihliou.github.io/articles/building-custom-google-maps-marker-react-
3
3
  2. Google 地址名称太长
4
4
  3. 高德地图加载期间出现大量的请求
5
5
  4. 做完其他事情进入首页,变成了获取定位失败,但其实 gps 是 ok 的,因为刷新页面是有点位的
6
+ 5. map 的两个 slot loading 和 error slot 没有生效
7
+ 6. 企业微信如果关闭定位,会不停的跳 geoError 事件
6
8
 
7
- 郝瑞
9
+ 缩放问题
8
10
 
9
- - 5033 是否可以关闭
10
- - 5177 不太明白
11
+ - 4867
12
+ - 4920
11
13
 
12
- 测试环境看下
14
+ 章新华
13
15
 
14
- - 4914
15
- - 4976
16
- - 5002
17
- - 5006
18
- - 5014 定位失败,文案问题
19
- - 5017
20
- - 5036
21
- - 5092
22
- - 5225
23
- - 5229 优先看
24
16
  - 5238
25
17
 
26
18
  不明白的
27
19
 
28
- - 4843
29
- - 4986
30
- - 5024
20
+ - 5294
31
21
 
32
22
  需要复现
33
23
 
34
- - 4769
35
- - 4867
36
24
  - 5044
37
25
  - 5113
38
- - 5173
39
-
40
- setView 类 bug
41
-
42
- - 5134
43
- - 5056
44
- - 4939
45
- - 4936
26
+ - 5291
27
+ - 5257 我的 safari 没有问题
46
28
 
47
29
  0.4.3
48
30
 
@@ -74,3 +56,26 @@ setView 类 bug
74
56
  - 5006
75
57
  - 5017
76
58
  - 5238
59
+
60
+ 0.5.0
61
+
62
+ - 5284
63
+ - 5314
64
+ - 5313
65
+ - 5297
66
+ - 5277
67
+ - 5244
68
+ - 5198
69
+ - 5173
70
+ - 5168
71
+
72
+ 0.5.1
73
+
74
+ - 5303
75
+ - 5329
76
+ - 4769
77
+ - 5044 (跟章新华说下)
78
+ - 5314
79
+ - 5347
80
+ - 5348
81
+ - 5057
@@ -14,4 +14,7 @@ const pluginVue = isVue2 ? pluginVue2 : pluginVue3;
14
14
  // https://vitejs.dev/config/
15
15
  export default defineConfig({
16
16
  plugins: [pluginVue(), vueJsx(), checker({ typescript: true }), eslint(), vanillaExtractPlugin()],
17
+ server: {
18
+ host: "0.0.0.0",
19
+ },
17
20
  });