@heycar/heycars-map 2.14.0-walkOptimize2 → 2.15.0-domestic2

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.
Files changed (80) hide show
  1. package/README.md +47 -15
  2. package/dist/v2/Demo/DemoBusinessRecomendPlace.js +2 -1
  3. package/dist/v2/Demo/DemoBusinessTaxiEnd.d.ts +2 -1
  4. package/dist/v2/Demo/DemoBusinessTaxiEnd.js +9 -2
  5. package/dist/v2/Demo/DemoBusinessTaxiService.d.ts +4 -1
  6. package/dist/v2/Demo/DemoBusinessTaxiService.js +19 -1
  7. package/dist/v2/Demo/demo.data.mock.d.ts +4 -0
  8. package/dist/v2/Demo/demo.data.mock.js +1194 -0
  9. package/dist/v2/business-components/BusinessRecomendPlaceMap/BusinessRecomendPlaceMap.d.ts +2 -2
  10. package/dist/v2/business-components/BusinessRecomendPlaceMap/BusinessRecomendPlaceMap.js +2 -1
  11. package/dist/v2/business-components/BusinessRecomendPlaceMap/index.js +1 -1
  12. package/dist/v2/business-components/BusinessRecomendPlaceMap/useCacheCenterPlace.d.ts +1 -2
  13. package/dist/v2/business-components/BusinessRecomendPlaceMap/useCacheCenterPlace.js +6 -14
  14. package/dist/v2/business-components/BusinessReselectPlaceMap/BusinessReselectPlaceMap.js +1 -1
  15. package/dist/v2/business-components/BusinessTaxiEndMap/BusinessTaxiEndMap.d.ts +4 -3
  16. package/dist/v2/business-components/BusinessTaxiEndMap/BusinessTaxiEndMap.js +6 -2
  17. package/dist/v2/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceMap.d.ts +4 -1
  18. package/dist/v2/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceMap.js +45 -7
  19. package/dist/v2/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceSection.d.ts +6 -1
  20. package/dist/v2/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceSection.js +80 -16
  21. package/dist/v2/business-components/TaxiCar/RandomCars.d.ts +6 -0
  22. package/dist/v2/business-components/TaxiCar/RandomCars.js +47 -0
  23. package/dist/v2/chunks/{BusinessRecomendPlaceMap.8a4a1015.js → BusinessRecomendPlaceMap.eebd0822.js} +9 -5
  24. package/dist/{v3/chunks/Loading.4c949ec9.js → v2/chunks/Loading.8aa3aad3.js} +47 -27
  25. package/dist/v2/components/Loading/Loading.js +1 -1
  26. package/dist/v2/components/Loading/index.js +1 -1
  27. package/dist/v2/components/MapProvider/MapProvider.js +21 -10
  28. package/dist/v2/hooks/useMapCoordinatify.d.ts +2 -1
  29. package/dist/v2/hooks/useMapCoordinatify.js +6 -1
  30. package/dist/v2/hooks/useMapLoader.js +3 -3
  31. package/dist/v2/hooks-business/useBusinessRecomendPlaceMap.js +1 -1
  32. package/dist/v2/index.js +1 -1
  33. package/dist/v2/types/interface.d.ts +12 -0
  34. package/dist/v2/utils/geometryPolygon.d.ts +9 -0
  35. package/dist/v2/utils/geometryPolygon.js +19 -0
  36. package/dist/v2/utils/log.js +1 -1
  37. package/dist/v2/utils/platform.d.ts +2 -1
  38. package/dist/v2/utils/platform.js +2 -1
  39. package/dist/v2/utils/typeChecking.d.ts +7 -1
  40. package/dist/v2/utils/typeChecking.js +18 -0
  41. package/dist/v3/Demo/DemoBusinessRecomendPlace.js +2 -1
  42. package/dist/v3/Demo/DemoBusinessTaxiEnd.d.ts +2 -1
  43. package/dist/v3/Demo/DemoBusinessTaxiEnd.js +9 -2
  44. package/dist/v3/Demo/DemoBusinessTaxiService.d.ts +4 -1
  45. package/dist/v3/Demo/DemoBusinessTaxiService.js +19 -1
  46. package/dist/v3/Demo/demo.data.mock.d.ts +4 -0
  47. package/dist/v3/Demo/demo.data.mock.js +1194 -0
  48. package/dist/v3/business-components/BusinessRecomendPlaceMap/BusinessRecomendPlaceMap.d.ts +2 -2
  49. package/dist/v3/business-components/BusinessRecomendPlaceMap/BusinessRecomendPlaceMap.js +2 -1
  50. package/dist/v3/business-components/BusinessRecomendPlaceMap/index.js +1 -1
  51. package/dist/v3/business-components/BusinessRecomendPlaceMap/useCacheCenterPlace.d.ts +1 -2
  52. package/dist/v3/business-components/BusinessRecomendPlaceMap/useCacheCenterPlace.js +6 -14
  53. package/dist/v3/business-components/BusinessReselectPlaceMap/BusinessReselectPlaceMap.js +1 -1
  54. package/dist/v3/business-components/BusinessTaxiEndMap/BusinessTaxiEndMap.d.ts +4 -3
  55. package/dist/v3/business-components/BusinessTaxiEndMap/BusinessTaxiEndMap.js +6 -2
  56. package/dist/v3/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceMap.d.ts +4 -1
  57. package/dist/v3/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceMap.js +45 -7
  58. package/dist/v3/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceSection.d.ts +6 -1
  59. package/dist/v3/business-components/BusinessTaxiServiceMap/BusinessTaxiServiceSection.js +62 -16
  60. package/dist/v3/business-components/TaxiCar/RandomCars.d.ts +8 -0
  61. package/dist/v3/business-components/TaxiCar/RandomCars.js +45 -0
  62. package/dist/v3/chunks/{BusinessRecomendPlaceMap.b30ca4e4.js → BusinessRecomendPlaceMap.71c439c6.js} +7 -5
  63. package/dist/{v2/chunks/Loading.70dfc720.js → v3/chunks/Loading.4b53c31f.js} +34 -30
  64. package/dist/v3/components/Loading/Loading.js +1 -1
  65. package/dist/v3/components/Loading/index.js +1 -1
  66. package/dist/v3/components/MapProvider/MapProvider.js +21 -10
  67. package/dist/v3/hooks/useMapCoordinatify.d.ts +2 -1
  68. package/dist/v3/hooks/useMapCoordinatify.js +6 -1
  69. package/dist/v3/hooks/useMapLoader.js +3 -3
  70. package/dist/v3/hooks-business/useBusinessRecomendPlaceMap.js +1 -1
  71. package/dist/v3/index.js +1 -1
  72. package/dist/v3/types/interface.d.ts +12 -0
  73. package/dist/v3/utils/geometryPolygon.d.ts +9 -0
  74. package/dist/v3/utils/geometryPolygon.js +19 -0
  75. package/dist/v3/utils/log.js +1 -1
  76. package/dist/v3/utils/platform.d.ts +2 -1
  77. package/dist/v3/utils/platform.js +2 -1
  78. package/dist/v3/utils/typeChecking.d.ts +7 -1
  79. package/dist/v3/utils/typeChecking.js +18 -0
  80. package/package.json +1 -1
