@heycar/heycars-map 0.9.1 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -9,7 +9,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
9
9
  const Vue = require("vue");
10
10
  const style = "";
11
11
  const name = "@heycar/heycars-map";
12
- const version = "0.9.1";
12
+ const version = "0.9.4";
13
13
  const type = "module";
14
14
  const scripts = {
15
15
  dev: "vite -c vite.config.dev.ts",
@@ -1100,16 +1100,16 @@ const isPlace = (place) => {
1100
1100
  return place.lng !== void 0 && place.lat !== void 0;
1101
1101
  };
1102
1102
  const sleep = (milliSeconds) => new Promise((resolve) => setTimeout(resolve, milliSeconds));
1103
- const assertPoint = (point) => {
1103
+ function assertPoint(point) {
1104
1104
  if (Array.isArray(point) && point.length === 2 && typeof point[0] === "number" && typeof point[1] === "number")
1105
1105
  return;
1106
1106
  throw new Error(`Assertion Error: expect type [number, number], actual is ${point}`);
1107
- };
1108
- const assertAngle = (angle) => {
1107
+ }
1108
+ function assertAngle(angle) {
1109
1109
  if (typeof angle === "number" || typeof angle === "undefined")
1110
1110
  return;
1111
1111
  throw new Error(`Assertion Error: expect type number | undefined, actual is ${angle}`);
1112
- };
1112
+ }
1113
1113
  const isLatLngLiteral = (value) => {
1114
1114
  return value != null && typeof value === "object" && Number.isFinite(value.lat) && Number.isFinite(value.lng);
1115
1115
  };
@@ -1155,6 +1155,18 @@ const pausableSleep = (milliSeconds) => {
1155
1155
  };
1156
1156
  return { sleepPromise: sleepDefered, pause, restart };
1157
1157
  };