@@ -0,0 +1,6 @@
1
+ import type { Point } from "../../types/interface";
2
+ interface RandomCarsProps {
3
+ center: Point;
4
+ }
5
+ export declare const RandomCars: import("vue-demi").DefineComponent<import("vue3").ComponentObjectPropsOptions<RandomCarsProps>, 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<RandomCarsProps, Required<RandomCarsProps>>, never, RandomCarsProps>;
6
+ export {};
@@ -0,0 +1,47 @@
1
+ import { h } from "vue";
2
+ import { computed } from "vue-demi";
3
+ import { defineSetup } from "../../types/helper.js";
4
+ import { TaxiCar } from "./TaxiCar.js";
5
+ const RANDOM_CARS_RADIUS = 300;
6
+ const RANDOM_CARS_COUNT = 2;
7
+ const createRandomPoint = (center, radius) => {
8
+ const [lng, lat] = center;
9
+ const R_EARTH_METERS = 6371e3;
10
+ const randomAngle = Math.random() * 2 * Math.PI;
11
+ const randomRadiusInMeters = radius * Math.sqrt(Math.random());
12
+ const dx = randomRadiusInMeters * Math.cos(randomAngle);
13
+ const dy = randomRadiusInMeters * Math.sin(randomAngle);
14
+ const dLat = dy / R_EARTH_METERS;
15
+ const centerLatRadians = lat * (Math.PI / 180);
16
+ const dLng = dx / (R_EARTH_METERS * Math.cos(centerLatRadians));
17
+ return [lng + dLng * (180 / Math.PI), lat + dLat * (180 / Math.PI)];
18
+ };
19
+ const useRandomCars = (center) => {
20
+ return computed(() => {
21
+ return Array.from({
22
+ length: RANDOM_CARS_COUNT
23
+ }).map(() => {
24
+ const position = createRandomPoint(center, RANDOM_CARS_RADIUS);
25
+ const angle = Math.random() * 360;
26
+ return {
27
+ position,
28
+ angle
29
+ };
30
+ });
31
+ });
32
+ };
33
+ const RandomCars = defineSetup("RandomCars", function(props) {
34
+ const {
35
+ center
36
+ } = props;
37
+ const randomCarsRef = useRandomCars(center);
38
+ return () => h("div", [randomCarsRef.value.map((car) => h(TaxiCar, {
39
+ "attrs": {
40
+ "position": car.position,
41
+ "angle": car.angle
42
+ }
43
+ }))]);
44
+ });
45
+ export {
46
+ RandomCars
47
+ };
@@ -26,6 +26,7 @@ import { DeviceOrientation } from "../business-components/DeviceOrientation/Devi
26
26
  import { GreenZone } from "../business-components/GreenZone/GreenZone.js";
27
27
  import { PassengerCircle } from "../business-components/PassengerCircle/PassengerCircle.js";
28
28
  import { PickupPoints } from "../business-components/PickupPoints/PickupPoints.js";
29
+ import { RandomCars } from "../business-components/TaxiCar/RandomCars.js";
29
30
  import { useCacheCenterPlace } from "../business-components/BusinessRecomendPlaceMap/useCacheCenterPlace.js";
30
31
  import { b as baseGetTag, r as root } from "./isSymbol.555c14bf.js";
31
32
  import { i as isObject } from "./debounce.5afe7867.js";
@@ -286,8 +287,7 @@ const BusinessRecomendPlaceMapInner = defineSetup("BusinessRecomendPlaceMapInner
286
287
  geoErrorOnceNotificationKey = `BusinessRecomendPlaceMap_${Date.now()}`,
287
288
  getAvailable: inputGetAvailable,
288
289
  getRecomendPlace: inputGetRecomendPlace,
289
- mapContext,
290
- skipWaitGeo
290
+ mapContext
291
291
  } = props;
292
292
  const abortController = new AbortController();
293
293
  const {
@@ -337,8 +337,7 @@ const BusinessRecomendPlaceMapInner = defineSetup("BusinessRecomendPlaceMapInner
337
337
  } = useCacheCenterPlace({
338
338
  defaultCenterPlace: props.defaultCenterPlace,
339
339
  emptyTitle,
340
- geoLoadingTitle,
341
- skipWaitGeo
340
+ geoLoadingTitle
342
341
  });
343
342
  const centerSource = {
344
343
  source: "default"
@@ -558,6 +557,7 @@ const BusinessRecomendPlaceMapInner = defineSetup("BusinessRecomendPlaceMapInner
558
557
  recomendDescription,
559
558
  unavailableTitle,
560
559
  forbiddenTitle,
560
+ enableNearbyCars,
561
561
  disableLocator,
562
562
  renderPlacePhoto,
563
563
  renderPlaceTag
@@ -620,6 +620,10 @@ const BusinessRecomendPlaceMapInner = defineSetup("BusinessRecomendPlaceMapInner
620
620
  "on": {
621
621
  "click": panToCenterByPlace
622
622
  }
623
+ }), !!enableNearbyCars && zoomRef.value >= RECOMMEND_PLACE_ZONE_ICON_MIN && h(RandomCars, {
624
+ "attrs": {
625
+ "center": [centerPlace.lng, centerPlace.lat]
626
+ }
623
627
  })]);
624
628
  };
625
629
  });
@@ -642,7 +646,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup("BusinessRecomendPlaceMap", f
642
646
  key: `${payload.supplier}${instanceNo}`,
643
647
  on: generateCreateElementV2PropsOn(props, emit, ["loadGeoLocation", "loadDefaultGeoLocation", "changeByDrag", "changeGeoLocation", "changePlace", "changeRecomandPlace", "geoError", "geoErrorOnce", "clickLocatorText", "clickLocatorPhoto"])
644
648
  });