1158
+ const MAX_ANIMATION_DISTANCE_VW = 300;
1159
+ const MIN_ANIMATION_DURATION = 300;
1160
+ const ANIMATION_DURATION_FOR_100VW = 200;
1161
+ const ANIMATION_DURATION_PER_ZOOM = 400;
1162
+ const BEIJIN_POINT = [116.2317, 39.5427];
1163
+ const ZINDEX_BUBBLE_LAYER = 50;
1164
+ const ZINDEX_START_END_LOGO_LAYER = 40;
1165
+ const ZINDEX_PLACE_LAYER = 30;
1166
+ const ZINDEX_CAR_LAYER = 21;
1167
+ const ZINDEX_PASSENGER_LAYER = 20;
1168
+ const ZINDEX_LINE_LAYER = 12;
1169
+ const ZINDEX_GREEN_ZONE = 10;
1158
1170
  const vec2lnglat = ([lng, lat]) => ({
1159
1171
  lng: Number(lng),
1160
1172
  lat: Number(lat)
@@ -1226,6 +1238,9 @@ const isGeoPositionEqual = (p1, p2) => {
1226
1238
  return false;
1227
1239
  return p1.coords.longitude === p2.coords.longitude && p1.coords.latitude === p2.coords.latitude;
1228
1240
  };
1241
+ const isZoneEqual = (z1, z2) => {
1242
+ return z1.path.every((point, idx) => isPointEqual(point, z2 == null ? void 0 : z2.path[idx]));
1243
+ };
1229
1244
  const amapPlaceName2DisplayName = (name2, options) => {
1230
1245
  const { isChina, province, city, district, township } = options;
1231
1246
  if (!name2)
@@ -1240,14 +1255,30 @@ const amapPlaceName2DisplayName = (name2, options) => {
1240
1255
  }
1241
1256
  return result;
1242
1257
  };
1258
+ const distanceVw2animationDuration = (distance) => {
1259
+ return Math.max(MIN_ANIMATION_DURATION, ANIMATION_DURATION_FOR_100VW * distance / 100);
1260
+ };
1261
+ const deltaZoom2animationDuration = (deltaZoom) => {
1262
+ return Math.max(MIN_ANIMATION_DURATION * 4, Math.abs(deltaZoom) * ANIMATION_DURATION_PER_ZOOM);
1263
+ };
1264
+ const throwTypeError = (typeName, value, detail) => {
1265
+ if (detail)
1266
+ new Error(
1267
+ `MyTypeError: expect type: ${typeName}, but received: ${JSON.stringify(
1268
+ value
1269
+ )}
1270
+ Type Error Details: ${detail}`
1271
+ );
1272
+ throw new Error(`MyTypeError: expect type: ${typeName}, but received: ${JSON.stringify(value)}`);
1273
+ };
1243
1274
  const toPlaceType = (maybePlace) => {
1244
1275
  var _a;
1245
1276
  const lng = Number(maybePlace.lng);
1246
1277
  if (isNaN(lng))
1247
- throw new Error("MyError: expect lng to be number");
1278
+ throwTypeError("Place", maybePlace, "lng is not number");
1248
1279
  const lat = Number(maybePlace.lat);
1249
1280
  if (isNaN(lat))
1250
- throw new Error("MyError: expect lat to be number");
1281
+ throwTypeError("Place", maybePlace, "lat is not number");
1251
1282
  return {
1252
1283
  lng,
1253
1284
  lat,
@@ -1255,6 +1286,37 @@ const toPlaceType = (maybePlace) => {
1255
1286
  displayName: (_a = maybePlace.displayName) != null ? _a : maybePlace.name
1256
1287
  };
1257
1288
  };
1289
+ const toPointType = (maybePoint) => {
1290
+ const lng = Number(maybePoint == null ? void 0 : maybePoint[0]);
1291
+ const lat = Number(maybePoint == null ? void 0 : maybePoint[1]);
1292
+ if (isNaN(lat) || isNaN(lng))
1293
+ throwTypeError("Point", maybePoint);
1294
+ return [lng, lat];
1295
+ };
1296
+ const toZoneType = (maybeZone) => {
1297
+ try {
1298
+ if (!maybeZone)
1299
+ throwTypeError("Zone", maybeZone);
1300
+ const { name: name2 = "", path } = maybeZone;
1301
+ if (!Array.isArray(path))
1302
+ throwTypeError("Zone", maybeZone);
1303
+ return { name: name2, path: path.map(toPointType) };
1304
+ } catch (err) {
1305
+ return throwTypeError("Zone", maybeZone, err == null ? void 0 : err.message);
1306
+ }
1307
+ };
1308
+ const toRecommendZonePlacesType = (maybeRecomendZonePlaces) => {
1309
+ try {
1310
+ const { available, zone, places } = maybeRecomendZonePlaces;
1311
+ return {
1312
+ available: !!available,
1313
+ zone: zone === void 0 ? zone : toZoneType(zone),
1314
+ places: places === void 0 ? places : places.map(toPlaceType)
1315
+ };
1316
+ } catch (err) {
1317
+ return throwTypeError("RecommendZonePlaces", maybeRecomendZonePlaces, err == null ? void 0 : err.message);
1318
+ }
1319
+ };
1258
1320
  const wxGetLocationSuccessResponse2GeolocationPosition = (res) => {
1259
1321
  const { longitude, latitude, accuracy } = res;
1260
1322
  const speed = Number(res.speed);
@@ -2245,15 +2307,6 @@ function detectWebGL() {
2245
2307
  }
2246
2308
  return "NOT_SUPPORTED";
2247
2309
  }
2248
- const MAX_ANIMATION_DISTANCE_VW = 100;
2249
- const BEIJIN_POINT = [116.2317, 39.5427];
2250
- const ZINDEX_BUBBLE_LAYER = 50;
2251
- const ZINDEX_START_END_LOGO_LAYER = 40;
2252
- const ZINDEX_PLACE_LAYER = 30;
2253
- const ZINDEX_CAR_LAYER = 21;
2254
- const ZINDEX_PASSENGER_LAYER = 20;
2255
- const ZINDEX_LINE_LAYER = 12;
2256
- const ZINDEX_GREEN_ZONE = 10;
2257
2310
  const useAmapLngLatToVw = (props) => {
2258
2311
  const apiMapLngLatToVw = (point) => {
2259
2312
  const amap2 = props.mapRef.value;
@@ -2389,8 +2442,13 @@ const Amap = defineSetup(function Amap2(props, { slots, emit }) {
2389
2442
  const map = mapRef.value;
2390
2443
  if (!center || !map)
2391
2444
  return;
2392
- const immediately = prevCenter ? apiMapDistanceVwOfPoints(center, prevCenter) > MAX_ANIMATION_DISTANCE_VW : true;
2393
- map.setCenter(center, immediately);
2445
+ if (!prevCenter)
2446
+ return map.setCenter(center, true);
2447
+ const distanceVw = apiMapDistanceVwOfPoints(center, prevCenter);
2448
+ if (distanceVw > MAX_ANIMATION_DISTANCE_VW)
2449
+ return map.setCenter(center, true);
2450
+ const duration = distanceVw2animationDuration(distanceVw);
2451
+ map.setCenter(center, false, duration);
2394
2452
  }
2395
2453
  );
2396
2454
  Vue.watch(
@@ -3334,7 +3392,9 @@ const InterruptableIntervalFitView = defineSetup(function InterruptableIntervalF
3334
3392
  });
3335
3393
  return () => null;
3336
3394
  });
3395
+ const imgEndPointEn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsLXJ1bGU9Im5vbnplcm8iIGZpbGw9Im5vbmUiPjxwYXRoIGQ9Ik0xMiAzMGMyLjEzNCAwIDMuODYzLS44OTMgMy44NjMtMS45OTUgMC0xLjEtMS43My0xLjk5NC0zLjg2My0xLjk5NC0yLjEzNCAwLTMuODYzLjg5My0zLjg2MyAxLjk5NEM4LjEzNyAyOS4xMDcgOS44NjcgMzAgMTIgMzB6IiBmaWxsLW9wYWNpdHk9Ii41IiBmaWxsPSIjNDM0ODVBIi8+PHBhdGggZD0iTTExIDI3LjAwNmMyLjEyOCAwLS45LTMuNzQzIDUuNjIxLTYuNjQzQzE5Ljg0MiAxOC40NTMgMjIgMTQuOTUzIDIyIDEwLjk1IDIyIDQuOTAyIDE3LjA3NSAwIDExIDBTMCA0LjkwMiAwIDEwLjk1YzAgMy45MTggMi4wNjggNy4zNTYgNS4xNzcgOS4yOUMxMS43NSAyMy4yODQgOS4wNiAyNy4wMDcgMTEgMjcuMDA3di0uMDAxeiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiLz48ZyBmaWxsPSIjRkZGIj48cGF0aCBkPSJNOC44OTMgMTIuNjY2SDYuNjYzdjEuMzY1aDIuNTc0di45NTJoLTMuNjZ2LTUuNDloMy41Nzh2Ljk0Nkg2LjY2M3YxLjI5aDIuMjI5ek0xMi4yNzUgMTEuMDAxYy40MyAwIC43Ny4xNDEgMS4wMi40MjQuMjUuMjgyLjM3NS42OTMuMzc1IDEuMjMzdjIuMzI1aC0xLjA0M3YtMS45ODdjMC0uNzEtLjIzNS0xLjA2NS0uNzA1LTEuMDY1YS43MzIuNzMyIDAgMDAtLjYwMy4yODljLS4xNTMuMTkyLS4yMjkuNDYzLS4yMjkuODEzdjEuOTVoLTEuMDQzdi0zLjg4NWguOTE1Yy4wMjUuMzA1LjA0OC41MTMuMDY4LjYyMy4yNS0uNDguNjY1LS43MiAxLjI0NS0uNzJ6TTE3LjI3NyA5LjI3NmgxLjA0M3Y1LjcwN2gtLjkxNWMtLjAyNS0uMjktLjA0NS0uNDg1LS4wNi0uNTg1YTEuMzE3IDEuMzE3IDAgMDEtLjUyOS41MDcgMS41MiAxLjUyIDAgMDEtLjcwOS4xNjhjLS4zMiAwLS42MTItLjA4LS44NzctLjI0YTEuNzI0IDEuNzI0IDAgMDEtLjYzOC0uN2MtLjE2LS4zMDgtLjI0LS42NzItLjI0LTEuMDkyIDAtLjQyNS4wOC0uNzkxLjI0LTEuMDk5LjE2LS4zMDcuMzczLS41NDEuNjM4LS43MDEuMjY1LS4xNi41NTctLjI0Ljg3Ny0uMjQuMjM1IDAgLjQ1NC4wNDcuNjU3LjE0Mi4yMDIuMDk1LjM3My4yNC41MTMuNDM1VjkuMjc2em0tLjkzIDQuOTA1Yy4yNiAwIC40OC0uMDk1LjY2LS4yODUuMTgtLjE5LjI3LS40NzUuMjctLjg1NSAwLS4zNzUtLjA5LS42NTQtLjI3LS44MzZhLjg5Mi44OTIgMCAwMC0uNjYtLjI3NC44MzIuODMyIDAgMDAtLjY2My4yOTJjLS4xNjguMTk1LS4yNTEuNDY4LS4yNTEuODE4IDAgLjM1LjA4My42MjcuMjUuODMyYS44MTUuODE1IDAgMDAuNjY1LjMwOHoiLz48L2c+PC9nPjwvc3ZnPg==";
3337
3396
  const imgEndPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSI3Mi4zMzklIiB5MT0iNTAlIiB4Mj0iMCUiIHkyPSI1MCUiIGlkPSJwcmVmaXhfX2EiPjxzdG9wIHN0b3AtY29sb3I9IiNGRjg0NDciIG9mZnNldD0iMCUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkY4QjRBIiBvZmZzZXQ9IjUwLjU5NiUiLz48c3RvcCBzdG9wLWNvbG9yPSIjRkZBOTVBIiBvZmZzZXQ9IjEwMCUiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0xMiAzMC4yMTVjMi4xMzQgMCAzLjg2My0uODkzIDMuODYzLTEuOTk1IDAtMS4xLTEuNzMtMS45OTQtMy44NjMtMS45OTQtMi4xMzQgMC0zLjg2My44OTMtMy44NjMgMS45OTQgMCAxLjEwMiAxLjczIDEuOTk1IDMuODYzIDEuOTk1eiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyNy4wMDZjMi4xMjggMC0uOS0zLjc0MyA1LjYyMS02LjY0M0MxOS44NDIgMTguNDUzIDIyIDE0Ljk1MyAyMiAxMC45NSAyMiA0LjkwMiAxNy4wNzUgMCAxMSAwUzAgNC45MDIgMCAxMC45NWMwIDMuOTE4IDIuMDY4IDcuMzU2IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjg0IDkuMDYgMjcuMDA3IDExIDI3LjAwN3oiIHN0cm9rZT0iI0ZGRiIgZmlsbD0idXJsKCNwcmVmaXhfX2EpIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSIvPjx0ZXh0IGZvbnQtZmFtaWx5PSJQaW5nRmFuZ1NDLVNlbWlib2xkLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZm9udC13ZWlnaHQ9IjUwMCIgZmlsbD0iI0ZGRiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxLjIxNSkiPjx0c3BhbiB4PSI1IiB5PSIxNS40NDkiPue7iDwvdHNwYW4+PC90ZXh0PjwvZz48L3N2Zz4=";
3397
+ const imgStartPointEn = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSJub25lIj48cGF0aCBkPSJNMTIgMzBjMS45NSAwIDMuNTMyLS44MTYgMy41MzItMS44MjMgMC0xLjAwNy0xLjU4MS0xLjgyMy0zLjUzMi0xLjgyMy0xLjk1IDAtMy41MzIuODE2LTMuNTMyIDEuODIzQzguNDY4IDI5LjE4NCAxMC4wNDkgMzAgMTIgMzB6IiBmaWxsLW9wYWNpdHk9Ii41IiBmaWxsPSIjNDM0ODVBIi8+PHBhdGggZD0iTTExIDI3YzIuMTI4IDAtLjktMy43NDIgNS42MjEtNi42NDEgMy4yMjEtMS45MSA1LjM3OS01LjQxIDUuMzc5LTkuNDEyQzIyIDQuOTAxIDE3LjA3NSAwIDExIDBTMCA0LjkwMSAwIDEwLjk0N2MwIDMuOTE4IDIuMDY4IDcuMzU1IDUuMTc3IDkuMjlDMTEuNzUgMjMuMjc3IDkuMDYgMjcgMTEgMjd6IiBzdHJva2U9IiNGRkYiIGZpbGw9InVybCgjcHJlZml4X19hKSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMSAxKSIvPjxnIGZpbGw9IiNGRkYiPjxwYXRoIGQ9Ik03LjU1IDEzLjM5M2MwIC4zNzUtLjA5Ni42OS0uMjg5Ljk0MmExLjcgMS43IDAgMDEtLjc1LjU1OGMtLjMwNy4xMi0uNjM2LjE4LS45ODYuMTgtLjUxIDAtLjk3LS4xMTgtMS4zOC0uMzU2YTEuNzI2IDEuNzI2IDAgMDEtLjgxNy0xLjAwOWwuODg1LS41MDJjLjEyLjI4LjI5NS40OTcuNTI1LjY1Mi4yMy4xNTUuNTA1LjIzMy44MjUuMjMzLjI2IDAgLjQ2Ni0uMDUzLjYxOC0uMTU4YS41Mi41MiAwIDAwLjIyOS0uNDU3LjU0Ni41NDYgMCAwMC0uMTU0LS4zOTggMS4wNzcgMS4wNzcgMCAwMC0uMzgyLS4yNDcgOC41MTUgOC41MTUgMCAwMC0uNjI3LS4yMSA2LjgwNyA2LjgwNyAwIDAxLS44Ny0uMzExIDEuNTMyIDEuNTMyIDAgMDEtLjU3Ny0uNDYyYy0uMTYtLjIwNS0uMjQtLjQ3NS0uMjQtLjgxIDAtLjM1NS4wOTQtLjY1Ni4yODEtLjkwMy4xODgtLjI0OC40MzUtLjQzMy43NDMtLjU1NWEyLjY2IDIuNjYgMCAwMS45OTMtLjE4NGMuNDg1IDAgLjkuMTEgMS4yNDUuMzMuMzQ1LjIyLjU2OC41MTcuNjY4Ljg5MmwtLjg4NS41MDNhMS4xOTUgMS4xOTUgMCAwMC0uNDA1LS41NTEgMS4xMDggMS4xMDggMCAwMC0uNjc1LS4xOTljLS4yNDUgMC0uNDQ0LjA1Ni0uNTk2LjE2OWEuNTI4LjUyOCAwIDAwLS4yMjkuNDQ2YzAgLjE0LjA0Ny4yNTYuMTQyLjM0OS4wOTUuMDkyLjIxNy4xNjcuMzY0LjIyNS4xNDguMDU3LjM0Ni4xMjMuNTk2LjE5OC4zNi4xMDUuNjU4LjIxMi44OTMuMzIuMjM1LjEwNy40MzYuMjY3LjYwNC40OC4xNjcuMjEyLjI1MS40OS4yNTEuODM1ek0xMC42OTUgMTQuNzU4Yy0uMjU1LjIxLS42MS4zMTUtMS4wNjUuMzE1LS40MiAwLS43NTktLjExLTEuMDE2LS4zMzMtLjI1OC0uMjIzLS4zODctLjYyMi0uMzg3LTEuMTk3di0xLjU2N2gtLjY5di0uODc4aC42OVY5LjkwNkg5LjI3djEuMTkyaDEuMTd2Ljg3OEg5LjI3djEuMzk1YzAgLjI2LjA0NS40NTcuMTM1LjU5Mi4wOS4xMzUuMjM1LjIwMy40MzUuMjAzLjE3NSAwIC4zNC0uMDUzLjQ5NS0uMTU4bC4zNi43NXpNMTIuNjEgMTEuMDAxYy41MjUgMCAuOTM1LjE0OSAxLjIzLjQ0Ni4yOTUuMjk4LjQ0My43MjEuNDQzIDEuMjcxdjIuMjY1aC0uODc4YTUuMjI5IDUuMjI5IDAgMDEtLjAxOS0uMTk4IDEuOTEzIDEuOTEzIDAgMDAtLjAzMy0uMjQ0Yy0uMTE1LjE4LS4yNjQuMzE0LS40NDcuNDAxYTEuNTI1IDEuNTI1IDAgMDEtLjY2NC4xMzFjLS4yNyAwLS41MTYtLjA0Ny0uNzM4LS4xNDJhMS4yMjEgMS4yMjEgMCAwMS0uNTI5LS40MTYgMS4wODkgMS4wODkgMCAwMS0uMTk1LS42NDljMC0uMjYuMDc0LS40ODYuMjIxLS42NzlhMS40MyAxLjQzIDAgMDEuNTk3LS40NDYgMi4xMSAyLjExIDAgMDEuODI1LS4xNThjLjI3IDAgLjU0Ny4wNDUuODMyLjEzNS0uMDE1LS41NzUtLjI2LS44NjItLjczNS0uODYyLS4zOCAwLS42NTcuMTctLjgzMi41MWwtLjc0My0uNDI4Yy4xNC0uMjkuMzU1LS41MTguNjQ1LS42ODYuMjktLjE2Ny42My0uMjUxIDEuMDItLjI1MXptLjY0NSAyLjQwN2EyLjg1IDIuODUgMCAwMC0uNjUyLS4wOWMtLjI0NSAwLS40MzUuMDQ0LS41Ny4xMzJhLjQxOC40MTggMCAwMC0uMjAzLjM3MWMwIC4xNDUuMDU0LjI1Ny4xNjEuMzM3YS42OC42OCAwIDAwLjQxNy4xMi45Ni45NiAwIDAwLjU5Mi0uMTkuNjI0LjYyNCAwIDAwLjI1NS0uNTN2LS4xNXpNMTcuMDYgMTEuMDAxYy4xNSAwIC4yOS4wMjIuNDIuMDY3LjEzLjA0NS4yMy4xMDMuMy4xNzNsLS40MDUuODAyYS43NTkuNzU5IDAgMDAtLjQ0My0uMTM1Ljc2Mi43NjIgMCAwMC0uNjQ4LjMzOGMtLjE2My4yMjUtLjI0NC41MzUtLjI0NC45M3YxLjgwN2gtMS4wNDN2LTMuODg1aC45MTVjLjAyNS4zLjA0OC41MDUuMDY4LjYxNWExLjI5IDEuMjkgMCAwMS40NS0uNTMyYy4xODUtLjEyLjM5NS0uMTguNjMtLjE4ek0yMC45NDggMTQuNzU4Yy0uMjU2LjIxLS42MS4zMTUtMS4wNjYuMzE1LS40MiAwLS43NTgtLjExLTEuMDE2LS4zMzMtLjI1Ny0uMjIzLS4zODYtLjYyMi0uMzg2LTEuMTk3di0xLjU2N2gtLjY5di0uODc4aC42OVY5LjkwNmgxLjA0MnYxLjE5MmgxLjE3di44NzhoLTEuMTd2MS4zOTVjMCAuMjYuMDQ1LjQ1Ny4xMzUuNTkyLjA5LjEzNS4yMzUuMjAzLjQzNS4yMDMuMTc1IDAgLjM0LS4wNTMuNDk1LS4xNThsLjM2Ljc1eiIvPjwvZz48L2c+PC9zdmc+";
3338
3398
  const imgStartPoint = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IHgxPSIwJSIgeTE9IjUwJSIgeDI9IjEyOS41OTklIiB5Mj0iNTAlIiBpZD0icHJlZml4X19hIj48c3RvcCBzdG9wLWNvbG9yPSIjMzZBOEZGIiBvZmZzZXQ9IjAlIi8+PHN0b3Agc3RvcC1jb2xvcj0iIzQ4NzFGMSIgb2Zmc2V0PSIxMDAlIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48cGF0aCBkPSJNMTIgMzAuMjE1YzEuOTUgMCAzLjUzMi0uODE2IDMuNTMyLTEuODIzIDAtMS4wMDctMS41ODEtMS44MjMtMy41MzItMS44MjMtMS45NSAwLTMuNTMyLjgxNi0zLjUzMiAxLjgyMyAwIDEuMDA3IDEuNTgxIDEuODIzIDMuNTMyIDEuODIzeiIgZmlsbC1vcGFjaXR5PSIuNSIgZmlsbD0iIzQzNDg1QSIvPjxwYXRoIGQ9Ik0xMSAyN2MyLjEyOCAwLS45LTMuNzQyIDUuNjIxLTYuNjQxIDMuMjIxLTEuOTEgNS4zNzktNS40MSA1LjM3OS05LjQxMkMyMiA0LjkwMSAxNy4wNzUgMCAxMSAwUzAgNC45MDEgMCAxMC45NDdjMCAzLjkxOCAyLjA2OCA3LjM1NSA1LjE3NyA5LjI5QzExLjc1IDIzLjI3NyA5LjA2IDI3IDExIDI3eiIgc3Ryb2tlPSIjRkZGIiBmaWxsPSJ1cmwoI3ByZWZpeF9fYSkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMS4yMTUpIi8+PHRleHQgZm9udC1mYW1pbHk9IlBpbmdGYW5nU0MtU2VtaWJvbGQsIFBpbmdGYW5nIFNDIiBmb250LXNpemU9IjEyIiBmb250LXdlaWdodD0iNTAwIiBmaWxsPSIjRkZGIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxIDEuMjE1KSI+PHRzcGFuIHg9IjUiIHk9IjE1LjYyNCI+6LW3PC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg==";
3339
3399
  const StartEndPoint_css_ts_vanilla = "";
3340
3400
  var arrowRight = createRuntimeFn({ defaultClassName: "_4a4ovka", variantClassNames: { withArrow: { true: "_4a4ovkb", false: "_4a4ovkc" } }, defaultVariants: {}, compoundVariants: [] });
@@ -3354,9 +3414,10 @@ const AStartEndPoint = defineSetup(function AStartEndPoint2(props, {
3354
3414
  withArrow = false,
3355
3415
  title,
3356
3416
  description,
3357
- type: type2
3417
+ type: type2,
3418
+ language
3358
3419
  } = props;
3359
- const icon = type2 === "start" ? imgStartPoint : imgEndPoint;
3420
+ const icon = type2 === "start" ? language === "zh" ? imgStartPoint : imgStartPointEn : language === "zh" ? imgEndPoint : imgEndPointEn;
3360
3421
  const descriptionRow = !description ? "" : decodeAsterisk(description).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize$1}">${item.value}</span>`).join("");
3361
3422
  if (!description && !title)
3362
3423
  return `<img class="AStartEndPoint ${pointIcon({
@@ -3421,9 +3482,10 @@ const GStartEndPoint = defineSetup(function GStartEndPoint2(props, {
3421
3482
  withArrow = false,
3422
3483
  title,
3423
3484
  description,
3424
- type: type2
3485
+ type: type2,
3486
+ language = "zh"
3425
3487
  } = props;
3426
- const icon = type2 === "start" ? imgStartPoint : imgEndPoint;
3488
+ const icon = type2 === "start" ? language === "zh" ? imgStartPoint : imgStartPointEn : language === "zh" ? imgEndPoint : imgEndPointEn;
3427
3489
  const descriptionRow = !description ? "" : decodeAsterisk(description).map((item) => item.type === "normal" ? item.value : `<span class="${pointInfoBoxEmphasize$1}">${item.value}</span>`).join("");
3428
3490
  if (!description && !title)
3429
3491
  return createDom("img", {
@@ -3505,6 +3567,9 @@ const BusinessQuotingMap = defineLagecySetup(function BusinessQuotingMap2(props,
3505
3567
  mapRef,
3506
3568
  renderDescription
3507
3569
  } = props;
3570
+ const {
3571
+ language
3572
+ } = useMapSupplier();
3508
3573
  const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
3509
3574
  const deferedSetFitView = pipeDefer(registerOverlay.setFitView);
3510
3575
  return () => {
@@ -3533,7 +3598,8 @@ const BusinessQuotingMap = defineLagecySetup(function BusinessQuotingMap2(props,
3533
3598
  "position": from,
3534
3599
  "title": fromPlace.displayName,
3535
3600
  "description": fromDescription,
3536
- "withArrow": true
3601
+ "withArrow": true,
3602
+ "language": language
3537
3603
  },
3538
3604
  "on": {
3539
3605
  "click": () => emit("clickStartPoint", fromPlace)
@@ -3560,7 +3626,8 @@ const BusinessQuotingMap = defineLagecySetup(function BusinessQuotingMap2(props,
3560
3626
  distance,
3561
3627
  duration
3562
3628
  }),
3563
- "withArrow": true
3629
+ "withArrow": true,
3630
+ "language": language
3564
3631
  },
3565
3632
  "on": {
3566
3633
  "click": () => emit("clickEndPoint", toPlace)
@@ -3989,8 +4056,6 @@ const useGeoLocation = (props) => {
3989
4056
  geoReady: readyRef
3990
4057
  };
3991
4058
  };
3992
- const MAX_AMAP_PAN_TO_ANIMATE_DURATION = 500;
3993
- const MIN_AMAP_PAN_TO_ANIMATE_DURATION = 100;
3994
4059
  const useHeycarAmap = () => {
3995
4060
  const amapRef = Vue.shallowRef();
3996
4061
  const amapElementRef = Vue.shallowRef();
@@ -4007,10 +4072,7 @@ const useHeycarAmap = () => {
4007
4072
  const distanceVw = apiMapDistanceVwOfPoints(value, [lng, lat]);
4008
4073
  const shouldAnimate = distanceVw < MAX_ANIMATION_DISTANCE_VW;
4009
4074
  if (shouldAnimate) {
4010
- const duration = Math.max(
4011
- MIN_AMAP_PAN_TO_ANIMATE_DURATION,
4012
- Math.floor(MAX_AMAP_PAN_TO_ANIMATE_DURATION * distanceVw / MAX_ANIMATION_DISTANCE_VW)
4013
- );
4075
+ const duration = distanceVw2animationDuration(distanceVw);
4014
4076
  amap2.panTo(value, duration);
4015
4077
  await sleep(duration);
4016
4078
  } else {
@@ -4136,6 +4198,49 @@ const useMapDrag = (props) => {
4136
4198
  const { supplier } = useMapSupplier();
4137
4199
  return supplier === "gmap" ? useGmapDrag(props) : useAmapDrag(props);
4138
4200
  };
4201
+ const useAmapGeometry = () => {
4202
+ const payload = useMapSupplier();
4203
+ const apiMapDistance = (from, to) => {
4204
+ if (payload.status !== Status.SUCCESS)
4205
+ return void 0;
4206
+ return AMap.GeometryUtil.distance(from, to);
4207
+ };
4208
+ const apiMapDistanceToLine = (from, line) => {
4209
+ if (payload.status !== Status.SUCCESS)
4210
+ return void 0;
4211
+ return AMap.GeometryUtil.distanceToLine(from, line);
4212
+ };
4213
+ const apiMapIsPointInRing = (point, path) => {
4214
+ if (payload.status !== Status.SUCCESS)
4215
+ return void 0;
4216
+ return AMap.GeometryUtil.isPointInRing(point, path);
4217
+ };
4218
+ return { apiMapDistance, apiMapDistanceToLine, apiMapIsPointInRing };
4219
+ };
4220
+ const useGmapGeometry = () => {
4221
+ const payload = useMapSupplier();
4222
+ const apiMapDistance = (from, to) => {
4223
+ if (payload.status !== Status.SUCCESS)
4224
+ return void 0;
4225
+ return google.maps.geometry.spherical.computeDistanceBetween(vec2lnglat(from), vec2lnglat(to));
4226
+ };
4227
+ const apiMapDistanceToLine = (from, line) => {
4228
+ if (payload.status !== Status.SUCCESS)
4229
+ return void 0;
4230
+ return 0;
4231
+ };
4232
+ const apiMapIsPointInRing = (point, path) => {
4233
+ if (payload.status !== Status.SUCCESS)
4234
+ return void 0;
4235
+ const polygon = new google.maps.Polygon({ paths: path.map(vec2lnglat) });
4236
+ return google.maps.geometry.poly.containsLocation(vec2lnglat(point), polygon);
4237
+ };
4238
+ return { apiMapDistance, apiMapDistanceToLine, apiMapIsPointInRing };
4239
+ };
4240
+ const useMapGeometry = () => {
4241
+ const { supplier } = useMapSupplier();
4242
+ return supplier === "gmap" ? useGmapGeometry() : useAmapGeometry();
4243
+ };
4139
4244
  const chinaBounds = [
4140
4245
  [
4141
4246
  108.03446,
@@ -5655,12 +5760,9 @@ const useAmapPlace = (props) => {
5655
5760
  place.name = value.name;
5656
5761
  place.displayName = value.displayName;
5657
5762
  };
5658
- Vue.watch(
5659
- () => [placeKey.value],
5660
- async () => {
5661
- await readyPromise;
5763
+ const getPlaceByRegeo = ([lng, lat]) => {
5764
+ return new Promise((resolve, reject) => {
5662
5765
  const geocoder = new AMap.Geocoder({ lang: language === "en" ? "en" : "zh_cn" });
5663
- const [lng, lat] = pointRef.value;
5664
5766
  const isChina = inChina([lng, lat]);
5665
5767
  geocoder.getAddress(new AMap.LngLat(lng, lat), (status, result) => {
5666
5768
  switch (status) {
@@ -5668,30 +5770,30 @@ const useAmapPlace = (props) => {
5668
5770
  const { formattedAddress, addressComponent } = result.regeocode;
5669
5771
  const name2 = formattedAddress ? formattedAddress : emptyPlaceName;
5670
5772
  const displayName = amapPlaceName2DisplayName(name2, { isChina, ...addressComponent });
5671
- place.name = name2;
5672
- place.displayName = displayName;
5673
- place.lng = lng;
5674
- place.lat = lat;
5675
- onChange == null ? void 0 : onChange({ lng, lat, name: name2, displayName });
5773
+ resolve({ lng, lat, name: name2, displayName });
5676
5774
  return;
5677
5775
  }
5678
5776
  case "no_data": {
5679
5777
  const name2 = emptyPlaceName;
5680
5778
  const displayName = emptyPlaceName;
5681
- place.name = name2;
5682
- place.displayName = displayName;
5683
- place.lng = lng;
5684
- place.lat = lat;
5685
- onChange == null ? void 0 : onChange({ lng, lat, name: name2, displayName });
5779
+ resolve({ lng, lat, name: name2, displayName });
5686
5780
  return;
5687
5781
  }
5688
5782
  case "error":
5689
- throw result;
5783
+ reject(result);
5690
5784
  }
5691
5785
  });
5786
+ });
5787
+ };
5788
+ Vue.watch(
5789
+ () => [placeKey.value],
5790
+ async () => {
5791
+ await readyPromise;
5792
+ const resultPlace = await getPlaceByRegeo(pointRef.value);
5793
+ onChange == null ? void 0 : onChange(resultPlace);
5692
5794
  }
5693
5795
  );
5694
- return { place, updatePlace, setPlace };
5796
+ return { place, updatePlace, setPlace, getPlaceByRegeo };
5695
5797
  };
5696
5798
  const useGmapPlace = (props) => {
5697
5799
  const { onChange, emptyPlaceName } = props;
@@ -5715,214 +5817,182 @@ const useGmapPlace = (props) => {
5715
5817
  place.name = value.name;
5716
5818
  place.displayName = value.displayName;
5717
5819
  };
5820
+ const getPlaceByRegeo = ([lng, lat]) => {
5821
+ return new Promise((resolve, reject) => {
5822
+ const geocoder = new google.maps.Geocoder();
5823
+ geocoder.geocode({ language, location: { lng, lat } }).then(({ results }) => {
5824
+ const name2 = results[0].formatted_address ? results[0].formatted_address : emptyPlaceName;
5825
+ const displayName = name2;
5826
+ resolve({ lng, lat, name: name2, displayName });
5827
+ }).catch(reject);
5828
+ });
5829
+ };
5718
5830
  Vue.watch(
5719
5831
  () => placeKey.value,
5720
5832
  async () => {
5721
5833
  await readyPromise;
5722
- const geocoder = new google.maps.Geocoder();
5723
- const [lng, lat] = pointRef.value;
5724
- const { results } = await geocoder.geocode({ language, location: { lng, lat } });
5725
- const name2 = results[0].formatted_address ? results[0].formatted_address : emptyPlaceName;
5726
- const displayName = name2;
5727
- place.lng = lng;
5728
- place.lat = lat;
5729
- place.name = name2;
5730
- place.displayName = displayName;
5731
- onChange == null ? void 0 : onChange({ lng, lat, name: name2, displayName });
5834
+ const resultPlace = await getPlaceByRegeo(pointRef.value);
5835
+ onChange == null ? void 0 : onChange(resultPlace);
5732
5836
  }
5733
5837
  );
5734
- return { place, updatePlace, setPlace };
5838
+ return { place, updatePlace, setPlace, getPlaceByRegeo };
5735
5839
  };
5736
5840
  const useMapPlace = (props) => {
5737
5841
  const { supplier } = useMapSupplier();
5738
5842
  return supplier === "gmap" ? useGmapPlace(props) : useAmapPlace(props);
5739
5843
  };
5740
- const findAmapNearestPlace = (place, candidates) => {
5741
- let shortestDistance = Infinity;
5742
- let shortestPlace = place;
5743
- for (const candidate of candidates) {
5744
- const distance = AMap.GeometryUtil.distance(place2point(place), place2point(candidate));
5745
- if (distance >= shortestDistance)
5746
- continue;
5747
- shortestPlace = candidate;
5748
- shortestDistance = distance;
5749
- }
5750
- return { shortestPlace, shortestDistance };
5751
- };
5752
- const findGmapNearestPlace = (place, candidates) => {
5844
+ function findNearestPlace(place, candidates, distanceFn) {
5845
+ var _a;
5753
5846
  let shortestDistance = Infinity;
5754
5847
  let shortestPlace = place;
5755
5848
  for (const candidate of candidates) {
5756
- const distance = google.maps.geometry.spherical.computeDistanceBetween(place, candidate);
5849
+ const distance = (_a = distanceFn(place2point(place), place2point(candidate))) != null ? _a : Infinity;
5757
5850
  if (distance >= shortestDistance)
5758
5851
  continue;
5759
5852
  shortestPlace = candidate;
5760
5853
  shortestDistance = distance;
5761
5854
  }
5762
5855
  return { shortestPlace, shortestDistance };
5763
- };
5764
- const useAmapRecomendPlace = (props) => {
5765
- const { pointRef, getRecomendPlace, getLimit, context: context2, emptyPlaceName, onChange, onChangePlace } = props;
5856
+ }
5857
+ const useMapRecomendPlace = (props) => {
5858
+ const {
5859
+ defaultPoint,
5860
+ getRecomendPlace,
5861
+ getLimit,
5862
+ context: context2,
5863
+ emptyPlaceName,
5864
+ onChange,
5865
+ onChangePlace
5866
+ } = props;
5766
5867
  const availableRef = Vue.ref(true);
5767
5868
  const placeCandidatesRef = Vue.ref([]);
5768
5869
  const zoneRef = Vue.ref();
5769
- const { idx: recomendPlaceKey, update: updateRecommendPlaceKey } = useUpdate();
5770
- const { readyPromise } = useMapSupplier();
5771
- const { place, updatePlace, setPlace } = useAmapPlace({
5870
+ const { apiMapIsPointInRing, apiMapDistance } = useMapGeometry();
5871
+ const { getPlaceByRegeo } = useAmapPlace({
5772
5872
  emptyPlaceName,
5773
- pointRef,
5774
- onChange: onChangePlace
5873
+ pointRef: Vue.ref([...defaultPoint])
5874
+ });
5875
+ const recomendPlace = Vue.reactive({
5876
+ lng: defaultPoint[0],
5877
+ lat: defaultPoint[1],
5878
+ name: "",
5879
+ displayName: ""
5775
5880
  });
5776
- const recomendPlace = Vue.reactive({ ...place });
5777
5881
  const isElectedRef = Vue.computed(() => {
5778
- const point = pointRef.value;
5882
+ const recomendPoint = place2point(recomendPlace);
5779
5883
  return placeCandidatesRef.value.some(
5780
- (candidate) => isPointEqual(place2point(candidate), point)
5884
+ (candidate) => isPointEqual(place2point(candidate), recomendPoint)
5781
5885
  );
5782
5886
  });
5783
- const updatePlaceCandidates = async (place2) => {
5887
+ const findAttachedPlace = async (place) => {
5784
5888
  var _a;
5889
+ const inputRecommendZonePlaces = (_a = await getRecomendPlace({ ...place }, context2)) != null ? _a : {};
5785
5890
  const {
5786
- places: inputPlaceCandidates,
5891
+ places: placeCandidates,
5787
5892
  zone,
5788
- available
5789
- } = (_a = await getRecomendPlace({ ...place2 }, context2)) != null ? _a : {};
5790
- const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5791
- availableRef.value = !!available;
5792
- zoneRef.value = zone;
5793
- placeCandidatesRef.value = placeCandidates != null ? placeCandidates : [];
5893
+ available = false
5894
+ } = toRecommendZonePlacesType(inputRecommendZonePlaces);
5895
+ if (!available || !placeCandidates) {
5896
+ return { place: { ...place }, zone, candidates: [], available };
5897
+ }
5898
+ const { shortestPlace, shortestDistance } = findNearestPlace(
5899
+ place,
5900
+ placeCandidates,
5901
+ apiMapDistance
5902
+ );
5903
+ const limit = getLimit(context2);
5904
+ const resultPlace = zone || shortestDistance <= limit ? shortestPlace : place;
5905
+ return { place: { ...resultPlace }, zone, candidates: placeCandidates, available };
5906
+ };
5907
+ const getRecommendPlaceZoneState = async (point, prevState) => {
5908
+ const zone = zoneRef.value;
5909
+ if (!zone || !apiMapIsPointInRing(point, zone.path)) {
5910
+ const reGeoPlace = await getPlaceByRegeo(point);
5911
+ const {
5912
+ place: resultPlace2,
5913
+ candidates,
5914
+ available,
5915
+ zone: zone2
5916
+ } = await findAttachedPlace(reGeoPlace);
5917
+ return { place: { ...resultPlace2 }, zone: zone2, available, candidates };
5918
+ }
5919
+ const [lng, lat] = point;
5920
+ const { shortestPlace: resultPlace } = findNearestPlace(
5921
+ { lng, lat, name: "", displayName: "" },
5922
+ placeCandidatesRef.value,
5923
+ apiMapDistance
5924
+ );
5794
5925
  return {
5795
- inputPlace: { ...place2 },
5796
- isInZone: !!zone,
5797
- place: place2
5926
+ place: { ...resultPlace },
5927
+ zone,
5928
+ available: prevState.available,
5929
+ candidates: prevState.candidates
5798
5930
  };
5799
5931
  };
5800
- const updateRecommendPlace = (place2) => {
5801
- setPlace(place2);
5802
- updateRecommendPlaceKey();
5803
- };
5804
- const setPlaceCandidatesAndZone = ({
5805
- zone,
5806
- places: inputPlaceCandidates
5807
- }) => {
5808
- const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5809
- zoneRef.value = zone ? zone : void 0;
5810
- placeCandidatesRef.value = placeCandidates != null ? placeCandidates : [];
5811
- };
5812
- Vue.watch(
5813
- () => recomendPlaceKey.value,
5814
- async () => {
5815
- var _a;
5816
- await readyPromise;
5817
- const {
5818
- places: inputPlaceCandidates,
5819
- zone,
5820
- available
5821
- } = (_a = await getRecomendPlace({ ...place }, context2)) != null ? _a : {};
5822
- const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5823
- if (!available || !placeCandidates) {
5824
- availableRef.value = !!available;
5825
- zoneRef.value = zone;
5826
- placeCandidatesRef.value = [];
5827
- Object.assign(recomendPlace, { ...place });
5828
- onChange == null ? void 0 : onChange({ place: { ...place }, inputPlace: { ...place }, isInZone: !!zone });
5829
- return;
5830
- }
5831
- const { shortestPlace, shortestDistance } = findAmapNearestPlace(place, placeCandidates);
5832
- const limit = getLimit(context2);
5833
- const resultPlace = zone || shortestDistance <= limit ? shortestPlace : place;
5834
- availableRef.value = !!available;
5835
- zoneRef.value = zone;
5836
- placeCandidatesRef.value = placeCandidates;
5837
- Object.assign(recomendPlace, { ...resultPlace });
5838
- onChange == null ? void 0 : onChange({ place: { ...resultPlace }, inputPlace: { ...place }, isInZone: !!zone });
5839
- }
5840
- );
5841
- return {
5842
- zoneRef,
5843
- recomendPlace,
5844
- placeCandidates: placeCandidatesRef,
5845
- availableRef,
5846
- isElectedRef,
5847
- updateRecommendPlace,
5848
- updatePlaceCandidates,
5849
- updatePlace,
5850
- setPlaceCandidatesAndZone
5932
+ const updatePlace = async (point) => {
5933
+ const {
5934
+ place: resultPlace,
5935
+ candidates,
5936
+ zone,
5937
+ available
5938
+ } = await getRecommendPlaceZoneState(point, {
5939
+ place: recomendPlace,
5940
+ available: availableRef.value,
5941
+ candidates: placeCandidatesRef.value,
5942
+ zone: zoneRef.value
5943
+ });
5944
+ const isSameZone = !!zone && isZoneEqual(zone, zoneRef.value);
5945
+ availableRef.value = available;
5946
+ zoneRef.value = zone;
5947
+ placeCandidatesRef.value = candidates;
5948
+ Object.assign(recomendPlace, { ...resultPlace });
5949
+ onChangePlace == null ? void 0 : onChangePlace({ ...resultPlace });
5950
+ const inputPlace = { name: "", displayName: "", lng: point[0], lat: point[1] };
5951
+ onChange == null ? void 0 : onChange({ place: { ...resultPlace }, inputPlace, isInZone: !!zone, isSameZone });
5851
5952
  };
5852
- };
5853
- const useGmapRecomendPlace = (props) => {
5854
- const { pointRef, getRecomendPlace, getLimit, context: context2, emptyPlaceName, onChange, onChangePlace } = props;
5855
- const availableRef = Vue.ref(true);
5856
- const placeCandidatesRef = Vue.ref([]);
5857
- const zoneRef = Vue.ref();
5858
- const { idx: recomendPlaceKey, update: updateRecommendPlaceKey } = useUpdate();
5859
- const { readyPromise } = useMapSupplier();
5860
- const { place, updatePlace, setPlace } = useGmapPlace({
5861
- emptyPlaceName,
5862
- pointRef,
5863
- onChange: onChangePlace
5864
- });
5865
- const recomendPlace = Vue.reactive({ ...place });
5866
- const isElectedRef = Vue.computed(() => {
5867
- const point = pointRef.value;
5868
- return placeCandidatesRef.value.some(
5869
- (candidate) => isPointEqual(place2point(candidate), point)
5870
- );
5871
- });
5872
- const updatePlaceCandidates = async (place2) => {
5953
+ const updatePlaceCandidates = async (place) => {
5873
5954
  var _a;
5955
+ const inputRecommendZonePlaces = (_a = await getRecomendPlace({ ...place }, context2)) != null ? _a : {};
5874
5956
  const {
5875
- places: inputPlaceCandidates,
5957
+ places: placeCandidates,
5876
5958
  zone,
5877
- available
5878
- } = (_a = await getRecomendPlace({ ...place2 }, context2)) != null ? _a : {};
5879
- const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5959
+ available = false
5960
+ } = toRecommendZonePlacesType(inputRecommendZonePlaces);
5961
+ const isSameZone = !!zone && isZoneEqual(zone, zoneRef.value);
5880
5962
  availableRef.value = !!available;
5881
5963
  zoneRef.value = zone;
5882
5964
  placeCandidatesRef.value = placeCandidates != null ? placeCandidates : [];
5883
5965
  return {
5884
- inputPlace: { ...place2 },
5966
+ inputPlace: { ...place },
5885
5967
  isInZone: !!zone,
5886
- place: place2
5968
+ place,
5969
+ isSameZone
5887
5970
  };
5888
5971
  };
5889
- const updateRecommendPlace = (place2) => {
5890
- setPlace(place2);
5891
- updateRecommendPlaceKey();
5972
+ const updateRecommendPlace = async (place) => {
5973
+ const { place: resultPlace, candidates, available, zone } = await findAttachedPlace(place);
5974
+ const isSameZone = !!zone && isZoneEqual(zone, zoneRef.value);
5975
+ availableRef.value = available;
5976
+ zoneRef.value = zone;
5977
+ placeCandidatesRef.value = candidates;
5978
+ Object.assign(recomendPlace, { ...resultPlace });
5979
+ onChangePlace == null ? void 0 : onChangePlace({ ...resultPlace });
5980
+ onChange == null ? void 0 : onChange({
5981
+ place: { ...resultPlace },
5982
+ inputPlace: { ...place },
5983
+ isInZone: !!zone,
5984
+ isSameZone
5985
+ });
5892
5986
  };
5893
- const setPlaceCandidatesAndZone = ({ zone, places }) => {
5894
- placeCandidatesRef.value = places != null ? places : [];
5987
+ const setPlaceCandidatesAndZone = ({
5988
+ zone,
5989
+ places: inputPlaceCandidates
5990
+ }) => {
5991
+ const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5992
+ availableRef.value = true;
5895
5993
  zoneRef.value = zone ? zone : void 0;
5994
+ placeCandidatesRef.value = placeCandidates != null ? placeCandidates : [];
5896
5995
  };
5897
- Vue.watch(
5898
- () => recomendPlaceKey.value,
5899
- async () => {
5900
- var _a;
5901
- await readyPromise;
5902
- const {
5903
- places: inputPlaceCandidates,
5904
- zone,
5905
- available
5906
- } = (_a = await getRecomendPlace({ ...place }, context2)) != null ? _a : {};
5907
- const placeCandidates = inputPlaceCandidates == null ? void 0 : inputPlaceCandidates.map(toPlaceType);
5908
- if (!available || !placeCandidates) {
5909
- availableRef.value = !!available;
5910
- zoneRef.value = zone;
5911
- placeCandidatesRef.value = [];
5912
- Object.assign(recomendPlace, { ...place });
5913
- onChange == null ? void 0 : onChange({ place: { ...place }, inputPlace: { ...place }, isInZone: !!zone });
5914
- return;
5915
- }
5916
- const { shortestPlace, shortestDistance } = findGmapNearestPlace(place, placeCandidates);
5917
- const limit = getLimit(context2);
5918
- const resultPlace = shortestDistance > limit ? place : shortestPlace;
5919
- availableRef.value = !!available;
5920
- zoneRef.value = zone;
5921
- placeCandidatesRef.value = placeCandidates;
5922
- Object.assign(recomendPlace, { ...resultPlace });
5923
- onChange == null ? void 0 : onChange({ place: { ...resultPlace }, inputPlace: { ...place }, isInZone: !!zone });
5924
- }
5925
- );
5926
5996
  return {
5927
5997
  zoneRef,
5928
5998
  recomendPlace,
@@ -5935,20 +6005,19 @@ const useGmapRecomendPlace = (props) => {
5935
6005
  setPlaceCandidatesAndZone
5936
6006
  };
5937
6007
  };
5938
- const useMapRecomendPlace = (props) => {
5939
- const { supplier } = useMapSupplier();
5940
- return supplier === "gmap" ? useGmapRecomendPlace(props) : useAmapRecomendPlace(props);
5941
- };
5942
6008
  const GOOGLE_MAP_ZOOM_CHANGE_DEBOUNCE_TIMEOUT = 50;
5943
6009
  const DEFAULT_ZOOM$1 = 13;
5944
6010
  const useAmapZoom = (props) => {
5945
6011
  var _a, _b, _c;
5946
6012
  const { onChange, mapRef, defaultValue } = props;
5947
6013
  const zoomRef = Vue.ref((_c = (_b = (_a = mapRef.value) == null ? void 0 : _a.getZoom()) != null ? _b : defaultValue) != null ? _c : DEFAULT_ZOOM$1);
5948
- const setZoom = (v) => {
5949
- var _a2;
6014
+ const setZoom = (v, immediate = false) => {
6015
+ var _a2, _b2;
6016
+ const duration = deltaZoom2animationDuration(v - zoomRef.value);
5950
6017
  zoomRef.value = v;
5951
- (_a2 = mapRef.value) == null ? void 0 : _a2.setZoom(v, true);
6018
+ if (immediate)
6019
+ return (_a2 = mapRef.value) == null ? void 0 : _a2.setZoom(v, true);
6020
+ (_b2 = mapRef.value) == null ? void 0 : _b2.setZoom(v, false, duration);
5952
6021
  };
5953
6022
  const handleZoomEnd = (_, { target }) => {
5954
6023
  const zoom = target.getZoom();
@@ -6680,7 +6749,6 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6680
6749
  name: geoLoadingTitle,
6681
6750
  displayName: geoLoadingTitle
6682
6751
  });
6683
- const centerPoint = Vue.computed(() => [centerPlace.lng, centerPlace.lat]);
6684
6752
  const centerSource = {
6685
6753
  source: "geo"
6686
6754
  };
@@ -6691,25 +6759,20 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6691
6759
  const setCenterPlaceByUserSpecified = async (input) => {
6692
6760
  centerSource.source = "api";
6693
6761
  const place = toPlaceType(input);
6694
- centerPlace.lng = place.lng;
6695
- centerPlace.lat = place.lat;
6696
- centerPlace.name = place.name;
6697
- centerPlace.displayName = place.displayName;
6698
- emit("changePlace", {
6699
- ...place
6700
- });
6762
+ Object.assign(centerPlace, place);
6701
6763
  updateRecommendPlace(place);
6702
6764
  };
6703
- const setCenterPlaceByUserSpecifiedInZone = ({
6704
- place,
6705
- recommends
6765
+ const setCenterPlaceByUserSpecifiedInZone = async ({
6766
+ place: inputPlace,
6767
+ recommends: inputRecommends
6706
6768
  }) => {
6707
- centerPlace.lng = place.lng;
6708
- centerPlace.lat = place.lat;
6709
- centerPlace.name = place.name;
6710
- centerPlace.displayName = place.displayName;
6769
+ const place = toPlaceType(inputPlace);
6770
+ const recommends = toRecommendZonePlacesType(inputRecommends);
6771
+ const isSameZone = recommends.zone && isZoneEqual(recommends.zone, zoneRef.value);
6772
+ if (!isSameZone)
6773
+ setZoom(ZONE_ZOOM);
6774
+ Object.assign(centerPlace, place);
6711
6775
  setPlaceCandidatesAndZone(recommends);
6712
- setZoom(ZONE_ZOOM);
6713
6776
  emit("changePlace", {
6714
6777
  ...place
6715
6778
  });
@@ -6717,12 +6780,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6717
6780
  const panToCenterByPlace = async (place) => {
6718
6781
  centerSource.source = "api";
6719
6782
  await panTo(place2point(place));
6720
- centerPlace.lng = place.lng;
6721
- centerPlace.lat = place.lat;
6722
- centerPlace.name = place.name;
6723
- centerPlace.displayName = place.displayName;
6724
- if (zoneRef.value)
6725
- setZoom(ZONE_ZOOM);
6783
+ Object.assign(centerPlace, place);
6726
6784
  emit("changePlace", {
6727
6785
  ...place
6728
6786
  });
@@ -6733,7 +6791,8 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6733
6791
  inputPlace: {
6734
6792
  ...place
6735
6793
  },
6736
- isInZone: !!zoneRef.value
6794
+ isInZone: !!zoneRef.value,
6795
+ isSameZone: !!zoneRef.value
6737
6796
  });
6738
6797
  };
6739
6798
  const defaultCenterPlacePromise = new Promise((resolve) => {
@@ -6751,18 +6810,21 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6751
6810
  } = useGeoLocation({
6752
6811
  geoDefaultPosition,
6753
6812
  onLoad: async (value) => {
6813
+ const [lng, lat] = value.position;
6754
6814
  await readyPromise;
6755
6815
  centerSource.source = "geo";
6816
+ centerPlace.lng = lng;
6817
+ centerPlace.lat = lat;
6756
6818
  updatePlace(value.position);
6757
6819
  emit("loadGeoLocation", value);
6758
6820
  },
6759
6821
  onLoadDefault: async (value) => {
6760
6822
  await readyPromise;
6761
- const place = await defaultCenterPlacePromise;
6823
+ const inputPlace = await defaultCenterPlacePromise;
6762
6824
  centerSource.source = "geo";
6763
6825
  emit("loadDefaultGeoLocation", value);
6764
- if (place) {
6765
- await setCenterPlaceByUserSpecified(place);
6826
+ if (inputPlace) {
6827
+ await setCenterPlaceByUserSpecified(inputPlace);
6766
6828
  } else {
6767
6829
  updatePlace(value.position);
6768
6830
  }
@@ -6797,7 +6859,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6797
6859
  availableRef,
6798
6860
  isElectedRef
6799
6861
  } = useMapRecomendPlace({
6800
- pointRef: centerPoint,
6862
+ defaultPoint: place2point(centerPlace),
6801
6863
  emptyPlaceName: DEFAULT_PLACE_NAME,
6802
6864
  context: centerSource,
6803
6865
  getRecomendPlace: pipedGetRecomendPlace,
@@ -6814,16 +6876,12 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6814
6876
  throw new Error(`MyError: should not call getLimit on source: ${source}`);
6815
6877
  }
6816
6878
  },
6817
- onChangePlace: (place) => {
6818
- if (centerSource.source !== "recomend") {
6819
- updateRecommendPlace(place);
6820
- }
6821
- emit("changePlace", place);
6822
- },
6879
+ onChangePlace: (place) => emit("changePlace", place),
6823
6880
  onChange: async ({
6824
6881
  place,
6825
6882
  inputPlace,
6826
- isInZone
6883
+ isInZone,
6884
+ isSameZone
6827
6885
  }) => {
6828
6886
  centerSource.source = "recomend";
6829
6887
  if (isPlaceEqual(place, centerPlace))
@@ -6831,12 +6889,13 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6831
6889
  Object.assign(centerPlace, {
6832
6890
  ...place
6833
6891
  });
6834
- if (isInZone)
6892
+ if (isInZone && !isSameZone)
6835
6893
  setZoom(ZONE_ZOOM);
6836
6894
  emit("changeRecomandPlace", {
6837
6895
  place,
6838
6896
  inputPlace,
6839
- isInZone
6897
+ isInZone,
6898
+ isSameZone
6840
6899
  });
6841
6900
  }
6842
6901
  });
@@ -6859,7 +6918,7 @@ const BusinessRecomendPlaceMap = defineLagecySetup(function BusinessRecomendPlac
6859
6918
  const description = !availableRef.value ? void 0 : isElectedRef.value ? recomendDescription : void 0;
6860
6919
  return Vue.h(HeycarMap, {
6861
6920
  "attrs": {
6862
- "center": centerPoint.value,
6921
+ "center": place2point(centerPlace),
6863
6922
  "zoom": zoomRef.value,
6864
6923
  "touchZoomCenter": true,
6865
6924
  "mapRef": setMap,
@@ -6935,7 +6994,6 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
6935
6994
  name: defaultPlace.name,
6936
6995
  displayName: defaultPlace.displayName
6937
6996
  });
6938
- const centerPoint = Vue.computed(() => [centerPlace.lng, centerPlace.lat]);
6939
6997
  const centerSource = {
6940
6998
  source: "default"
6941
6999
  };
@@ -6946,24 +7004,19 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
6946
7004
  const setCenterPlaceByUserSpecified = async (input) => {
6947
7005
  centerSource.source = "api";
6948
7006
  const place = toPlaceType(input);
6949
- centerPlace.lng = place.lng;
6950
- centerPlace.lat = place.lat;
6951
- centerPlace.name = place.name;
6952
- centerPlace.displayName = place.displayName;
6953
- emit("changePlace", {
6954
- ...place
6955
- });
7007
+ Object.assign(centerPlace, place);
6956
7008
  updateRecommendPlace(place);
6957
7009
  };
6958
- const setCenterPlaceByUserSpecifiedInZone = ({
6959
- place,
6960
- recommends
7010
+ const setCenterPlaceByUserSpecifiedInZone = async ({
7011
+ place: inputPlace,
7012
+ recommends: inputRecommends
6961
7013
  }) => {
6962
- centerPlace.lng = place.lng;
6963
- centerPlace.lat = place.lat;
6964
- centerPlace.name = place.name;
6965
- centerPlace.displayName = place.displayName;
6966
- setZoom(ZONE_ZOOM);
7014
+ const place = toPlaceType(inputPlace);
7015
+ const recommends = toRecommendZonePlacesType(inputRecommends);
7016
+ const isSameZone = recommends.zone && isZoneEqual(recommends.zone, zoneRef.value);
7017
+ if (!isSameZone)
7018
+ setZoom(ZONE_ZOOM);
7019
+ Object.assign(centerPlace, place);
6967
7020
  setPlaceCandidatesAndZone(recommends);
6968
7021
  emit("changePlace", {
6969
7022
  ...place
@@ -6972,12 +7025,7 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
6972
7025
  const panToCenterByPlace = async (place) => {
6973
7026
  centerSource.source = "api";
6974
7027
  await panTo(place2point(place));
6975
- centerPlace.lng = place.lng;
6976
- centerPlace.lat = place.lat;
6977
- centerPlace.name = place.name;
6978
- centerPlace.displayName = place.displayName;
6979
- if (zoneRef.value)
6980
- setZoom(ZONE_ZOOM);
7028
+ Object.assign(centerPlace, place);
6981
7029
  emit("changePlace", {
6982
7030
  ...place
6983
7031
  });
@@ -6988,7 +7036,8 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
6988
7036
  inputPlace: {
6989
7037
  ...place
6990
7038
  },
6991
- isInZone: !!zoneRef.value
7039
+ isInZone: !!zoneRef.value,
7040
+ isSameZone: !!zoneRef.value
6992
7041
  });
6993
7042
  };
6994
7043
  const {
@@ -7031,7 +7080,7 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
7031
7080
  availableRef,
7032
7081
  isElectedRef
7033
7082
  } = useMapRecomendPlace({
7034
- pointRef: centerPoint,
7083
+ defaultPoint: place2point(centerPlace),
7035
7084
  emptyPlaceName: DEFAULT_PLACE_NAME,
7036
7085
  context: centerSource,
7037
7086
  getRecomendPlace: pipedGetRecomendPlace,
@@ -7048,16 +7097,12 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
7048
7097
  throw new Error(`MyError: should not call getLimit on source: ${source}`);
7049
7098
  }
7050
7099
  },
7051
- onChangePlace: (place) => {
7052
- if (centerSource.source !== "recomend") {
7053
- updateRecommendPlace(place);
7054
- }
7055
- emit("changePlace", place);
7056
- },
7100
+ onChangePlace: (place) => emit("changePlace", place),
7057
7101
  onChange: async ({
7058
7102
  place,
7059
7103
  inputPlace,
7060
- isInZone
7104
+ isInZone,
7105
+ isSameZone
7061
7106
  }) => {
7062
7107
  centerSource.source = "recomend";
7063
7108
  if (isPlaceEqual(place, centerPlace))
@@ -7065,12 +7110,13 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
7065
7110
  Object.assign(centerPlace, {
7066
7111
  ...place
7067
7112
  });
7068
- if (isInZone)
7113
+ if (isInZone && !isSameZone)
7069
7114
  setZoom(ZONE_ZOOM);
7070
7115
  emit("changeRecomandPlace", {
7071
7116
  place,
7072
7117
  inputPlace,
7073
- isInZone
7118
+ isInZone,
7119
+ isSameZone
7074
7120
  });
7075
7121
  }
7076
7122
  });
@@ -7096,7 +7142,7 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
7096
7142
  const description = !availableRef.value ? void 0 : isElectedRef.value ? recomendDescription : void 0;
7097
7143
  return Vue.h(HeycarMap, {
7098
7144
  "attrs": {
7099
- "center": centerPoint.value,
7145
+ "center": place2point(centerPlace),
7100
7146
  "zoom": zoomRef.value,
7101
7147
  "touchZoomCenter": true,
7102
7148
  "mapRef": setMap,
@@ -7131,38 +7177,6 @@ const BusinessReselectPlaceMap = defineLagecySetup(function BusinessReselectPlac
7131
7177
  })]);
7132
7178
  };
7133
7179
  }).props(["loading", "fallback", "log", "defaultPlace", "unavailableTitle", "recomendDescription", "getRecomendPlace", "mapContext"]);
7134
- const useAmapGeometry = () => {
7135
- const payload = useMapSupplier();
7136
- const apiMapDistance = (from, to) => {
7137
- if (payload.status !== Status.SUCCESS)
7138
- return void 0;
7139
- return AMap.GeometryUtil.distance(from, to);
7140
- };
7141
- const apiMapDistanceToLine = (from, line) => {
7142
- if (payload.status !== Status.SUCCESS)
7143
- return void 0;
7144
- return AMap.GeometryUtil.distanceToLine(from, line);
7145
- };
7146
- return { apiMapDistance, apiMapDistanceToLine };
7147
- };
7148
- const useGmapGeometry = () => {
7149
- const payload = useMapSupplier();
7150
- const apiMapDistance = (from, to) => {
7151
- if (payload.status !== Status.SUCCESS)
7152
- return void 0;
7153
- return google.maps.geometry.spherical.computeDistanceBetween(vec2lnglat(from), vec2lnglat(to));
7154
- };
7155
- const apiMapDistanceToLine = (from, line) => {
7156
- if (payload.status !== Status.SUCCESS)
7157
- return void 0;
7158
- return 0;
7159
- };
7160
- return { apiMapDistance, apiMapDistanceToLine };
7161
- };
7162
- const useMapGeometry = () => {
7163
- const { supplier } = useMapSupplier();
7164
- return supplier === "gmap" ? useGmapGeometry() : useAmapGeometry();
7165
- };
7166
7180
  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=";
7167
7181
  const TaxiCar_css_ts_vanilla = "";
7168
7182
  var carIcon = "_65j3sr1";
@@ -7516,12 +7530,16 @@ const SectionDispatching = defineSetup(function SectionDispatching2(props) {
7516
7530
  title,
7517
7531
  registerOverlay
7518
7532
  } = props;
7533
+ const {
7534
+ language
7535
+ } = useMapSupplier();
7519
7536
  const from = place2point(fromPlace);
7520
7537
  return Vue.h("div", [Vue.h(StartEndPoint, {
7521
7538
  "attrs": {
7522
7539
  "type": "start",
7523
7540
  "position": from,
7524
7541
  "title": title,
7542
+ "language": language,
7525
7543
  "registerOverlay": registerOverlay
7526
7544
  }
7527
7545
  }), Vue.h(WaveCircle, {
@@ -7547,6 +7565,9 @@ const SectionDispatching = defineSetup(function SectionDispatching2(props) {
7547
7565
  };
7548
7566
  });
7549
7567
  const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
7568
+ const {
7569
+ language
7570
+ } = useMapSupplier();
7550
7571
  const {
7551
7572
  apiMapDistance
7552
7573
  } = useMapGeometry();
@@ -7584,13 +7605,15 @@ const SectionConfirmed = defineSetup(function SectionConfirmed2(props) {
7584
7605
  "attrs": {
7585
7606
  "type": "start",
7586
7607
  "registerOverlay": registerOverlay,
7587
- "position": from
7608
+ "position": from,
7609
+ "language": language
7588
7610
  }
7589
7611
  }), Vue.h(StartEndPoint, {
7590
7612
  "attrs": {
7591
7613
  "type": "end",
7592
7614
  "registerOverlay": registerOverlay,
7593
- "position": to
7615
+ "position": to,
7616
+ "language": language
7594
7617
  }
7595
7618
  }), Vue.h(PlaceCircle, {
7596
7619
  "attrs": {
@@ -7621,6 +7644,9 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7621
7644
  registerOverlay
7622
7645
  } = props;
7623
7646
  const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7647
+ const {
7648
+ language
7649
+ } = useMapSupplier();
7624
7650
  const {
7625
7651
  apiMapDistance
7626
7652
  } = useMapGeometry();
@@ -7647,7 +7673,8 @@ const SectionDriverStartService = defineSetup(function SectionDriverStartService
7647
7673
  "attrs": {
7648
7674
  "type": "start",
7649
7675
  "position": from,
7650
- "registerOverlay": registerOverlay
7676
+ "registerOverlay": registerOverlay,
7677
+ "language": language
7651
7678
  }
7652
7679
  }), Vue.h(PlaceCircle, {
7653
7680
  "attrs": {
@@ -7722,6 +7749,9 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
7722
7749
  const {
7723
7750
  apiMapDistance
7724
7751
  } = useMapGeometry();
7752
+ const {
7753
+ language
7754
+ } = useMapSupplier();
7725
7755
  return () => {
7726
7756
  const {
7727
7757
  from: fromPlace,
@@ -7768,13 +7798,15 @@ const SectionBookDispatched = defineSetup(function SectionBookDispatched2(props)
7768
7798
  "attrs": {
7769
7799
  "type": "start",
7770
7800
  "registerOverlay": registerOverlay,
7771
- "position": from
7801
+ "position": from,
7802
+ "language": language
7772
7803
  }
7773
7804
  }), Vue.h(StartEndPoint, {
7774
7805
  "attrs": {
7775
7806
  "type": "end",
7776
7807
  "registerOverlay": registerOverlay,
7777
- "position": to
7808
+ "position": to,
7809
+ "language": language
7778
7810
  }
7779
7811
  }), Vue.h(PlaceCircle, {
7780
7812
  "attrs": {
@@ -7805,6 +7837,9 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7805
7837
  registerOverlay
7806
7838
  } = props;
7807
7839
  const fittableRegistryOverlay = createFittableRegisterOverlay(registerOverlay);
7840
+ const {
7841
+ language
7842
+ } = useMapSupplier();
7808
7843
  const {
7809
7844
  apiMapDistance
7810
7845
  } = useMapGeometry();
@@ -7849,7 +7884,8 @@ const SectionDriverArrived = defineSetup(function SectionDriverArrived2(props) {
7849
7884
  "attrs": {
7850
7885
  "type": "start",
7851
7886
  "position": from,
7852
- "registerOverlay": registerOverlay
7887
+ "registerOverlay": registerOverlay,
7888
+ "language": language
7853
7889
  }
7854
7890
  }), Vue.h(PlaceCircle, {
7855
7891
  "attrs": {
@@ -7882,6 +7918,9 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7882
7918
  renderTitle
7883
7919
  } = props;
7884
7920
  const to = place2point(toPlace);
7921
+ const {
7922
+ language
7923
+ } = useMapSupplier();
7885
7924
  const {
7886
7925
  apiMapDistance
7887
7926
  } = useMapGeometry();
@@ -7929,7 +7968,8 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7929
7968
  "attrs": {
7930
7969
  "type": "end",
7931
7970
  "position": to,
7932
- "registerOverlay": registerOverlay
7971
+ "registerOverlay": registerOverlay,
7972
+ "language": language
7933
7973
  }
7934
7974
  }), Vue.h(PlaceCircle, {
7935
7975
  "attrs": {
@@ -7950,6 +7990,9 @@ const SectionInService = defineSetup(function SectionInService2(props) {
7950
7990
  };
7951
7991
  });
7952
7992
  const SectionCanceled = defineSetup(function SectionCanceled2(props) {
7993
+ const {
7994
+ language
7995
+ } = useMapSupplier();
7953
7996
  return () => {
7954
7997
  const {
7955
7998
  from: fromPlace,
@@ -7962,13 +8005,15 @@ const SectionCanceled = defineSetup(function SectionCanceled2(props) {
7962
8005
  "attrs": {
7963
8006
  "type": "start",
7964
8007
  "position": from,
7965
- "registerOverlay": registerOverlay
8008
+ "registerOverlay": registerOverlay,
8009
+ "language": language
7966
8010
  }
7967
8011
  }), Vue.h(StartEndPoint, {
7968
8012
  "attrs": {
7969
8013
  "type": "end",
7970
8014
  "position": to,
7971
- "registerOverlay": registerOverlay
8015
+ "registerOverlay": registerOverlay,
8016
+ "language": language
7972
8017
  }
7973
8018
  }), Vue.h(PlaceCircle, {
7974
8019
  "attrs": {
@@ -7995,6 +8040,9 @@ const SectionCanceled = defineSetup(function SectionCanceled2(props) {
7995
8040
  };
7996
8041
  });
7997
8042
  const SectionEndService = defineSetup(function SectionEndService2(props) {
8043
+ const {
8044
+ language
8045
+ } = useMapSupplier();
7998
8046
  return () => {
7999
8047
  const {
8000
8048
  from: fromPlace,
@@ -8020,13 +8068,15 @@ const SectionEndService = defineSetup(function SectionEndService2(props) {
8020
8068
  "attrs": {
8021
8069
  "type": "start",
8022
8070
  "position": from,
8023
- "registerOverlay": registerOverlay
8071
+ "registerOverlay": registerOverlay,
8072
+ "language": language
8024
8073
  }
8025
8074
  }), Vue.h(StartEndPoint, {
8026
8075
  "attrs": {
8027
8076
  "type": "end",
8028
8077
  "position": to,
8029
- "registerOverlay": registerOverlay
8078
+ "registerOverlay": registerOverlay,
8079
+ "language": language
8030
8080
  }
8031
8081
  }), Vue.h(PlaceCircle, {
8032
8082
  "attrs": {