645
- }).props(["log", "geoLoadingTitle", "emptyTitle", "queryingTitle", "defaultCenterPlace", "skipWaitGeo", "geoErrorOnceNotificationKey", "unavailableTitle", "forbiddenTitle", "recomendDescription", "disableLocator", "fallback", "getRecomendPlace", "getAvailable", "renderPlacePhoto", "renderPlaceTag", "loading", "mapContext"]);
649
+ }).props(["log", "geoLoadingTitle", "emptyTitle", "queryingTitle", "defaultCenterPlace", "geoErrorOnceNotificationKey", "unavailableTitle", "forbiddenTitle", "recomendDescription", "enableNearbyCars", "disableLocator", "fallback", "getRecomendPlace", "getAvailable", "renderPlacePhoto", "renderPlaceTag", "loading", "mapContext"]);
646
650
  export {
647
651
  BusinessRecomendPlaceMap as B,
648
652
  DEFAULT_ZOOM as D,
@@ -1,5 +1,5 @@
1
1
  import "../css/Loading-49e58ced.css";
2
- import { createVNode } from "vue";
2
+ import { h } from "vue";
3
3
  import { ICON_LOAD_FAILED_URL } from "../api/cdn.js";
4
4
  import { AbsoluteAddressBox } from "../business-components/AbsoluteAddressBox/AbsoluteAddressBox.js";
5
5
  import { useMapSupplier } from "../hooks/useMapSupplier.js";
@@ -14,38 +14,58 @@ var loadingBg = "_17ify491";
14
14
  var loadingLayout = "_17ify490";
15
15
  var title = "_17ify495";
16
16
  var verticalGap = "_17ify494";
17
- const Loading = defineSetup("Loading", function() {
18
- return () => createVNode("div", {
19
- "class": loadingLayout
20
- }, [createVNode("img", {
21
- "class": loadingBg,
22
- "src": imgGrid
23
- }, null), createVNode(AbsoluteAddressBox, {
24
- "type": "loading",
25
- "title": ""
26
- }, null)]);
17
+ const Loading = defineSetup("Loading", function(_, {
18
+ attrs
19
+ }) {
20
+ return () => {
21
+ var _a;
22
+ return h("div", {
23
+ "class": `${loadingLayout} ${(_a = attrs.class) != null ? _a : ""}`,
24
+ "style": attrs.style
25
+ }, [h("img", {
26
+ "class": loadingBg,
27
+ "attrs": {
28
+ "src": imgGrid
29
+ }
30
+ }), h(AbsoluteAddressBox, {
31
+ "attrs": {
32
+ "type": "loading",
33
+ "title": ""
34
+ }
35
+ })]);
36
+ };
27
37
  });
28
- const LoadFailed = defineSetup("LoadFailed", function(props) {
38
+ const LoadFailed = defineSetup("LoadFailed", function(props, {
39
+ attrs
40
+ }) {
29
41
  var _a, _b;
30
42
  const {
31
43
  themeVariables
32
44
  } = useMapSupplier();
33
45
  const icon = (_b = (_a = props.icon) != null ? _a : themeVariables == null ? void 0 : themeVariables.ICON_LOAD_FAILED_URL) != null ? _b : ICON_LOAD_FAILED_URL;
34
- return () => createVNode("div", {
35
- "class": loadingLayout
36
- }, [createVNode("img", {
37
- "class": loadingBg,
38
- "src": imgGrid
39
- }, null), createVNode("div", {
40
- "class": contentLayout
41
- }, [createVNode(SvgInlineWebComponentTag, {
42
- "class": iconLoadFailed,
43
- "src": icon
44
- }, null), createVNode("span", {
45
- "class": `${title} ${verticalGap}`
46
- }, [props.title]), createVNode("span", {
47
- "class": `${description} ${verticalGap}`
48
- }, [props.description])])]);
46
+ return () => {
47
+ var _a2;
48
+ return h("div", {
49
+ "class": `${loadingLayout} ${(_a2 = attrs.class) != null ? _a2 : ""}`,
50
+ "style": attrs.style
51
+ }, [h("img", {
52
+ "class": loadingBg,
53
+ "attrs": {
54
+ "src": imgGrid
55
+ }
56
+ }), h("div", {
57
+ "class": contentLayout
58
+ }, [h(SvgInlineWebComponentTag, {
59
+ "class": iconLoadFailed,
60
+ "attrs": {
61
+ "src": icon
62
+ }
63
+ }), h("span", {
64
+ "class": `${title} ${verticalGap}`
65
+ }, [props.title]), h("span", {
66
+ "class": `${description} ${verticalGap}`
67
+ }, [props.description])])]);
68
+ };
49
69
  });
50
70
  export {
51
71
  LoadFailed as L,
@@ -1,6 +1,6 @@
1
1
  import "vue";
2
2
  import "../../api/cdn.js";
3
- import { L, a } from "../../chunks/Loading.70dfc720.js";
3
+ import { L, a } from "../../chunks/Loading.8aa3aad3.js";
4
4
  import "../../business-components/AbsoluteAddressBox/AbsoluteAddressBox.js";
5
5
  import "../../hooks/useMapSupplier.js";
6
6
  import "../../types/helper.js";
@@ -1,4 +1,4 @@
1
- import { L, a } from "../../chunks/Loading.70dfc720.js";
1
+ import { L, a } from "../../chunks/Loading.8aa3aad3.js";
2
2
  export {
3
3
  L as LoadFailed,
4
4
  a as Loading
@@ -1,7 +1,7 @@
1
1
  import "../../css/MapProvider-156bfd53.css";
2
2
  import { h } from "vue";
3
3
  import { reactive, toRefs } from "vue-demi";
4
- import { L as LoadFailed, a as Loading, i as imgGrid } from "../../chunks/Loading.70dfc720.js";
4
+ import { L as LoadFailed, a as Loading, i as imgGrid } from "../../chunks/Loading.8aa3aad3.js";
5
5
  import { useMapLoader, Status } from "../../hooks/useMapLoader.js";
6
6
  import { provideMapSupplier, useMapSupplier } from "../../hooks/useMapSupplier.js";
7
7
  import { defineLagecySetup } from "../../types/helper.js";
@@ -80,7 +80,7 @@ const HeycarMap = defineLagecySetup("HeycarMap", function(props, {
80
80
  });
81
81
  loadTraditionalChineseConvertOnce(payload.language === "zh-TW");
82
82
  return () => {
83
- var _a, _b, _c, _d, _e, _f, _g, _h;
83
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
84
84
  const {
85
85
  supplier,
86
86
  gmapId,
@@ -99,19 +99,30 @@ const HeycarMap = defineLagecySetup("HeycarMap", function(props, {
99
99
  const node = (_a = slots.fallback) == null ? void 0 : _a.call(slots);
100
100
  const title = (_b = payload.renderLoadFailedTitle) == null ? void 0 : _b.call(payload, status);
101
101
  const description = (_c = payload.renderLoadFailedDescription) == null ? void 0 : _c.call(payload, status);
102
- return node ? h("div", [node]) : h(LoadFailed, {
102
+ return node ? h("div", {
103
+ "class": (_d = attrs.class) != null ? _d : "",
104
+ "style": attrs.style
105
+ }, [node]) : h(LoadFailed, {
106
+ "class": (_e = attrs.class) != null ? _e : "",
103
107
  "attrs": {
104
108
  "title": title,
105
109
  "description": description
106
- }
110
+ },
111
+ "style": attrs.style
107
112
  });
108
113
  }
109
114
  if (status === Status.LOADING || status === Status.SUCCESS && pingStatus === "pending") {
110
- const node = (_d = slots.loading) == null ? void 0 : _d.call(slots);
111
- return node ? h("div", [node]) : h(Loading);
115
+ const node = (_f = slots.loading) == null ? void 0 : _f.call(slots);
116
+ return node ? h("div", {
117
+ "class": (_g = attrs.class) != null ? _g : "",
118
+ "style": attrs.style
119
+ }, [node]) : h(Loading, {
120
+ "class": (_h = attrs.class) != null ? _h : "",
121
+ "style": attrs.style
122
+ });
112
123
  }
113
- const children = (_e = slots.default) == null ? void 0 : _e.call(slots);
114
- const outArea = (_f = slots.outerArea) == null ? void 0 : _f.call(slots);
124
+ const children = (_i = slots.default) == null ? void 0 : _i.call(slots);
125
+ const outArea = (_j = slots.outerArea) == null ? void 0 : _j.call(slots);
115
126
  switch (supplier) {
116
127
  case "gmap": {
117
128
  const renderingType = compatibleGmapRenderingType({
@@ -119,7 +130,7 @@ const HeycarMap = defineLagecySetup("HeycarMap", function(props, {
119
130
  touchZoomCenter
120
131
  });
121
132
  return h("div", {
122
- "class": `${heycarMap} ${(_g = attrs.class) != null ? _g : ""}`,
133
+ "class": `${heycarMap} ${(_k = attrs.class) != null ? _k : ""}`,
123
134
  "attrs": {
124
135
  "lang": language
125
136
  },
@@ -154,7 +165,7 @@ const HeycarMap = defineLagecySetup("HeycarMap", function(props, {
154
165
  }
155
166
  default:
156
167
  return h("div", {
157
- "class": `${heycarMap} ${(_h = attrs.class) != null ? _h : ""}`,
168
+ "class": `${heycarMap} ${(_l = attrs.class) != null ? _l : ""}`,
158
169
  "attrs": {
159
170
  "lang": language
160
171
  },
@@ -1,4 +1,4 @@
1
- import { type CoordinateGeoPosition, type CoordinatePlace, type CoordinatePoint, type CoordinateRecommendZonePlaces, type CoordinateTrackPoint, type CoordinateValueOfOnChangeRecommendPlace, type CoordinateZone, type GeoPosition, type Place, type Point, type RecommendZonePlaces, type TrackPoint, type ValueOfOnChangeRecommendPlace, type Zone } from "../types/interface";
1
+ import { type CoordinateExternalRoute, type CoordinateGeoPosition, type CoordinatePlace, type CoordinatePoint, type CoordinateRecommendZonePlaces, type CoordinateTrackPoint, type CoordinateValueOfOnChangeRecommendPlace, type CoordinateZone, type ExternalRoute, type GeoPosition, type Place, type Point, type RecommendZonePlaces, type TrackPoint, type ValueOfOnChangeRecommendPlace, type Zone } from "../types/interface";
2
2
  export declare function useMapCoordinatify(): {
3
3
  coordinatifyPoint: (value: Point) => CoordinatePoint;
4
4
  unCoordinatifyPoint: (value: CoordinatePoint) => Point;
@@ -12,4 +12,5 @@ export declare function useMapCoordinatify(): {
12
12
  unCoordinatifyValueOfOnChangeRecommendPlace: (value: CoordinateValueOfOnChangeRecommendPlace) => ValueOfOnChangeRecommendPlace;
13
13
  coordinatifyGeoPosition: (value: GeoPosition) => CoordinateGeoPosition;
14
14
  unCoordinatifyTrackPoint: (value: CoordinateTrackPoint) => TrackPoint;
15
+ unCoordinatifyExternalRoute: (value: CoordinateExternalRoute) => ExternalRoute;
15
16
  };
@@ -74,6 +74,10 @@ function useMapCoordinatify() {
74
74
  const [lng, lat] = unCoordinatifyPoint(value);
75
75
  return { ...others, lng, lat };
76
76
  };
77
+ const unCoordinatifyExternalRoute = (value) => {
78
+ const { path, duration, distance } = value;
79
+ return { path: path.map(unCoordinatifyPoint), duration, distance };
80
+ };
77
81
  const coordinatifyGeoPosition = (value) => {
78
82
  return {
79
83
  ...value,
@@ -92,7 +96,8 @@ function useMapCoordinatify() {
92
96
  coordinatifyValueOfOnChangeRecommendPlace,
93
97
  unCoordinatifyValueOfOnChangeRecommendPlace,
94
98
  coordinatifyGeoPosition,
95
- unCoordinatifyTrackPoint
99
+ unCoordinatifyTrackPoint,
100
+ unCoordinatifyExternalRoute
96
101
  };
97
102
  }
98
103
  export {
@@ -549,7 +549,7 @@ var dist = {
549
549
  });
550
550
  })(dist);
551
551
  const MIN_MAP_RELOAD_INTERVAL = 5e3;
552
- const MIN_MAP_LOAD_RESET_THRESHOLD = 1e3;
552
+ const MIN_GMAP_LOAD_RESET_THRESHOLD = 1e3;
553
553
  const DEFAULT_AMAP_PLUGINS = [
554
554
  "AMap.Geocoder",
555
555
  "AMap.Driving",
@@ -608,7 +608,7 @@ const useAmapLoader = (props) => {
608
608
  if (statusRef.value === "SUCCESS")
609
609
  return Promise.resolve();
610
610
  defineSecurityOnce();
611
- throttledExecute(() => distExports.reset());
611
+ distExports.reset();
612
612
  statusRef.value = "LOADING";
613
613
  setTimeout(preloadAmapStyleOnce);
614
614
  const startTime = Date.now();
@@ -651,7 +651,7 @@ const useAmapLoader = (props) => {
651
651
  watchPostEffectForDeepOption(() => [optionsRef.value, disableRef == null ? void 0 : disableRef.value], keepRetry);
652
652
  return { statusRef, pingStatusRef, readyPromise };
653
653
  };
654
- const throttledExecute = throttle((fn) => fn(), MIN_MAP_LOAD_RESET_THRESHOLD, {
654
+ const throttledExecute = throttle((fn) => fn(), MIN_GMAP_LOAD_RESET_THRESHOLD, {
655
655
  trailing: false
656
656
  });
657
657
  const useGmapLoader = (props) => {
@@ -1,5 +1,5 @@
1
1
  import { reactive, ref, readonly } from "vue-demi";
2
- import { E as EMPTY_PLACE } from "../chunks/BusinessRecomendPlaceMap.8a4a1015.js";
2
+ import { E as EMPTY_PLACE } from "../chunks/BusinessRecomendPlaceMap.eebd0822.js";
3
3
  import { CenterPlaceStatus } from "../types/interface.js";
4
4
  import { proxyFunctionalProperty, assertAssingedBeforeUsed } from "../utils/helper.js";
5
5
  const useBusinessRecomendPlaceMap = () => {
package/dist/v2/index.js CHANGED
@@ -2,7 +2,7 @@ import "./utils/alipayPolyfill.js";
2
2
  import { isCoordinatePointEqual } from "./api/geometry.js";
3
3
  import { AbsoluteAddressBox } from "./business-components/AbsoluteAddressBox/AbsoluteAddressBox.js";
4
4
  import { BusinessQuotingMap } from "./business-components/BusinessQuotingMap/BusinessQuotingMap.js";
5
- import { B } from "./chunks/BusinessRecomendPlaceMap.8a4a1015.js";
5
+ import { B } from "./chunks/BusinessRecomendPlaceMap.eebd0822.js";
6
6
  import { BusinessReselectPlaceMap } from "./business-components/BusinessReselectPlaceMap/BusinessReselectPlaceMap.js";
7
7
  import { BusinessTaxiEndMap } from "./business-components/BusinessTaxiEndMap/BusinessTaxiEndMap.js";
8
8
  import { BusinessTaxiServiceMap } from "./business-components/BusinessTaxiServiceMap/BusinessTaxiServiceMap.js";
@@ -80,6 +80,11 @@ export interface Route {
80
80
  steps: RouteStep[];
81
81
  trafficJams?: TrafficJams;
82
82
  }
83
+ export interface ExternalRoute {
84
+ path: Point[];
85
+ duration: number;
86
+ distance: number;
87
+ }
83
88
  export interface TrackPoint {
84
89
  lng: number;
85
90
  lat: number;
@@ -90,6 +95,13 @@ export interface TrackPoint {
90
95
  export interface CoordinateTrackPoint extends TrackPoint {
91
96
  type: CoordinateType;
92
97
  }
98
+ export interface CoordinateExternalRoute extends Omit<ExternalRoute, "path"> {
99
+ path: CoordinatePoint[];
100
+ }
101
+ export type GetDriverRouteOrTrackOutput = {
102
+ routes?: CoordinateExternalRoute;
103
+ tracks?: CoordinateTrackPoint[];
104
+ };
93
105
  export type RecommendType = "Restricted" | "Forbidden" | "Recommend";
94
106
  export type DriverStatus = "dispatching" | "book-dispatching" | "dispatched" | "driverStartService" | "driverStartRelayService" | "book-driverStartService" | "book-dispatched" | "driverArrived" | "inService" | "canceled" | "endService" | "completed" | "canceling" | "banlanceRefund" | "waitBanlanceRefund" | "rechargePayed" | "waitRechargePay" | "payed" | "waitpay" | "refund" | "confirmed" | "assign" | "orderReassigned";
95
107
  export declare enum CenterPlaceStatus {
@@ -9,3 +9,12 @@ export declare const distanceBetweenTwoPoints: (from: Point, to: Point) => numbe
9
9
  * 计算折线(按顺序连接各点)总长度。
10
10
  */
11
11
  export declare const computeLineLength: (line: Point[]) => number;
12
+ /**
13
+ * 计算从起点指向终点的初始方位角(heading)。
14
+ * 说明:
15
+ * - 基于球面大圆航线计算(WGS84 半径近似),与常见地图 SDK 的 heading 含义一致
16
+ * - 返回范围为 [-180, 180](度):0 表示正北,正值为东偏北,负值为西偏南
17
+ * - 起终点经纬完全相同返回 0
18
+ * @returns 初始方位角(度)
19
+ */
20
+ export declare const computeLineAngle: (from: Point, to: Point) => number;
@@ -47,7 +47,26 @@ const computeLineLength = (line) => {
47
47
  }
48
48
  return totalLength;
49
49
  };
50
+ const computeLineAngle = (from, to) => {
51
+ const [lng1, lat1] = from;
52
+ const [lng2, lat2] = to;
53
+ if (lng1 === lng2 && lat1 === lat2)
54
+ return 0;
55
+ const toRad = (deg) => deg * Math.PI / 180;
56
+ const toDeg = (rad) => rad * 180 / Math.PI;
57
+ const phi1 = toRad(lat1);
58
+ const phi2 = toRad(lat2);
59
+ const lambda1 = toRad(lng1);
60
+ const lambda2 = toRad(lng2);
61
+ const deltaLambda = lambda2 - lambda1;
62
+ const y = Math.sin(deltaLambda) * Math.cos(phi2);
63
+ const x = Math.cos(phi1) * Math.sin(phi2) - Math.sin(phi1) * Math.cos(phi2) * Math.cos(deltaLambda);
64
+ let heading = toDeg(Math.atan2(y, x));
65
+ heading = (heading + 540) % 360 - 180;
66
+ return heading;
67
+ };
50
68
  export {
69
+ computeLineAngle,
51
70
  computeLineLength,
52
71
  distanceBetweenTwoPoints,
53
72
  pointInPolygon
@@ -1,6 +1,6 @@
1
1
  const availableLogKeys = /* @__PURE__ */ new Set();
2
2
  const pkgName = "@heycar/heycars-map";
3
- const pkgVersion = "2.14.0-walkOptimize2";
3
+ const pkgVersion = "2.15.0-domestic2";
4
4
  const spaceLogSessionKey = "wiajlf;jwiatitruiq3jrlw";
5
5
  const enableSessionLogKey = (key) => {
6
6
  const sessionParam = new URLSearchParams(sessionStorage.getItem(spaceLogSessionKey) || void 0);
@@ -4,7 +4,8 @@ export declare enum BRWOSER_PLATFORM {
4
4
  ALIPAY = "ALIPAY",
5
5
  ALIPAY_MINIPROGRAM = "ALIPAY_MINIPROGRAM",
6
6
  H5 = "H5",
7
- NODE_JS = "NODE_JS"
7
+ NODE_JS = "NODE_JS",
8
+ ENTERPRISE_WECHAT = "ENTERPRISE_WECHAT"
8
9
  }
9
10
  export declare enum OS_PLATFORM {
10
11
  IOS = "IOS",
@@ -5,6 +5,7 @@ var BRWOSER_PLATFORM = /* @__PURE__ */ ((BRWOSER_PLATFORM2) => {
5
5
  BRWOSER_PLATFORM2["ALIPAY_MINIPROGRAM"] = "ALIPAY_MINIPROGRAM";
6
6
  BRWOSER_PLATFORM2["H5"] = "H5";
7
7
  BRWOSER_PLATFORM2["NODE_JS"] = "NODE_JS";
8
+ BRWOSER_PLATFORM2["ENTERPRISE_WECHAT"] = "ENTERPRISE_WECHAT";
8
9
  return BRWOSER_PLATFORM2;
9
10
  })(BRWOSER_PLATFORM || {});
10
11
  var OS_PLATFORM = /* @__PURE__ */ ((OS_PLATFORM2) => {
@@ -39,7 +40,7 @@ const detectBrowserPlatform = () => {
39
40
  return "NODE_JS";
40
41
  const useragent = navigator.userAgent.toLowerCase();
41
42
  if (useragent.includes("micromessenger")) {
42
- return useragent.includes("miniprogram") ? "WECHAT_MINIPROGRAM" : "WECHAT";
43
+ return useragent.includes("miniprogram") ? "WECHAT_MINIPROGRAM" : useragent.includes("wxwork") ? "ENTERPRISE_WECHAT" : "WECHAT";
43
44
  }
44
45
  if (useragent.includes("alipay") || detectAlipayWallet()) {
45
46
  return useragent.includes("miniprogram") ? "ALIPAY_MINIPROGRAM" : "ALIPAY";
@@ -1,4 +1,4 @@
1
- import type { CoordinatePlace, CoordinatePoint, CoordinateRecommendZonePlaces, CoordinateTrackPoint, CoordinateType, CoordinateZone, ProxyServiceError, RecommendType } from "../types/interface";
1
+ import type { CoordinateExternalRoute, CoordinatePlace, CoordinatePoint, CoordinateRecommendZonePlaces, CoordinateTrackPoint, CoordinateType, CoordinateZone, ProxyServiceError, RecommendType } from "../types/interface";
2
2
  export declare const createTypeError: (typeName: string, value: unknown, detail?: string) => Error;
3
3
  export declare function isCoordinateType(type: unknown): type is CoordinateType;
4
4
  export declare function isRecommendType(type: unknown): type is RecommendType;
@@ -41,6 +41,12 @@ interface MaybeCoordinateTrackPoint {
41
41
  timestamp?: number | string;
42
42
  }
43
43
  export declare const toCoordinateTrackPoint: (value?: MaybeCoordinateTrackPoint) => CoordinateTrackPoint;
44
+ interface MaybeCoordinateExternalRoute {
45
+ path?: MaybeCoordinatePoint[];
46
+ duration?: number | string | null;
47
+ distance?: number | string | null;
48
+ }
49
+ export declare const toCoordinateExternalRoute: (maybeCoordinateExternalRoute?: MaybeCoordinateExternalRoute) => CoordinateExternalRoute;
44
50
  export declare function isProxyServiceError(error: unknown): error is ProxyServiceError;
45
51
  export declare function toGeolocationPositionError(error: unknown, prefix?: string): GeolocationPositionError;
46
52
  /**
@@ -107,6 +107,23 @@ const toCoordinateTrackPoint = (value) => {
107
107
  }
108
108
  return { lng, lat, type, angle, speed, timestamp };
109
109
  };
110
+ const toCoordinateExternalRoute = (maybeCoordinateExternalRoute) => {
111
+ var _a;
112
+ try {
113
+ if (!maybeCoordinateExternalRoute)
114
+ throw Error();
115
+ const duration = Number(maybeCoordinateExternalRoute.duration);
116
+ const distance = Number(maybeCoordinateExternalRoute.distance);
117
+ if (isNaN(duration) || isNaN(distance))
118
+ throw Error();
119
+ if (!Array.isArray(maybeCoordinateExternalRoute.path))
120
+ throw Error();
121
+ const path = (_a = maybeCoordinateExternalRoute.path) == null ? void 0 : _a.map(toCoordinatePointType);
122
+ return { path, duration, distance };
123
+ } catch (err) {
124
+ throw createTypeError("CoordinateExternalRoute", maybeCoordinateExternalRoute, err == null ? void 0 : err.message);
125
+ }
126
+ };
110
127
  function isProxyServiceError(error) {
111
128
  return !!error && typeof error === "object" && "msg" in error && "code" in error;
112
129
  }
@@ -172,6 +189,7 @@ export {
172
189
  isCoordinateType,
173
190
  isProxyServiceError,
174
191
  isRecommendType,
192
+ toCoordinateExternalRoute,
175
193
  toCoordinatePlaceType,
176
194
  toCoordinatePointType,
177
195
  toCoordinateRecommendZonePlacesType,
@@ -1,5 +1,5 @@
1
1
  import { createVNode } from "vue";
2
- import { B as BusinessRecomendPlaceMap } from "../chunks/BusinessRecomendPlaceMap.b30ca4e4.js";
2
+ import { B as BusinessRecomendPlaceMap } from "../chunks/BusinessRecomendPlaceMap.71c439c6.js";
3
3
  import { useBusinessRecomendPlaceMap } from "../hooks-business/useBusinessRecomendPlaceMap.js";
4
4
  import { defineSetup } from "../types/helper.js";
5
5
  import { d as demo } from "../chunks/Demo.css.e921a2f6.js";
@@ -123,6 +123,7 @@ const DemoBusinessRecomendPlace = defineSetup("DemoBusinessRecomendPlace", funct
123
123
  name: "default place name",
124
124
  displayName: "default place displayName"
125
125
  },
126
+ "enableNearbyCars": true,
126
127
  "getAvailable": () => Promise.resolve(true),
127
128
  "getRecomendPlace": getRecomendPlace,
128
129
  "renderPlacePhoto": (place) => {
@@ -1,6 +1,7 @@
1
- import { type CoordinatePlace } from "../types/interface";
1
+ import { type CoordinatePlace, type CoordinatePoint } from "../types/interface";
2
2
  export declare const DemoBusinessTaxiEnd: import("vue-demi").DefineComponent<{}, {}, {
3
3
  from: CoordinatePlace;
4
4
  to: CoordinatePlace;
5
+ path: CoordinatePoint[];
5
6
  contentHeight: number;
6
7
  }, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").PublicProps, Readonly<import("vue-demi").ExtractPropTypes<{}>>, {}, {}>;
@@ -2,6 +2,7 @@ import { createVNode, createTextVNode } from "vue";
2
2
  import { defineComponent } from "vue-demi";
3
3
  import { BusinessTaxiEndMap } from "../business-components/BusinessTaxiEndMap/BusinessTaxiEndMap.js";
4
4
  import { l as layout, a as adjustedDemo } from "../chunks/Demo.css.e921a2f6.js";
5
+ import { mockPath } from "./demo.data.mock.js";
5
6
  const DemoBusinessTaxiEnd = /* @__PURE__ */ defineComponent({
6
7
  name: "DemoBusinessTaxiEnd",
7
8
  data() {
@@ -20,6 +21,7 @@ const DemoBusinessTaxiEnd = /* @__PURE__ */ defineComponent({
20
21
  displayName: "",
21
22
  type: "wgs84"
22
23
  },
24
+ path: [],
23
25
  contentHeight: 200
24
26
  };
25
27
  },
@@ -43,19 +45,24 @@ const DemoBusinessTaxiEnd = /* @__PURE__ */ defineComponent({
43
45
  setTimeout(() => {
44
46
  this.contentHeight = 600;
45
47
  }, 2500);
48
+ setTimeout(() => {
49
+ this.path = [...mockPath];
50
+ }, 3500);
46
51
  },
47
52
  render() {
48
53
  const {
49
54
  from,
50
55
  to,
51
- contentHeight
56
+ contentHeight,
57
+ path
52
58
  } = this;
53
59
  return createVNode("div", {
54
60
  "class": layout
55
61
  }, [createVNode("div", null, [JSON.stringify(from), createTextVNode(" | "), JSON.stringify(to)]), createVNode(BusinessTaxiEndMap, {
56
62
  "class": adjustedDemo,
57
63
  "from": from,
58
- "to": to
64
+ "to": to,
65
+ "path": path
59
66
  }, null), createVNode("div", {
60
67
  "style": {
61
68
  height: `${contentHeight}px`
@@ -1,4 +1,4 @@
1
- import { type CoordinatePlace, type CoordinateTrackPoint, type DriverStatus } from "../types/interface";
1
+ import { type CoordinatePlace, type CoordinatePoint, type CoordinateTrackPoint, type DriverStatus, type GetDriverRouteOrTrackOutput } from "../types/interface";
2
2
  export declare const DemoBusinessTaxiService: import("vue-demi").DefineComponent<{}, {
3
3
  mapContext: import("../hooks-business/useBusinessTaxiServiceMap").BusinessTaxiServiceContext;
4
4
  }, {
@@ -7,6 +7,9 @@ export declare const DemoBusinessTaxiService: import("vue-demi").DefineComponent
7
7
  relayTo: Partial<CoordinatePlace>;
8
8
  status: DriverStatus;
9
9
  contentHeight: number;
10
+ confirmedPath: CoordinatePoint[];
11
+ endServicePath: CoordinatePoint[];
10
12
  }, {}, {
11
13
  getDriverPositionTrack(): Promise<CoordinateTrackPoint[]>;
14
+ getDriverRouteOrTrack(): Promise<GetDriverRouteOrTrackOutput>;
12
15
  }, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, {}, string, import("vue-demi").PublicProps, Readonly<import("vue-demi").ExtractPropTypes<{}>>, {}, {}>;