@tomtom-org/maps-sdk 0.46.0 → 0.46.2
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/CHANGELOG.md +22 -0
- package/README.md +38 -80
- package/core/dist/core.es.js +1 -1
- package/core/dist/core.es.js.map +1 -1
- package/core/dist/index.d.ts +3 -3
- package/package.json +3 -1
- package/services/dist/index.d.ts +2 -0
- package/services/dist/services.es.js +1 -1
- package/services/dist/services.es.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [0.46.2](https://github.com/tomtom-internal/maps-sdk-js/compare/v0.46.1...v0.46.2) (2026-03-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* add context7 json to help manage ai assisted coding ([7ce7c17](https://github.com/tomtom-internal/maps-sdk-js/commit/7ce7c179394471c8778828622ae8c8cec8d8ed6c))
|
|
11
|
+
|
|
12
|
+
## [0.46.1](https://github.com/tomtom-internal/maps-sdk-js/compare/v0.46.0...v0.46.1) (2026-03-13)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
* add skills for agents to develop with the SDK ([cc30803](https://github.com/tomtom-internal/maps-sdk-js/commit/cc30803e1c7e626bae2ecd6239296427687f9d58))
|
|
18
|
+
* enhance documentation for map agent and setup with new examples and boilerplate ([d75af32](https://github.com/tomtom-internal/maps-sdk-js/commit/d75af3225ba6331142976cc980d323881ea40240))
|
|
19
|
+
* make tool-activation opt-out ([1a3f980](https://github.com/tomtom-internal/maps-sdk-js/commit/1a3f9808aa252b3b9a44139712f313e5cf8a68d1))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* ensure traffic area analytics report name ([2bb9a5b](https://github.com/tomtom-internal/maps-sdk-js/commit/2bb9a5b21d1719df23ece7fcb387ca702178cb73))
|
|
25
|
+
* poi category codes agent tool reliability with languages ([5bac87d](https://github.com/tomtom-internal/maps-sdk-js/commit/5bac87d6e53c8089aab2bd4ee56042ab4a3023b9))
|
|
26
|
+
|
|
5
27
|
## [0.46.0](https://github.com/tomtom-internal/maps-sdk-js/compare/v0.45.12...v0.46.0) (2026-03-12)
|
|
6
28
|
|
|
7
29
|
|
package/README.md
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
# TomTom Maps SDK for JavaScript
|
|
4
4
|
|
|
5
|
-
[**Examples**](https://docs.tomtom.com/maps-sdk-js/examples/) |
|
|
6
|
-
[**Documentation**](https://docs.tomtom.com/maps-sdk-js/introduction/overview) |
|
|
7
|
-
[**API Reference**](https://docs.tomtom.com/maps-sdk-js/api-reference/index.html)
|
|
5
|
+
[🎮 **Examples**](https://docs.tomtom.com/maps-sdk-js/examples/) |
|
|
6
|
+
[📖 **Documentation**](https://docs.tomtom.com/maps-sdk-js/introduction/overview) |
|
|
7
|
+
[📋 **API Reference**](https://docs.tomtom.com/maps-sdk-js/api-reference/index.html) |
|
|
8
|
+
[🐙 **GitHub**](https://github.com/tomtom-international/maps-sdk-js)
|
|
8
9
|
|
|
9
10
|
[](https://www.npmjs.com/package/@tomtom-org/maps-sdk)
|
|
10
11
|
|
|
@@ -25,99 +26,56 @@ We have released some capabilities in the Maps SDK under [Public Preview](https:
|
|
|
25
26
|
- Stay tuned with our release `CHANGELOG.md` files.
|
|
26
27
|
<br/><br/>
|
|
27
28
|
|
|
28
|
-
## 🚀 Getting Started
|
|
29
|
+
## 🚀 Getting Started
|
|
29
30
|
```
|
|
30
31
|
npm i @tomtom-org/maps-sdk
|
|
31
32
|
```
|
|
32
33
|
|
|
33
|
-
##
|
|
34
|
+
## 🤖 AI Coding Agent Skill
|
|
34
35
|
|
|
35
|
-
|
|
36
|
+
Install the SDK skill for AI coding agents (Claude Code, Cursor, GitHub Copilot, Windsurf, and [many more](https://www.npmjs.com/package/skills#available-agents)) to get SDK-specific assistance in your coding agent:
|
|
37
|
+
```bash
|
|
38
|
+
npx skills add tomtom-international/maps-sdk-js --skill tomtom-maps-sdk-js
|
|
39
|
+
```
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
- **[Live Examples](https://docs.tomtom.com/maps-sdk-js/examples/)** - Try the SDK in your browser
|
|
41
|
+
## How it works
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
- **[Getting Started Guide](https://docs.tomtom.com/maps-sdk-js/introduction/overview)** - Introduction and key features
|
|
42
|
-
- **[Project Setup](https://docs.tomtom.com/maps-sdk-js/introduction/project-setup)** - Step-by-step setup instructions
|
|
43
|
-
- **[How the SDK Works](https://docs.tomtom.com/maps-sdk-js/guides/how-the-sdk-works)** - Architecture and concepts
|
|
43
|
+
The SDK is split into three cooperating bundles — **Map**, **Services**, and **Core**. Services call TomTom APIs and return typed [GeoJSON](https://geojson.org/) that Map modules consume directly. Core provides the shared config and types that bridge them. See [How the SDK Works](https://docs.tomtom.com/maps-sdk-js/guides/how-the-sdk-works) for a deeper dive.
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
```ts
|
|
46
|
+
import { TomTomConfig } from '@tomtom-org/maps-sdk/core';
|
|
47
|
+
import { TomTomMap, PlacesModule, RoutingModule } from '@tomtom-org/maps-sdk/map';
|
|
48
|
+
import { search, calculateRoute } from '@tomtom-org/maps-sdk/services';
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
<br/><br/>
|
|
50
|
+
// Configure once — all services and the map use this key
|
|
51
|
+
TomTomConfig.instance.put({ apiKey: 'YOUR_API_KEY' });
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
* **web**: display and configure a map, search for places, plan routes, and easily display and interact with them, including your own data
|
|
54
|
-
* **nodejs**: (reverse)geocode locations, (re)calculate routes, and more, to enrich data before saving or returning it
|
|
55
|
-
* **React Native**: leverage the power of TomTom location services from a single codebase
|
|
56
|
-
<br/><br/>
|
|
53
|
+
const map = new TomTomMap({ mapLibre: { container: 'map', center: [4.9, 52.4], zoom: 12 } });
|
|
57
54
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
* [Services](#services): Functions with GeoJSON services for TomTom location APIs
|
|
62
|
-
* Compatible with web, nodejs and React Native applications
|
|
63
|
-
* [Core](#core): shared configuration, types and utilities
|
|
64
|
-
* Facilitates seamless integration between map and services
|
|
65
|
-
<br/><br/>
|
|
55
|
+
// Services return GeoJSON — map modules consume it directly
|
|
56
|
+
const places = await PlacesModule.get(map);
|
|
57
|
+
places.show(await search({ query: 'coffee' }));
|
|
66
58
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
You can both use the TomTom and MapLibre SDKs together at any time.
|
|
70
|
-
|
|
71
|
-
### ✨ Feature highlights
|
|
72
|
-
Readily available, yet highly customizable interactive TomTom Maps:
|
|
73
|
-
* in different styles: light, dark, b&w, satellite
|
|
74
|
-
* with configurable POIs and Live Traffic
|
|
75
|
-
* seamlessly integrable with TomTom [Services](#services)
|
|
76
|
-
* with places, routes and geometries from TomTom services or your own data
|
|
77
|
-
|
|
78
|
-
### 🚀 Getting Started with Map
|
|
79
|
-
#### Using npm
|
|
80
|
-
The SDK Map uses [MapLibre GL JS](https://www.npmjs.com/package/maplibre-gl) as peer dependency.
|
|
81
|
-
Therefore, you need to also have it installed in your project.\
|
|
82
|
-
The TomTom SDK is tested against the latest stable [release of MapLibre GL](https://github.com/maplibre/maplibre-gl-js/blob/main/CHANGELOG.md).
|
|
83
|
-
```
|
|
84
|
-
npm i @tomtom-org/maps-sdk maplibre-gl
|
|
59
|
+
const routing = await RoutingModule.get(map);
|
|
60
|
+
routing.showRoutes(await calculateRoute({ locations: [[4.9, 52.4], [13.4, 52.5]] }));
|
|
85
61
|
```
|
|
86
|
-
Code imports from the SDK Map Bundle will come from ```@tomtom-org/maps-sdk/map```
|
|
87
62
|
<br/><br/>
|
|
88
63
|
|
|
89
|
-
##
|
|
90
|
-
The SDK [Services bundle](https://docs.tomtom.com/maps-sdk-js/guides/services/quickstart) integrates the TomTom location APIs into comprehensive [GeoJSON](https://geojson.org/) services.\
|
|
91
|
-
The services can be integrated in **web**, [nodejs](https://nodejs.org/) and [React Native](https://reactnative.dev/) apps.\
|
|
92
|
-
The compatibility of both inputs and outputs with [GeoJSON](https://geojson.org/) helps with further integration with geospatial tools.
|
|
93
|
-
|
|
94
|
-
### ✨ Feature highlights
|
|
95
|
-
* Consistent [GeoJSON](https://geojson.org/) services for TomTom location APIs.
|
|
96
|
-
* Seamless integration with the TomTom [Map](#map).
|
|
97
|
-
* Extensive support for [Places](https://docs.tomtom.com/maps-sdk-js/guides/services/places/quickstart) and [Routing](https://docs.tomtom.com/maps-sdk-js/guides/services/routing/quickstart) use cases.
|
|
98
|
-
* [Customizable](https://docs.tomtom.com/maps-sdk-js/guides/services/customizing-services) requests and responses.
|
|
99
|
-
* EV support for [places](https://docs.tomtom.com/maps-sdk-js/guides/services/places/ev-charging-stations-availability) and [routes](https://docs.tomtom.com/maps-sdk-js/guides/services/routing/long-distance-ev-routing)
|
|
64
|
+
## 📚 Documentation & Examples
|
|
100
65
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
```
|
|
106
|
-
Code imports from the SDK Map Bundle will come from ```@tomtom-org/maps-sdk/services```
|
|
66
|
+
- **[Live Examples](https://docs.tomtom.com/maps-sdk-js/examples/)** — try the SDK in your browser
|
|
67
|
+
- **[Getting Started](https://docs.tomtom.com/maps-sdk-js/introduction/overview)** — introduction and project setup
|
|
68
|
+
- **[API Reference](https://docs.tomtom.com/maps-sdk-js/reference/overview)** — complete API documentation
|
|
69
|
+
- **[Release Notes](https://docs.tomtom.com/maps-sdk-js/introduction/release-notes)** — what's new and breaking changes
|
|
107
70
|
<br/><br/>
|
|
108
71
|
|
|
109
|
-
##
|
|
110
|
-
The SDK [Core](https://developer-staging.tomtom.com/maps-sdk-js/api-reference/core)
|
|
111
|
-
is a set of utilities and TypeScript types which are common to both [Map](#map) and [Services](#services).`
|
|
112
|
-
|
|
113
|
-
### ✨ Feature highlights
|
|
114
|
-
* [Common configuration](https://developer-staging.tomtom.com/maps-sdk-js/api-reference/core.TomTomConfig)
|
|
115
|
-
* Common types (such as outputs from Services which can be used as inputs to the Map)
|
|
116
|
-
* Utilities (such as distance/duration formatting and bounding box calculations)
|
|
72
|
+
## 📦 Bundles
|
|
117
73
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
74
|
+
| Bundle | Import path | Platforms |
|
|
75
|
+
|--------|-------------|-----------|
|
|
76
|
+
| **[Map](https://docs.tomtom.com/maps-sdk-js/guides/map/quickstart)** — interactive maps in [styles](https://docs.tomtom.com/maps-sdk-js/guides/map/map-styles), with [POIs](https://docs.tomtom.com/maps-sdk-js/guides/map/pois), [traffic](https://docs.tomtom.com/maps-sdk-js/guides/map/traffic), [places](https://docs.tomtom.com/maps-sdk-js/guides/map/places), [routes](https://docs.tomtom.com/maps-sdk-js/guides/map/routing) and [geometries](https://docs.tomtom.com/maps-sdk-js/guides/map/geometries) | `@tomtom-org/maps-sdk/map` | web |
|
|
77
|
+
| **[Services](https://docs.tomtom.com/maps-sdk-js/guides/services/quickstart)** — [GeoJSON](https://geojson.org/) services for [places](https://docs.tomtom.com/maps-sdk-js/guides/services/places/quickstart), [routing](https://docs.tomtom.com/maps-sdk-js/guides/services/routing/quickstart), geocoding and more | `@tomtom-org/maps-sdk/services` | web, Node.js, React Native |
|
|
78
|
+
| **[Core](https://docs.tomtom.com/maps-sdk-js/api-reference/core)** — shared config, types and utilities; no separate install needed | `@tomtom-org/maps-sdk/core` | web, Node.js, React Native |
|
|
121
79
|
|
|
122
80
|
## 📄 License
|
|
123
81
|
|
|
@@ -126,14 +84,14 @@ This repository uses a **dual-licensing model**.
|
|
|
126
84
|
### SDK Packages and plugins - Proprietary License
|
|
127
85
|
The SDK packages (`@tomtom-org/maps-sdk/*` - core, services, map) and plugins (`@tomtom-org/maps-sdk-plugin-*`) are distributed under a **proprietary license**.
|
|
128
86
|
|
|
129
|
-
|
|
87
|
+
📜 **[LICENSE.txt](./LICENSE.txt)** - Full license terms
|
|
130
88
|
|
|
131
89
|
These packages require a TomTom API key and agreement to our terms of service.
|
|
132
90
|
|
|
133
|
-
### Examples - Apache V2.0 License
|
|
91
|
+
### Examples - Apache V2.0 License
|
|
134
92
|
All example code in the `examples/` directory is **open-source** under the Apache V2.0 License.
|
|
135
93
|
|
|
136
|
-
|
|
94
|
+
📜 **[examples/LICENSE](./examples/LICENSE)** - Apache V2.0 License
|
|
137
95
|
|
|
138
96
|
The examples can be freely copied, modified, and used in your projects.
|
|
139
97
|
|
package/core/dist/core.es.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{nearestPointOnLine as A}from"@turf/turf";import{isNil as E}from"lodash-es";const R={commonBaseURL:"https://api.tomtom.com",apiKey:"",apiVersion:1},T=class{constructor(){this.config={...R}}put(A){this.config={...this.config,...A}}reset(){this.config={...R}}get(){return this.config}};T.instance=new T;let _=T;const I=(A={})=>({..._.instance.get(),...A}),N=["Public","Authorized","Restricted","Private","Unknown"],S=["Available","Reserved","Occupied","OutOfService","Unknown"],O=["ChargingProfileCapable","ChargingPreferencesCapable","ChipCardSupport","ContactlessCardSupport","CreditCardPayable","DebitCardPayable","PedTerminal","RemoteStartStopCapable","Reservable","RfidReader","StartSessionConnectorRequired","TokenGroupCapable","UnlockCapable","PlugAndCharge","Unknown"],C=["EvOnly","Plugged","Disabled","Customers","Motorcycles"],L=["StandardHouseholdCountrySpecific","IEC62196Type1","IEC62196Type1CCS","IEC62196Type2CableAttached","IEC62196Type2Outlet","IEC62196Type2CCS","IEC62196Type3","Chademo","GBT20234Part2","GBT20234Part3","IEC60309AC3PhaseRed","IEC60309AC1PhaseBlue","IEC60309DCWhite","Tesla"],U=["AC1","AC3","DC"],e=["Country","CountrySubdivision","CountrySecondarySubdivision","CountryTertiarySubdivision","Municipality","MunicipalitySubdivision","Neighbourhood","PostalCodeArea"],t=["POI","Street","Geography","Point Address","Address Range","Cross Street"],P=["ACCESS_GATEWAY","ADVENTURE_SPORTS_FACILITY","ADVENTURE_SPORTS_VENUE","ADVENTURE_VEHICLE_TRAIL","ADVERTISING_COMPANY","AFGHAN_RESTAURANT","AFRICAN_RESTAURANT","AGRICULTURAL_BUSINESS","AGRICULTURAL_SUPPLIES","AGRICULTURAL_TECHNOLOGY","AGRICULTURE","AIRFIELD","AIRLINE_ACCESS","AIRLINE_COMPANY","AIRPORT","AMBULANCE_UNIT","AMERICAN_RESTAURANT","AMPHITHEATER","AMUSEMENT_PARK","AMUSEMENT_PLACE","ANIMAL_SERVICES","ANIMAL_SHELTER","ANTIQUE_ART_SHOP","APARTMENT_RENTAL","AQUATIC_ZOO","ARABIAN_RESTAURANT","ARBORETA_BOTANICAL_GARDENS","ARCH","ARMENIAN_RESTAURANT","ART_SCHOOL","ASIAN_RESTAURANT","ATHLETICS_TRACK","ATM","ATV_DEALER","AUSTRALIAN_RESTAURANT","AUSTRIAN_RESTAURANT","AUTOMOBILE_COMPANY","AUTOMOBILE_MANUFACTURING","AUTOMOTIVE_DEALER","BAGS_LEATHERWEAR","BAKERY","BANK","BANQUET_ROOMS","BAR","BARBECUE_RESTAURANT","BASEBALL_PARK","BASKETBALL_ARENA","BASQUE_RESTAURANT","BATTLEFIELD","BAY","BEACH","BEACH_CLUB","BEAUTY_SALON","BEAUTY_SUPPLIES","BELGIAN_RESTAURANT","BETTING_STATION","BISTRO","BLOOD_BANK","BOATING_EQUIPMENT_ACCESSORIES","BOAT_DEALER","BOAT_LAUNCHING_RAMP","BODYSHOP","BOLIVIAN_RESTAURANT","BOOK_SHOP","BOWLING_CENTER","BRAZILIAN_RESTAURANT","BRIDGE","BRITISH_RESTAURANT","BUFFET_RESTAURANT","BUILDING","BULGARIAN_RESTAURANT","BUNGALOW_RENTAL","BURMESE_RESTAURANT","BUSINESS_PARK","BUSINESS_SERVICES","BUS_CHARTER_COMPANY","BUS_DEALER","BUS_LINES","BUS_STOP","BUTCHER","B_B_GUEST_HOUSE","CABARET_THEATER","CABINS_LODGES","CABLE_TELEPHONE_COMPANY","CAFE","CAFETERIA","CAFE_PUB","CALIFORNIAN_RESTAURANT","CAMBODIAN_RESTAURANT","CAMERAS_PHOTOGRAPHY","CAMPING_GROUND","CANADIAN_RESTAURANT","CAPE","CARAVAN_SITE","CARIBBEAN_RESTAURANT","CARPET_FLOOR_COVERINGS","CAR_DEALER","CAR_GLASS_REPLACEMENT_SHOP","CAR_REPAIR_AND_SERVICE","CAR_WASH","CASH_DISPENSER","CASINO","CATERING_SERVICES","CAVE","CEMETERY","CHALET_RENTAL","CHEMICAL_COMPANY","CHICKEN_RESTAURANT","CHILDRENS_CLOTHES","CHILD_CARE_FACILITY","CHINESE_RESTAURANT","CHRISTMAS_HOLIDAY_SHOP","CHURCH","CINEMA","CLEANING_SERVICES","CLOTHING_SHOP","CLUB_ASSOCIATION","COCKTAIL_BAR","COFFEE_SHOP","COLLEGE_OR_UNIVERSITY","COLLEGE_UNIVERSITY","COLOMBIAN_RESTAURANT","COMEDY_CLUB","COMMERCIAL_BUILDING","COMMUNITY_CENTER","COMPANY","COMPUTER_COMPUTER_SUPPLIES","COMPUTER_DATA_SERVICES","CONCERT_HALL","CONSTRUCTION_COMPANY","CONSTRUCTION_MATERIAL_EQUIPMENT","CONSUMER_ELECTRONICS","CONVENIENCE_STORE","CORSICAN_RESTAURANT","COTTAGE_RENTAL","COURIER_DROP_BOX","COURTHOUSE","COVE","CREOLE_RESTAURANT","CREPERIE","CRICKET_GROUND","CUBAN_RESTAURANT","CULTURAL_CENTER","CURRENCY_EXCHANGE","CURTAINS_TEXTILES","CZECH_RESTAURANT","C_DS_DVD_VIDEOS","DAM","DANCE_STUDIO_SCHOOL","DANISH_RESTAURANT","DELICATESSEN","DELIVERY_SERVICE","DENTIST","DEPARTMENT_STORE","DINNER_THEATER","DISCO_CLUB","DIVERSIFIED_FINANCIALS","DOCTOR","DONGBEI_RESTAURANT","DOUGHNUT_RESTAURANT","DO_IT_YOURSELF_CENTERS","DRIVE_IN_MOVIES","DRIVE_THROUGH_BOTTLE_SHOP","DRIVING_SCHOOL","DRUG_STORE","DRY_CLEANER","DUNE","DUTCH_RESTAURANT","EGYPTIAN_RESTAURANT","ELECTRICAL_APPLIANCES_SHOP","ELECTRIC_VEHICLE_STATION","ELECTRONICS_COMPANY","EMBASSY","EMERGENCY_MEDICAL_SERVICE","EMERGENCY_ROOM","ENGLISH_RESTAURANT","ENTERTAINMENT","EQUIPMENT_RENTAL","ETHIOPIAN_RESTAURANT","EXCHANGE","EXHIBITION_CONVENTION_CENTER","FACTORY_OUTLET","FAIRGROUND","FARM","FARMERS_MARKET","FAST_FOOD","FERRY_TERMINAL","FINNISH_RESTAURANT","FIRE_STATION_BRIGADE","FISHING_HUNTING_AREA","FISHMONGER","FITNESS_CLUB_CENTER","FLATS_APARTMENT_COMPLEX","FLORISTS","FONDUE_RESTAURANT","FOOD_MARKET","FOOTBALL_STADIUM","FOOTWEAR_SHOE_REPAIRS","FOREST_AREA","FRENCH_RESTAURANT","FRONTIER_CROSSING","FUEL_FACILITIES","FUNERAL_SERVICE_MORTUARIES","FURNITURE_HOME_FURNISHINGS","FUSION_RESTAURANT","GARDEN_CENTERS_SERVICES","GAS_STATION","GENERAL_HOSPITAL_AND_POLYCLINIC","GENERAL_PRACTITIONER","GEOGRAPHIC_FEATURE","GERMAN_RESTAURANT","GIFTS_CARDS_NOVELTIES_SOUVENIRS","GLASSWARE_CERAMIC_SHOP","GLASS_WINDOWS_STORE","GOLD_EXCHANGE","GOLF_COURSE","GOVERNMENT_OFFICE","GREEK_RESTAURANT","GREENGROCER","GRILL_RESTAURANT","GROCERY_STORE","GURUDWARA","HAIRDRESSER","HAMBURGER_RESTAURANT","HARBOR","HARDWARE_STORE","HAWAIIAN_RESTAURANT","HEALTH_CARE_SERVICE","HELIPAD_HELICOPTER_LANDING","HIGH_SCHOOL","HIKING_TRAIL","HILL","HISTORICAL_PARK","HISTORIC_SITE","HOBBY_SHOP","HOCKEY_CLUB","HOLIDAY_RENTAL","HOME_APPLIANCE_REPAIR","HORSE_RACING_TRACK","HORSE_RIDING_CENTER","HORSE_RIDING_TRAIL","HORTICULTURE","HOSPITAL","HOSPITAL_FOR_WOMEN_AND_CHILDREN","HOSPITAL_OF_CHINESE_MEDICINE","HOSPITAL_POLYCLINIC","HOSTEL","HOTEL","HOTEL_MOTEL","HOT_POT_RESTAURANT","HOUSE_GARDEN_FURNITURE_FITTINGS","HUNAN_RESTAURANT","HUNGARIAN_RESTAURANT","ICE_CREAM_PARLOR","ICE_HOCKEY_ARENA","ICE_SKATING_RINK","IMPORTANT_TOURIST_ATTRACTION","IMPORT_EXPORT_AND_DISTRIBUTION","INDIAN_RESTAURANT","INDONESIAN_RESTAURANT","INDUSTRIAL_BUILDING","INFORMAL_MARKET","INSURANCE_COMPANY","INTERNATIONAL_RAILROAD_STATION","INTERNATIONAL_RESTAURANT","INTERNET_CAFE","INVESTMENT_ADVISOR","IRANIAN_RESTAURANT","IRISH_RESTAURANT","ISLAND","ISRAELI_RESTAURANT","ITALIAN_RESTAURANT","JAMAICAN_RESTAURANT","JAPANESE_RESTAURANT","JAZZ_CLUB","JEWELRY_CLOCKS_WATCHES","JEWISH_RESTAURANT","JUNIOR_COLLEGE_COMMUNITY_COLLEGE","KARAOKE_CLUB","KITCHENS_BATHROOMS","KOREAN_RESTAURANT","KOSHER_RESTAURANT","LANGUAGE_SCHOOL","LATIN_AMERICAN_RESTAURANT","LAUNDRY","LEBANESE_RESTAURANT","LEGAL_SERVICES","LEISURE_CENTER","LIBRARY","LIGHTING_SHOPS","LOCALE","LOCAL_SPECIALITIES_SHOP","LOTTERY_SHOP","MANUFACTURING_COMPANY","MANUFACTURING_FACILITY","MARIJUANA_DISPENSARY","MARINA","MARKET","MARSH","MAUSOLEUM_GRAVE","MECHANICAL_ENGINEERING","MEDIA_FACILITY","MEDICAL_SUPPLIES_EQUIPMENT","MEDICINAL_MARIJUANA_DISPENSARY","MEDITERRANEAN_RESTAURANT","MEMORIAL","MENS_CLOTHING","MEXICAN_RESTAURANT","MICROBREWERY","MIDDLE_EASTERN_RESTAURANT","MIDDLE_SCHOOL","MILITARY_AIRPORT","MINERAL_HOT_SPRINGS","MINING_COMPANY","MOBILE_PHONE_SHOP","MONGOLIAN_RESTAURANT","MONUMENT","MOROCCAN_RESTAURANT","MOSQUE","MOTEL","MOTORCYCLE_DEALER","MOTORCYCLE_REPAIR","MOTORING_ORGANIZATION_OFFICE","MOTOR_RACING_STADIUM","MOUNTAIN_BIKE_TRAIL","MOUNTAIN_PASS","MOUNTAIN_PEAK","MOVIE_THEATER","MOVING_STORAGE_COMPANY","MULTI_PURPOSE_STADIUM","MUSEUM","MUSIC_CENTER","MUSIC_INSTRUMENTS_STORE","NAIL_SALON","NATIONAL_RAILROAD_STATION","NATIVE_RESERVATION","NATURAL_TOURIST_ATTRACTION","NEPALESE_RESTAURANT","NETBALL_STADIUM","NEWSAGENTS_TOBACCONISTS","NIGHTLIFE","NON_GOVERNMENTAL_ORGANIZATION","NORWEGIAN_RESTAURANT","OASIS","OBSERVATORY","OFFICE_EQUIPMENT","OIL_NATURAL_GAS","OPEN_CAR_PARKING_AREA","OPEN_PARKING_AREA","OPERA_HOUSE","OPTICIAN","ORGANIC_FOOD_RESTAURANT","ORIENTAL_RESTAURANT","OTHER_FOOD_SHOPS","OTHER_WINTER_SPORT","PAGODA","PAINTING_DECORATING","PAKISTANI_RESTAURANT","PARK","PARKING_GARAGE","PARKWAY","PARK_RECREATION_AREA","PASSENGER_TRANSPORT_TICKET_OFFICE","PAWN_SHOP","PERSONAL_CARE_FACILITY","PERSONAL_SERVICE","PERUVIAN_RESTAURANT","PETROL_STATION","PET_SUPPLIES","PHARMACEUTICAL_COMPANY","PHARMACY","PHILIPPINE_RESTAURANT","PHOTOCOPY_SHOP","PHOTO_LAB_DEVELOPMENT","PICNIC_AREA","PIZZERIA","PLACE_OF_WORSHIP","PLAIN_FLAT","PLANETARIUM","PLATEAU","POLICE_STATION","POLISH_RESTAURANT","POLYNESIAN_RESTAURANT","PORTUGUESE_RESTAURANT","PORT_WAREHOUSE_FACILITY","POST_OFFICE","PRE_SCHOOL","PRIMARY_PRODUCER","PRIMARY_RESOURCE_UTILITY","PRIMARY_SCHOOL","PRISON_CORRECTIONAL_FACILITY","PRIVATE_AIRPORT","PROTECTED_AREA","PUB","PUBLIC_AIRPORT","PUBLIC_AMENITY","PUBLIC_CALL_BOX","PUBLIC_MARKET","PUBLIC_TOILET","PUBLIC_TRANSPORT_STOP","PUBLISHING_TECHNOLOGIES","PUB_FOOD","QUARRY","RACE_TRACK","RAILWAY_STATION","RAPIDS","REAL_ESTATE_AGENT","REAL_ESTATE_COMPANY","RECREATIONAL_CAMPING_GROUND","RECREATIONAL_MARIJUANA_DISPENSARY","RECREATIONAL_VEHICLE_DEALER","RECREATION_AREA","RECYCLING_SHOP","REEF","RENT_A_CAR_FACILITY","RENT_A_CAR_PARKING","REPAIR_FACILITY","REPAIR_SHOP","RESEARCH_FACILITY","RESERVOIR","RESIDENTIAL_ACCOMMODATION","RESORT","RESTAURANT","RESTAURANT_AREA","REST_AREA","REST_CAMP","RETAIL_OUTLET","RETIREMENT_COMMUNITY","RIDGE","RIVER_CROSSING","ROAD_RESCUE","ROAD_TRAFFIC_CONTROL_CENTER","ROCKS","ROCK_CLIMBING_TRAIL","RUGBY_GROUND","RUSSIAN_RESTAURANT","SALAD_BAR","SANDWICH_RESTAURANT","SAUNA_SOLARIUM_MASSAGE","SCANDINAVIAN_RESTAURANT","SCENIC_PANORAMIC_VIEW","SCHOOL","SEAFOOD","SECURED_ENTRANCE","SECURITY_PRODUCTS","SENIOR_HIGH_SCHOOL","SERVICE_COMPANY","SHANDONG_RESTAURANT","SHOP","SHOPPING_CENTER","SHOPPING_SERVICE","SICHUAN_RESTAURANT","SKI_RESORT","SNACKS_RESTAURANT","SNOOKER_POOL_BILLIARD","SOCCER_STADIUM","SOFTWARE_COMPANY","SOUL_FOOD","SOUP_RESTAURANT","SPANISH_RESTAURANT","SPECIALIST","SPECIALTY_CLOTHING_SHOP","SPECIALTY_FOODS","SPECIAL_HOSPITAL","SPORTS_CENTER","SPORTS_EQUIPMENT_CLOTHING","STADIUM","STATION_ACCESS","STATUE","STEAK_HOUSE","STOCK_EXCHANGE","STREETCAR_STOP","SUBWAY_STATION","SUPERMARKETS_HYPERMARKETS","SUSHI_RESTAURANT","SWEDISH_RESTAURANT","SWIMMING_POOL","SWISS_RESTAURANT","SYNAGOG","SYRIAN_RESTAURANT","TAILOR_SHOP","TAIWANESE_RESTAURANT","TAKEOUT_FOOD","TAPAS_RESTAURANT","TAXI_LIMOUSINE_SHUTTLE_SERVICE","TAXI_STAND","TAX_SERVICES","TEA_HOUSE","TELECOMMUNICATIONS","TEMPLE","TENNIS_COURT","TEPPANYAKI_RESTAURANT","THAI_RESTAURANT","THEATER","THEMATIC_SPORT_CENTER","TIBETAN_RESTAURANT","TIRE_SERVICE","TOLL_GATE","TOURIST_ATTRACTION","TOURIST_INFORMATION_OFFICE","TOWER","TOYS_GAMES_SHOP","TRAFFIC_CONTROL_DEPARTMENT","TRAFFIC_SERVICE_CENTER","TRAILS","TRAIL_SYSTEM","TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION","TRANSPORT_COMPANY","TRAVEL_AGENT","TRUCK_DEALER","TRUCK_REPAIR_AND_SERVICE","TRUCK_STOP","TUNISIAN_RESTAURANT","TUNNEL","TURKISH_RESTAURANT","URBAN_STATION","VACATION_RENTAL","VALLEY","VAN_DEALER","VARIETY_STORE","VEGETARIAN_RESTAURANT","VENEZUELAN_RESTAURANT","VETERINARIAN","VIDEO_RENTAL_SHOP","VIETNAMESE_RESTAURANT","VILLA_RENTAL","VOCATIONAL_SCHOOL","WATER_HOLE","WATER_SPORT","WEDDING_SERVICES","WEIGH_STATION","WELFARE_ORGANIZATION","WELL","WESTERN_RESTAURANT","WHOLESALE_CLUB","WILDERNESS_AREA","WILDLIFE_PARK","WINERY","WINE_SPIRITS","WOMENS_CLOTHING","YACHT_BASIN","YOGURT_JUICE_BAR","ZOO","ZOOS_ARBORETA_BOTANICAL_GARDEN"],r=["Small_Paddle_Inductive","Large_Paddle_Inductive","IEC_60309_1_Phase","IEC_60309_3_Phase","IEC_62196_Type_1_Outlet","IEC_62196_Type_2_Outlet","IEC_62196_Type_3_Outlet","IEC_62196_Type_1_Connector_Cable_Attached","IEC_62196_Type_2_Connector_Cable_Attached","IEC_62196_Type_3_Connector_Cable_Attached","Combo_to_IEC_62196_Type_1_Base","Combo_to_IEC_62196_Type_2_Base","Type_E_French_Standard_CEE_7_5","Type_F_Schuko_CEE_7_4","Type_G_British_Standard_BS_1363","Type_J_Swiss_Standard_SEV_1011","China_GB_Part_2","China_GB_Part_3","IEC_309_DC_Plug","AVCON_Connector","Tesla_Connector","NEMA_5_20","CHAdeMO","SAE_J1772","TEPCO","Better_Place_Socket","Marechal_Socket","Standard_Household_Country_Specific"],n=["No_Payment","Subscription","Direct"],M=["tollRoads","motorways","ferries","unpavedRoads","carpools","alreadyUsedRoads","borderCrossings","tunnels","carTrains","lowEmissionZones"],o=["carpool","carTrain","country","ferry","importantRoadStretch","lowEmissionZone","motorway","pedestrian","roadShields","speedLimit","toll","tollVignette","traffic","tunnel","unpaved","urban","vehicleRestricted"],H=[...o,"lanes"],i=[...H,"leg"],a=["accident","animals-on-road","broken-down-vehicle","danger","flooding","fog","frost","jam","lane-closed","narrow-lanes","other","rain","road-closed","roadworks","wind"],G=["Unified","AR","IN","PK","IL","MA","RU","TR","CN"],D=A=>!!A&&(A.length>=4&&A[3]!==A[1]&&A[2]!==A[0]),s=A=>D(A)?A:void 0,B=(A,E)=>{if(A&&!(A.length<2))return E?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[0]?A[0]:E[2],E[3]<A[1]?A[1]:E[3]]:[A[0],A[1],A[0],A[1]]},d=(A,E)=>E&&A?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[2]?A[2]:E[2],E[3]<A[3]?A[3]:E[3]]:A||E,c=A=>A?.length?A.reduce((A,E)=>d(E,A)):void 0,F=A=>{const E=A?.length;if(!E)return;let R;const T=Math.ceil(E/1e3);for(let _=0;_<E;_+=T)R=B(A[_],R);return 1===T?R:B(A[E-1],R)},Y=A=>{if(A){if(Array.isArray(A))return"number"==typeof A[0]?A.length>=4?A:void 0:c(A.map(A=>Y(A)));if(A.bbox)return A.bbox;switch(A.type){case"Feature":return Y(A.geometry);case"FeatureCollection":return c(A.features.map(Y));case"GeometryCollection":return c(A.geometries.map(Y));case"Point":return B(A.coordinates);case"LineString":case"MultiPoint":return F(A.coordinates);case"MultiLineString":case"Polygon":return c(A.coordinates.map(F));case"MultiPolygon":return c(A.coordinates.flatMap(A=>A.map(F)));default:return}}},V=(A,E)=>d(Y(A),E),l=A=>[(A[0]+A[2])/2,(A[1]+A[3])/2],u=A=>{const[E,R,T,_]=A;return{type:"Feature",geometry:{type:"Polygon",coordinates:[[[E,R],[T,R],[T,_],[E,_],[E,R]]]},properties:{}}},p=()=>Date.now().toString(36)+Math.random().toString(36).substring(2),K="MapsSDKJS",m=A=>{if(!/^[a-zA-Z0-9-]{1,100}$/.test(A))throw new TypeError(`a string matching regular expression ^[a-zA-Z0-9-]{1,100}$ is expected, but ${A} ['${typeof A}'] given`);return A},h=A=>({"TomTom-User-Agent":`${K}/0.46.0`,...A.trackingId&&{"Tracking-ID":m(A.trackingId)}}),W=(A,E)=>{if(A){if(Array.isArray(A))return A;if(A.coordinates)return A.coordinates;if(A.geometry){if("main-when-available"===E?.useEntryPoint){const E=(R=A,R?.properties?.entryPoints?.find(A=>"main"===A.type));return E?.position??A.geometry.coordinates}return A.geometry.coordinates}}var R;return null},g=(A,E)=>{const R=W(A,E);if(!R)throw new Error(`The received object does not have lng-lat coordinates: ${JSON.stringify(A)}`);return R},y=A=>({type:"Point",coordinates:A}),f=A=>({type:"Feature",geometry:y(A),properties:{}}),v={ROAD_TRAFFIC_CONTROL_CENTER:7301,TRAFFIC_CONTROL_DEPARTMENT:7301002,TRAFFIC_SERVICE_CENTER:7301002,TRAIL_SYSTEM:7302,TRAILS:7302,MOUNTAIN_BIKE_TRAIL:7302002,ADVENTURE_VEHICLE_TRAIL:7302003,HIKING_TRAIL:7302004,HORSE_RIDING_TRAIL:7302005,ROCK_CLIMBING_TRAIL:7302006,RESIDENTIAL_ACCOMMODATION:7303,RETIREMENT_COMMUNITY:7303002,FLATS_APARTMENT_COMPLEX:7303003,HOLIDAY_RENTAL:7304,VACATION_RENTAL:7304,COTTAGE_RENTAL:7304002,VILLA_RENTAL:7304003,BUNGALOW_RENTAL:7304004,CHALET_RENTAL:7304005,APARTMENT_RENTAL:7304006,ADVENTURE_SPORTS_FACILITY:7305,ADVENTURE_SPORTS_VENUE:7305,HELIPAD_HELICOPTER_LANDING:7308,ELECTRIC_VEHICLE_STATION:7309,REPAIR_FACILITY:7310,REPAIR_SHOP:7310,BODYSHOP:7310002,CAR_GLASS_REPLACEMENT_SHOP:7310003,CAR_REPAIR_AND_SERVICE:7310004,TIRE_SERVICE:7310007,MOTORCYCLE_REPAIR:7310008,TRUCK_REPAIR_AND_SERVICE:7310009,FUEL_FACILITIES:7311,GAS_STATION:7311,PETROL_STATION:7311,RENT_A_CAR_FACILITY:7312,PARKING_GARAGE:7313,HOTEL_MOTEL:7314,B_B_GUEST_HOUSE:7314002,HOTEL:7314003,HOSTEL:7314004,RESORT:7314005,MOTEL:7314006,CABINS_LODGES:7314007,REST_CAMP:7314008,RESTAURANT:7315,AFRICAN_RESTAURANT:7315002,AMERICAN_RESTAURANT:7315003,AUSTRIAN_RESTAURANT:7315004,BARBECUE_RESTAURANT:7315005,BELGIAN_RESTAURANT:7315006,BISTRO:7315007,BRITISH_RESTAURANT:7315008,CALIFORNIAN_RESTAURANT:7315009,CANADIAN_RESTAURANT:7315010,CARIBBEAN_RESTAURANT:7315011,CHINESE_RESTAURANT:7315012,CREPERIE:7315013,DUTCH_RESTAURANT:7315014,FAST_FOOD:7315015,PHILIPPINE_RESTAURANT:7315016,FRENCH_RESTAURANT:7315017,GERMAN_RESTAURANT:7315018,GREEK_RESTAURANT:7315019,GRILL_RESTAURANT:7315020,HAWAIIAN_RESTAURANT:7315021,HUNGARIAN_RESTAURANT:7315022,INDIAN_RESTAURANT:7315023,INDONESIAN_RESTAURANT:7315024,ITALIAN_RESTAURANT:7315025,JAPANESE_RESTAURANT:7315026,JEWISH_RESTAURANT:7315027,KOREAN_RESTAURANT:7315028,LATIN_AMERICAN_RESTAURANT:7315029,LEBANESE_RESTAURANT:7315030,MEDITERRANEAN_RESTAURANT:7315032,MEXICAN_RESTAURANT:7315033,MIDDLE_EASTERN_RESTAURANT:7315034,ORIENTAL_RESTAURANT:7315035,PIZZERIA:7315036,POLISH_RESTAURANT:7315037,PORTUGUESE_RESTAURANT:7315038,PUB_FOOD:7315039,RUSSIAN_RESTAURANT:7315040,SANDWICH_RESTAURANT:7315042,SEAFOOD:7315043,SPANISH_RESTAURANT:7315044,STEAK_HOUSE:7315045,SWISS_RESTAURANT:7315047,THAI_RESTAURANT:7315048,TURKISH_RESTAURANT:7315049,VEGETARIAN_RESTAURANT:7315050,VIETNAMESE_RESTAURANT:7315051,HUNAN_RESTAURANT:7315052,SHANDONG_RESTAURANT:7315053,SICHUAN_RESTAURANT:7315056,DONGBEI_RESTAURANT:7315057,HOT_POT_RESTAURANT:7315058,TAIWANESE_RESTAURANT:7315059,WESTERN_RESTAURANT:7315060,PERUVIAN_RESTAURANT:7315061,ASIAN_RESTAURANT:7315062,CREOLE_RESTAURANT:7315063,SOUL_FOOD:7315064,IRISH_RESTAURANT:7315065,JAMAICAN_RESTAURANT:7315066,KOSHER_RESTAURANT:7315067,CZECH_RESTAURANT:7315068,HAMBURGER_RESTAURANT:7315069,CHICKEN_RESTAURANT:7315070,FUSION_RESTAURANT:7315071,BRAZILIAN_RESTAURANT:7315072,INTERNATIONAL_RESTAURANT:7315073,MOROCCAN_RESTAURANT:7315074,ORGANIC_FOOD_RESTAURANT:7315075,TAPAS_RESTAURANT:7315076,ICE_CREAM_PARLOR:7315078,DOUGHNUT_RESTAURANT:7315079,AFGHAN_RESTAURANT:7315081,ARABIAN_RESTAURANT:7315083,ARMENIAN_RESTAURANT:7315085,AUSTRALIAN_RESTAURANT:7315086,BASQUE_RESTAURANT:7315087,BOLIVIAN_RESTAURANT:7315088,BULGARIAN_RESTAURANT:7315090,BURMESE_RESTAURANT:7315091,CAMBODIAN_RESTAURANT:7315092,COLOMBIAN_RESTAURANT:7315094,CORSICAN_RESTAURANT:7315095,CUBAN_RESTAURANT:7315096,DANISH_RESTAURANT:7315098,EGYPTIAN_RESTAURANT:7315100,ENGLISH_RESTAURANT:7315101,ETHIOPIAN_RESTAURANT:7315102,FINNISH_RESTAURANT:7315104,IRANIAN_RESTAURANT:7315105,ISRAELI_RESTAURANT:7315106,MONGOLIAN_RESTAURANT:7315110,NEPALESE_RESTAURANT:7315111,NORWEGIAN_RESTAURANT:7315112,SCANDINAVIAN_RESTAURANT:7315114,SWEDISH_RESTAURANT:7315119,SYRIAN_RESTAURANT:7315120,TEPPANYAKI_RESTAURANT:7315121,TIBETAN_RESTAURANT:7315122,TUNISIAN_RESTAURANT:7315123,VENEZUELAN_RESTAURANT:7315125,PAKISTANI_RESTAURANT:7315127,POLYNESIAN_RESTAURANT:7315129,FONDUE_RESTAURANT:7315134,SNACKS_RESTAURANT:7315139,SOUP_RESTAURANT:7315140,BUFFET_RESTAURANT:7315142,SALAD_BAR:7315143,TAKEOUT_FOOD:7315145,BANQUET_ROOMS:7315146,CAFETERIA:7315147,SUSHI_RESTAURANT:7315148,YOGURT_JUICE_BAR:7315149,TOURIST_INFORMATION_OFFICE:7316,MUSEUM:7317,THEATER:7318,CONCERT_HALL:7318002,MUSIC_CENTER:7318003,OPERA_HOUSE:7318004,CABARET_THEATER:7318006,AMPHITHEATER:7318007,DINNER_THEATER:7318008,CULTURAL_CENTER:7319,SPORTS_CENTER:7320,FITNESS_CLUB_CENTER:7320002,HORSE_RIDING_CENTER:7320003,THEMATIC_SPORT_CENTER:7320005,HOSPITAL:7321,HOSPITAL_POLYCLINIC:7321,GENERAL_HOSPITAL_AND_POLYCLINIC:7321002,SPECIAL_HOSPITAL:7321003,HOSPITAL_OF_CHINESE_MEDICINE:7321004,HOSPITAL_FOR_WOMEN_AND_CHILDREN:7321005,POLICE_STATION:7322,POST_OFFICE:7324,PHARMACY:7326,DEPARTMENT_STORE:7327,BANK:7328,MARKET:7332,INFORMAL_MARKET:7332002,PUBLIC_MARKET:7332003,FARMERS_MARKET:7332004,SUPERMARKETS_HYPERMARKETS:7332005,AGRICULTURAL_BUSINESS:7335,AGRICULTURE:7335,HORTICULTURE:7335002,PRIMARY_PRODUCER:7335003,FARM:7335004,SCENIC_PANORAMIC_VIEW:7337,SWIMMING_POOL:7338,PLACE_OF_WORSHIP:7339,CHURCH:7339002,MOSQUE:7339003,SYNAGOG:7339004,TEMPLE:7339005,GURUDWARA:7339006,PAGODA:7339008,CASINO:7341,CINEMA:7342,MOVIE_THEATER:7342,DRIVE_IN_MOVIES:7342003,MARINA:7347,YACHT_BASIN:7347003,WINERY:7349,FERRY_TERMINAL:7352,TRUCK_STOP:7358,WEIGH_STATION:7359,CAMPING_GROUND:7360,RECREATIONAL_CAMPING_GROUND:7360002,CARAVAN_SITE:7360003,COMMUNITY_CENTER:7363,EMBASSY:7365,FRONTIER_CROSSING:7366,GOVERNMENT_OFFICE:7367,MOTORING_ORGANIZATION_OFFICE:7368,OPEN_PARKING_AREA:7369,OPEN_CAR_PARKING_AREA:7369002,SCHOOL:7372,CHILD_CARE_FACILITY:7372003,PRE_SCHOOL:7372004,PRIMARY_SCHOOL:7372005,HIGH_SCHOOL:7372006,SENIOR_HIGH_SCHOOL:7372007,VOCATIONAL_SCHOOL:7372008,LANGUAGE_SCHOOL:7372010,ART_SCHOOL:7372012,MIDDLE_SCHOOL:7372014,DRIVING_SCHOOL:7372016,SHOPPING_CENTER:7373,STADIUM:7374,ATHLETICS_TRACK:7374002,CRICKET_GROUND:7374003,SOCCER_STADIUM:7374004,HORSE_RACING_TRACK:7374005,MULTI_PURPOSE_STADIUM:7374006,RUGBY_GROUND:7374007,ICE_HOCKEY_ARENA:7374008,BASEBALL_PARK:7374009,FOOTBALL_STADIUM:7374010,MOTOR_RACING_STADIUM:7374011,BASKETBALL_ARENA:7374012,RACE_TRACK:7374013,NETBALL_STADIUM:7374014,TOLL_GATE:7375,IMPORTANT_TOURIST_ATTRACTION:7376,TOURIST_ATTRACTION:7376,BUILDING:7376002,MONUMENT:7376003,NATURAL_TOURIST_ATTRACTION:7376004,OBSERVATORY:7376005,PLANETARIUM:7376006,DAM:7376007,TUNNEL:7376008,TOWER:7376009,BRIDGE:7376010,MAUSOLEUM_GRAVE:7376011,ARCH:7376012,STATUE:7376013,WATER_HOLE:7376014,COLLEGE_UNIVERSITY:7377,COLLEGE_OR_UNIVERSITY:7377002,JUNIOR_COLLEGE_COMMUNITY_COLLEGE:7377003,BUSINESS_PARK:7378,RAILWAY_STATION:7380,INTERNATIONAL_RAILROAD_STATION:7380002,NATIONAL_RAILROAD_STATION:7380003,URBAN_STATION:7380004,SUBWAY_STATION:7380005,AIRPORT:7383,PUBLIC_AIRPORT:7383002,PRIVATE_AIRPORT:7383003,MILITARY_AIRPORT:7383004,AIRFIELD:7383005,COURIER_DROP_BOX:7388,ACCESS_GATEWAY:7389,AIRLINE_ACCESS:7389002,STATION_ACCESS:7389003,SECURED_ENTRANCE:7389004,EMERGENCY_MEDICAL_SERVICE:7391,FIRE_STATION_BRIGADE:7392,REST_AREA:7395,ATM:7397,CASH_DISPENSER:7397,GEOGRAPHIC_FEATURE:8099,MOUNTAIN_PEAK:8099002,CAVE:8099003,RIDGE:8099004,DUNE:8099005,VALLEY:8099006,PLAIN_FLAT:8099007,PLATEAU:8099008,WELL:8099010,OASIS:8099011,ROCKS:8099012,RESERVOIR:8099013,REEF:8099014,RAPIDS:8099015,BAY:8099016,COVE:8099017,HARBOR:8099018,CAPE:8099020,MINERAL_HOT_SPRINGS:8099021,ISLAND:8099022,MARSH:8099023,RIVER_CROSSING:8099024,HILL:8099025,QUARRY:8099026,LOCALE:8099027,PRIMARY_RESOURCE_UTILITY:9150,TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION:9151,NON_GOVERNMENTAL_ORGANIZATION:9152,WELFARE_ORGANIZATION:9153,PRISON_CORRECTIONAL_FACILITY:9154,CAR_WASH:9155,MANUFACTURING_FACILITY:9156,RESEARCH_FACILITY:9157,MEDIA_FACILITY:9158,PORT_WAREHOUSE_FACILITY:9159,EXCHANGE:9160,STOCK_EXCHANGE:9160002,GOLD_EXCHANGE:9160003,CURRENCY_EXCHANGE:9160004,COMPANY:9352,SERVICE_COMPANY:9352002,ADVERTISING_COMPANY:9352003,COMPUTER_DATA_SERVICES:9352004,SOFTWARE_COMPANY:9352005,DIVERSIFIED_FINANCIALS:9352006,INSURANCE_COMPANY:9352007,DELIVERY_SERVICE:9352008,REAL_ESTATE_COMPANY:9352009,MANUFACTURING_COMPANY:9352011,AGRICULTURAL_TECHNOLOGY:9352012,AUTOMOBILE_COMPANY:9352013,CHEMICAL_COMPANY:9352014,ELECTRONICS_COMPANY:9352015,MECHANICAL_ENGINEERING:9352016,PHARMACEUTICAL_COMPANY:9352018,PUBLISHING_TECHNOLOGIES:9352019,TELECOMMUNICATIONS:9352020,TAX_SERVICES:9352022,LEGAL_SERVICES:9352023,TRANSPORT_COMPANY:9352024,BUS_CHARTER_COMPANY:9352025,TAXI_LIMOUSINE_SHUTTLE_SERVICE:9352026,BUS_LINES:9352027,CLEANING_SERVICES:9352029,OIL_NATURAL_GAS:9352030,MINING_COMPANY:9352031,CONSTRUCTION_COMPANY:9352032,MOVING_STORAGE_COMPANY:9352033,AIRLINE_COMPANY:9352034,FUNERAL_SERVICE_MORTUARIES:9352036,INVESTMENT_ADVISOR:9352037,EQUIPMENT_RENTAL:9352038,BUSINESS_SERVICES:9352039,CABLE_TELEPHONE_COMPANY:9352040,AUTOMOBILE_MANUFACTURING:9352041,IMPORT_EXPORT_AND_DISTRIBUTION:9352042,CATERING_SERVICES:9352043,HOME_APPLIANCE_REPAIR:9352044,ANIMAL_SHELTER:9352045,WEDDING_SERVICES:9352046,BEACH:9357,RESTAURANT_AREA:9359,ICE_SKATING_RINK:9360,SHOP:9361,BOOK_SHOP:9361002,C_DS_DVD_VIDEOS:9361003,CHILDRENS_CLOTHES:9361004,FOOTWEAR_SHOE_REPAIRS:9361005,CLOTHING_SHOP:9361006,MENS_CLOTHING:9361007,WOMENS_CLOTHING:9361008,CONVENIENCE_STORE:9361009,DRY_CLEANER:9361010,CAMERAS_PHOTOGRAPHY:9361011,COMPUTER_COMPUTER_SUPPLIES:9361012,CONSUMER_ELECTRONICS:9361013,OFFICE_EQUIPMENT:9361014,REAL_ESTATE_AGENT:9361015,FACTORY_OUTLET:9361016,FLORISTS:9361017,BAKERY:9361018,BUTCHER:9361019,FISHMONGER:9361020,FOOD_MARKET:9361021,GREENGROCER:9361022,GROCERY_STORE:9361023,OTHER_FOOD_SHOPS:9361024,WINE_SPIRITS:9361025,GIFTS_CARDS_NOVELTIES_SOUVENIRS:9361026,HAIRDRESSER:9361027,CARPET_FLOOR_COVERINGS:9361028,CURTAINS_TEXTILES:9361029,DO_IT_YOURSELF_CENTERS:9361030,HOUSE_GARDEN_FURNITURE_FITTINGS:9361031,GARDEN_CENTERS_SERVICES:9361032,KITCHENS_BATHROOMS:9361033,LIGHTING_SHOPS:9361034,PAINTING_DECORATING:9361035,JEWELRY_CLOCKS_WATCHES:9361036,NEWSAGENTS_TOBACCONISTS:9361037,OPTICIAN:9361038,SPORTS_EQUIPMENT_CLOTHING:9361039,TOYS_GAMES_SHOP:9361040,TRAVEL_AGENT:9361041,CONSTRUCTION_MATERIAL_EQUIPMENT:9361042,MEDICAL_SUPPLIES_EQUIPMENT:9361043,VIDEO_RENTAL_SHOP:9361044,LAUNDRY:9361045,PHOTO_LAB_DEVELOPMENT:9361046,PHOTOCOPY_SHOP:9361047,ANIMAL_SERVICES:9361048,ANTIQUE_ART_SHOP:9361049,BEAUTY_SUPPLIES:9361050,DRUG_STORE:9361051,ELECTRICAL_APPLIANCES_SHOP:9361052,HOBBY_SHOP:9361053,FURNITURE_HOME_FURNISHINGS:9361054,GLASSWARE_CERAMIC_SHOP:9361055,LOCAL_SPECIALITIES_SHOP:9361056,RECYCLING_SHOP:9361057,BAGS_LEATHERWEAR:9361058,MUSIC_INSTRUMENTS_STORE:9361059,DELICATESSEN:9361060,SPECIALTY_FOODS:9361061,SHOPPING_SERVICE:9361062,RETAIL_OUTLET:9361063,PET_SUPPLIES:9361064,WHOLESALE_CLUB:9361066,BEAUTY_SALON:9361067,NAIL_SALON:9361068,HARDWARE_STORE:9361069,PAWN_SHOP:9361070,LOTTERY_SHOP:9361071,BETTING_STATION:9361072,AGRICULTURAL_SUPPLIES:9361073,MOBILE_PHONE_SHOP:9361075,DRIVE_THROUGH_BOTTLE_SHOP:9361076,TAILOR_SHOP:9361077,SECURITY_PRODUCTS:9361078,SPECIALTY_CLOTHING_SHOP:9361079,GLASS_WINDOWS_STORE:9361080,VARIETY_STORE:9361081,CHRISTMAS_HOLIDAY_SHOP:9361082,BOATING_EQUIPMENT_ACCESSORIES:9361083,PARK_RECREATION_AREA:9362,BATTLEFIELD:9362002,CEMETERY:9362003,HISTORIC_SITE:9362004,HISTORICAL_PARK:9362005,MEMORIAL:9362007,PARK:9362008,PARKWAY:9362009,RECREATION_AREA:9362011,WILDERNESS_AREA:9362014,FOREST_AREA:9362015,FISHING_HUNTING_AREA:9362016,FAIRGROUND:9362017,OTHER_WINTER_SPORT:9362025,SKI_RESORT:9362026,BOAT_LAUNCHING_RAMP:9362032,PICNIC_AREA:9362033,PROTECTED_AREA:9362037,COURTHOUSE:9363,MARIJUANA_DISPENSARY:9364,MEDICINAL_MARIJUANA_DISPENSARY:9364002,RECREATIONAL_MARIJUANA_DISPENSARY:9364003,TENNIS_COURT:9369,WATER_SPORT:9371,DOCTOR:9373,GENERAL_PRACTITIONER:9373002,SPECIALIST:9373003,DENTIST:9374,VETERINARIAN:9375,CAFE_PUB:9376,CAFE:9376002,PUB:9376003,INTERNET_CAFE:9376004,TEA_HOUSE:9376005,COFFEE_SHOP:9376006,MICROBREWERY:9376007,EXHIBITION_CONVENTION_CENTER:9377,LEISURE_CENTER:9378,BOWLING_CENTER:9378002,DANCE_STUDIO_SCHOOL:9378003,SAUNA_SOLARIUM_MASSAGE:9378005,SNOOKER_POOL_BILLIARD:9378006,NIGHTLIFE:9379,DISCO_CLUB:9379002,BAR:9379004,COCKTAIL_BAR:9379006,JAZZ_CLUB:9379008,COMEDY_CLUB:9379009,KARAOKE_CLUB:9379010,COMMERCIAL_BUILDING:9382,INDUSTRIAL_BUILDING:9383,NATIVE_RESERVATION:9389,HEALTH_CARE_SERVICE:9663,PERSONAL_SERVICE:9663002,PERSONAL_CARE_FACILITY:9663003,BLOOD_BANK:9663004,AMBULANCE_UNIT:9663005,ENTERTAINMENT:9900,AMUSEMENT_PARK:9902,AMUSEMENT_PLACE:9902004,AUTOMOTIVE_DEALER:9910,CAR_DEALER:9910002,MOTORCYCLE_DEALER:9910003,BOAT_DEALER:9910004,RECREATIONAL_VEHICLE_DEALER:9910005,TRUCK_DEALER:9910006,VAN_DEALER:9910007,BUS_DEALER:9910008,ATV_DEALER:9910009,GOLF_COURSE:9911,LIBRARY:9913,ZOOS_ARBORETA_BOTANICAL_GARDEN:9927,ARBORETA_BOTANICAL_GARDENS:9927002,ZOO:9927003,AQUATIC_ZOO:9927004,WILDLIFE_PARK:9927005,RENT_A_CAR_PARKING:9930,PUBLIC_AMENITY:9932,PASSENGER_TRANSPORT_TICKET_OFFICE:9932002,PUBLIC_CALL_BOX:9932004,PUBLIC_TOILET:9932005,ROAD_RESCUE:9932006,MOUNTAIN_PASS:9935,CLUB_ASSOCIATION:9937,BEACH_CLUB:9937002,HOCKEY_CLUB:9937003,PUBLIC_TRANSPORT_STOP:9942,BUS_STOP:9942002,TAXI_STAND:9942003,STREETCAR_STOP:9942004,EMERGENCY_ROOM:9956},$=Object.fromEntries(Object.entries(v).map(([A,E])=>[E,A])),b=(E,R,T)=>{if(0===E.geometry.coordinates.length)return 0;if(R.length<2)return 0;const _=g(T),I=A(E,_).properties.location;if(void 0===I)return 0;const N=[];for(const S of R){const R=g(S),T=A(E,R);N.push(T.properties.location??0)}for(let A=0;A<N.length-1;A++){const E=N[A],R=N[A+1];if(I>=E&&I<=R)return A+1}return I<N[0]?0:R.length},w=(A,E,R)=>{const T=b(A,E,R);return[...E.slice(0,T),R,...E.slice(T)]},Z=(A,E)=>{const{progress:R}=A.properties;if(!R||0===R.length)return;const T=A.geometry.coordinates.length;if(E<0||E>=T)return;const _=Q(R,"pointIndex",E);if(!_)return;const{lower:I,lowerVal:N,upper:S,upperVal:O}=_,C=I.distanceInMeters,L=S.distanceInMeters,U=I.travelTimeInSeconds,e=S.travelTimeInSeconds;if(void 0===C||void 0===L||void 0===U||void 0===e)return;if(N===O)return{distanceInMeters:C,travelTimeInSeconds:U};const t=(E-N)/(O-N);return{distanceInMeters:C+t*(L-C),travelTimeInSeconds:U+t*(e-U)}},X=(A,E,R)=>{const T=Z(A,E),_=Z(A,R);if(T&&_)return{start:T,end:_,delta:{distanceInMeters:_.distanceInMeters-T.distanceInMeters,travelTimeInSeconds:_.travelTimeInSeconds-T.travelTimeInSeconds}}},x=(A,E)=>X(A,E.startPointIndex,E.endPointIndex),J=(A,E)=>{const R=A.geometry.coordinates;if(!R||0===R.length||E.startPointIndex<0||E.endPointIndex>=R.length||E.startPointIndex>E.endPointIndex)return;const T=R[E.startPointIndex],_=R[E.endPointIndex],I=R[Math.floor((E.startPointIndex+E.endPointIndex)/2)];let N=B(T);return N=B(I,N),N=B(_,N),N},Q=(A,E,R)=>{let T,_,I,N;for(const S of A){const A=S[E];void 0!==A&&(A<=R&&(T=S,_=A),A>=R&&void 0===I&&(I=S,N=A))}return void 0!==T&&void 0!==_&&void 0!==I&&void 0!==N?{lower:T,lowerVal:_,upper:I,upperVal:N}:void 0},k=(A,E,R)=>{const T=A.geometry.coordinates,_=Math.min(E+1,T.length-1),I=T[E],N=T[_],S=Z(A,E),O=Z(A,_);if(S&&O)return{position:[I[0]+R*(N[0]-I[0]),I[1]+R*(N[1]-I[1])],travelTimeInSeconds:S.travelTimeInSeconds+R*(O.travelTimeInSeconds-S.travelTimeInSeconds),distanceInMeters:S.distanceInMeters+R*(O.distanceInMeters-S.distanceInMeters)}},j=(A,E,R)=>{const{progress:T}=A.properties;if(!T||0===T.length)return;const _=A.geometry.coordinates,I=T[0],N=T.at(-1),S=I[E],O=N[E];if(void 0===S||void 0===O)return;if(R<=S)return{position:_[I.pointIndex],travelTimeInSeconds:I.travelTimeInSeconds??0,distanceInMeters:I.distanceInMeters??0};if(R>=O)return{position:_[N.pointIndex],travelTimeInSeconds:N.travelTimeInSeconds??0,distanceInMeters:N.distanceInMeters??0};const C=((A,E,R)=>{const T=Q(A,E,R);if(!T)return;const{lower:_,lowerVal:I,upper:N,upperVal:S}=T,O=I===S?0:(R-I)/(S-I),C=_.pointIndex+O*(N.pointIndex-_.pointIndex),L=Math.floor(C);return{pathIndex:L,progressRatioTowardsNextPathPoint:C-L}})(T,E,R);return void 0!==C?k(A,C.pathIndex,C.progressRatioTowardsNextPathPoint):void 0},z=(A,E)=>{if("traveledTimeInSeconds"in E)return j(A,"travelTimeInSeconds",E.traveledTimeInSeconds);if("traveledDistanceInMeters"in E)return j(A,"distanceInMeters",E.traveledDistanceInMeters);const R=A.properties.summary.departureTime;if(!R)return;const T=(E.clockTime.getTime()-R.getTime())/1e3;return T<0?void 0:j(A,"travelTimeInSeconds",T)},q=(E,R)=>{const{progress:T}=E.properties;if(!T?.length)return;const _=E.geometry.coordinates,I=A(E,g(R)),N=I.properties.index??0,S=Math.min(N+1,_.length-1),O=_[N],C=_[S],L=((A,E,R)=>{const T=R[0]-A[0],_=R[1]-A[1],I=T*T+_*_;if(0===I)return 0;const N=((E[0]-A[0])*T+(E[1]-A[1])*_)/I;return Math.max(0,Math.min(1,N))})(O,I.geometry.coordinates,C);return k(E,N,L)},AA=(A,E)=>{let R;return R=Array.isArray(A)||"Feature"!==A.type?f(g(A)):A,{...R,properties:{...R.properties,radiusMeters:E}}},EA=A=>Array.isArray(A)?Array.isArray(A[0])?"path":"waypoint":"Feature"===A.type&&"LineString"===A.geometry.type?"path":"waypoint",RA=["unknown","minor","moderate","major","indefinite"],TA={1:"accident",2:"fog",3:"danger",4:"rain",5:"frost",6:"jam",7:"lane-closed",8:"road-closed",9:"roadworks",10:"wind",11:"flooding",12:"animals-on-road",13:"narrow-lanes",14:"broken-down-vehicle"},_A=Object.fromEntries(Object.entries(TA).map(([A,E])=>[E,Number(A)])),IA=A=>TA[A]??"other",NA=A=>_A[A]??0,SA=A=>A?.minutes??"min",OA=(A,E)=>{if(A){const T=Math.abs(A)/3600;let I=Math.floor(T),N=Math.round(T%1*60);60===N&&(N=0,I++);const S={..._.instance.get().displayUnits?.time,...E};if(I)return`${I} ${R=S,R?.hours??"hr"} ${N.toString().padStart(2,"0")} ${SA(S)}`;if(N)return`${N.toString()} ${SA(S)}`}var R},CA=1609.344,LA=A=>A?.meters??"m",UA=A=>A?.kilometers??"km",eA=(A,E,R)=>E<3?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,I=A<0?"-":"";if(_<.125)return`${I}${T} ${R}`;const N=T>0?T:"";return _<.375?`${I}${N}¼ ${R}`:_<.625?`${I}${N}½ ${R}`:_<.875?`${I}${N}¾ ${R}`:`${I}${T+1} ${R}`})(A,E,R):E<10?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,I=A<0?"-":"";return _<.25?`${I}${T} ${R}`:_<.75?`${I}${T}½ ${R}`:`${I}${T+1} ${R}`})(A,E,R):`${Math.round(A)} ${R}`,tA=A=>A.miles??"mi",PA=(A,E)=>{const R=A/CA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.3048),T=Math.abs(R);return T<30?`${R} ${E}`:T<500?`${10*Math.round(R/10)} ${E}`:`${100*Math.round(R/100)} ${E}`})(A,E.feet??"ft"):eA(R,T,tA(E))},rA=(A,E)=>{const R=A/CA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.9144);return Math.abs(R)<10?`${Math.round(R)} ${E}`:`${10*Math.round(R/10)} ${E}`})(A,E.yards??"yd"):eA(R,T,tA(E))},nA=(A,R)=>{if(E(A))return"";const T={..._.instance.get().displayUnits?.distance,...R};switch(T?.type??"metric"){case"metric":return((A,E)=>{const R=Math.abs(A);if(R<10)return`${A} ${LA(E)}`;if(R<500)return`${10*Math.round(A/10)} ${LA(E)}`;if(R<1e3){const R=100*Math.round(A/100);return 1e3===R||-1e3===R?`${A<0?"-":""}1 ${UA(E)}`:`${R} ${LA(E)}`}return R<1e4?`${100*Math.round(A/100)/1e3} ${UA(E)}`:`${Math.round(A/1e3)} ${UA(E)}`})(A,T);case"imperial_us":return PA(A,T);case"imperial_uk":return rA(A,T)}};export{K as TOMTOM_USER_AGENT_SDK_NAME,_ as TomTomConfig,AA as asSoftWaypoint,M as avoidableTypes,l as bboxCenter,d as bboxExpandedWithBBox,V as bboxExpandedWithGeoJSON,B as bboxExpandedWithPosition,c as bboxFromBBoxes,F as bboxFromCoordsArray,Y as bboxFromGeoJSON,s as bboxOnlyIfWithArea,Z as calculateProgressAtRoutePoint,O as chargingPointCapabilities,C as chargingPointRestrictions,S as chargingPointStatus,N as chargingStationAccessTypes,L as connectorTypes,U as currentTypes,R as defaultConfig,b as findBestWaypointInsertionIndex,nA as formatDistance,OA as formatDuration,p as generateId,h as generateTomTomHeaders,e as geographyTypes,z as getCoordinateAtRouteProgress,W as getPosition,g as getPositionStrict,q as getProgressAtNearestRoutePoint,EA as getRoutePlanningLocationType,X as getRouteProgressBetween,x as getRouteProgressForSection,J as getSectionBBox,IA as iconToTrafficIncidentCategory,RA as indexedMagnitudes,o as inputSectionTypes,H as inputSectionTypesWithGuidance,D as isBBoxWithArea,I as mergeFromGlobal,n as paymentMethods,t as placeTypes,r as plugTypes,P as poiCategories,v as poiCategoriesToID,$ as poiIDsToCategories,u as polygonFromBBox,i as sectionTypes,f as toPointFeature,y as toPointGeometry,a as trafficIncidentCategories,NA as trafficIncidentToIconCategory,G as views,w as withInsertedWaypoint};
|
|
1
|
+
import{nearestPointOnLine as A}from"@turf/turf";import{isNil as E}from"lodash-es";const R={commonBaseURL:"https://api.tomtom.com",apiKey:"",apiVersion:1},T=class{constructor(){this.config={...R}}put(A){this.config={...this.config,...A}}reset(){this.config={...R}}get(){return this.config}};T.instance=new T;let _=T;const I=(A={})=>({..._.instance.get(),...A}),N=["Public","Authorized","Restricted","Private","Unknown"],S=["Available","Reserved","Occupied","OutOfService","Unknown"],O=["ChargingProfileCapable","ChargingPreferencesCapable","ChipCardSupport","ContactlessCardSupport","CreditCardPayable","DebitCardPayable","PedTerminal","RemoteStartStopCapable","Reservable","RfidReader","StartSessionConnectorRequired","TokenGroupCapable","UnlockCapable","PlugAndCharge","Unknown"],C=["EvOnly","Plugged","Disabled","Customers","Motorcycles"],L=["StandardHouseholdCountrySpecific","IEC62196Type1","IEC62196Type1CCS","IEC62196Type2CableAttached","IEC62196Type2Outlet","IEC62196Type2CCS","IEC62196Type3","Chademo","GBT20234Part2","GBT20234Part3","IEC60309AC3PhaseRed","IEC60309AC1PhaseBlue","IEC60309DCWhite","Tesla"],U=["AC1","AC3","DC"],e=["Country","CountrySubdivision","CountrySecondarySubdivision","CountryTertiarySubdivision","Municipality","MunicipalitySubdivision","Neighbourhood","PostalCodeArea"],t=["POI","Street","Geography","Point Address","Address Range","Cross Street"],P=["ACCESS_GATEWAY","ADVENTURE_SPORTS_FACILITY","ADVENTURE_SPORTS_VENUE","ADVENTURE_VEHICLE_TRAIL","ADVERTISING_COMPANY","AFGHAN_RESTAURANT","AFRICAN_RESTAURANT","AGRICULTURAL_BUSINESS","AGRICULTURAL_SUPPLIES","AGRICULTURAL_TECHNOLOGY","AGRICULTURE","AIRFIELD","AIRLINE_ACCESS","AIRLINE_COMPANY","AIRPORT","AMBULANCE_UNIT","AMERICAN_RESTAURANT","AMPHITHEATER","AMUSEMENT_PARK","AMUSEMENT_PLACE","ANIMAL_SERVICES","ANIMAL_SHELTER","ANTIQUE_ART_SHOP","APARTMENT_RENTAL","AQUATIC_ZOO","ARABIAN_RESTAURANT","ARBORETA_BOTANICAL_GARDENS","ARCH","ARMENIAN_RESTAURANT","ART_SCHOOL","ASIAN_RESTAURANT","ATHLETICS_TRACK","ATM","ATV_DEALER","AUSTRALIAN_RESTAURANT","AUSTRIAN_RESTAURANT","AUTOMOBILE_COMPANY","AUTOMOBILE_MANUFACTURING","AUTOMOTIVE_DEALER","BAGS_LEATHERWEAR","BAKERY","BANK","BANQUET_ROOMS","BAR","BARBECUE_RESTAURANT","BASEBALL_PARK","BASKETBALL_ARENA","BASQUE_RESTAURANT","BATTLEFIELD","BAY","BEACH","BEACH_CLUB","BEAUTY_SALON","BEAUTY_SUPPLIES","BELGIAN_RESTAURANT","BETTING_STATION","BISTRO","BLOOD_BANK","BOATING_EQUIPMENT_ACCESSORIES","BOAT_DEALER","BOAT_LAUNCHING_RAMP","BODYSHOP","BOLIVIAN_RESTAURANT","BOOK_SHOP","BOWLING_CENTER","BRAZILIAN_RESTAURANT","BRIDGE","BRITISH_RESTAURANT","BUFFET_RESTAURANT","BUILDING","BULGARIAN_RESTAURANT","BUNGALOW_RENTAL","BURMESE_RESTAURANT","BUSINESS_PARK","BUSINESS_SERVICES","BUS_CHARTER_COMPANY","BUS_DEALER","BUS_LINES","BUS_STOP","BUTCHER","B_B_GUEST_HOUSE","CABARET_THEATER","CABINS_LODGES","CABLE_TELEPHONE_COMPANY","CAFE","CAFETERIA","CAFE_PUB","CALIFORNIAN_RESTAURANT","CAMBODIAN_RESTAURANT","CAMERAS_PHOTOGRAPHY","CAMPING_GROUND","CANADIAN_RESTAURANT","CAPE","CARAVAN_SITE","CARIBBEAN_RESTAURANT","CARPET_FLOOR_COVERINGS","CAR_DEALER","CAR_GLASS_REPLACEMENT_SHOP","CAR_REPAIR_AND_SERVICE","CAR_WASH","CASH_DISPENSER","CASINO","CATERING_SERVICES","CAVE","CEMETERY","CHALET_RENTAL","CHEMICAL_COMPANY","CHICKEN_RESTAURANT","CHILDRENS_CLOTHES","CHILD_CARE_FACILITY","CHINESE_RESTAURANT","CHRISTMAS_HOLIDAY_SHOP","CHURCH","CINEMA","CLEANING_SERVICES","CLOTHING_SHOP","CLUB_ASSOCIATION","COCKTAIL_BAR","COFFEE_SHOP","COLLEGE_OR_UNIVERSITY","COLLEGE_UNIVERSITY","COLOMBIAN_RESTAURANT","COMEDY_CLUB","COMMERCIAL_BUILDING","COMMUNITY_CENTER","COMPANY","COMPUTER_COMPUTER_SUPPLIES","COMPUTER_DATA_SERVICES","CONCERT_HALL","CONSTRUCTION_COMPANY","CONSTRUCTION_MATERIAL_EQUIPMENT","CONSUMER_ELECTRONICS","CONVENIENCE_STORE","CORSICAN_RESTAURANT","COTTAGE_RENTAL","COURIER_DROP_BOX","COURTHOUSE","COVE","CREOLE_RESTAURANT","CREPERIE","CRICKET_GROUND","CUBAN_RESTAURANT","CULTURAL_CENTER","CURRENCY_EXCHANGE","CURTAINS_TEXTILES","CZECH_RESTAURANT","C_DS_DVD_VIDEOS","DAM","DANCE_STUDIO_SCHOOL","DANISH_RESTAURANT","DELICATESSEN","DELIVERY_SERVICE","DENTIST","DEPARTMENT_STORE","DINNER_THEATER","DISCO_CLUB","DIVERSIFIED_FINANCIALS","DOCTOR","DONGBEI_RESTAURANT","DOUGHNUT_RESTAURANT","DO_IT_YOURSELF_CENTERS","DRIVE_IN_MOVIES","DRIVE_THROUGH_BOTTLE_SHOP","DRIVING_SCHOOL","DRUG_STORE","DRY_CLEANER","DUNE","DUTCH_RESTAURANT","EGYPTIAN_RESTAURANT","ELECTRICAL_APPLIANCES_SHOP","ELECTRIC_VEHICLE_STATION","ELECTRONICS_COMPANY","EMBASSY","EMERGENCY_MEDICAL_SERVICE","EMERGENCY_ROOM","ENGLISH_RESTAURANT","ENTERTAINMENT","EQUIPMENT_RENTAL","ETHIOPIAN_RESTAURANT","EXCHANGE","EXHIBITION_CONVENTION_CENTER","FACTORY_OUTLET","FAIRGROUND","FARM","FARMERS_MARKET","FAST_FOOD","FERRY_TERMINAL","FINNISH_RESTAURANT","FIRE_STATION_BRIGADE","FISHING_HUNTING_AREA","FISHMONGER","FITNESS_CLUB_CENTER","FLATS_APARTMENT_COMPLEX","FLORISTS","FONDUE_RESTAURANT","FOOD_MARKET","FOOTBALL_STADIUM","FOOTWEAR_SHOE_REPAIRS","FOREST_AREA","FRENCH_RESTAURANT","FRONTIER_CROSSING","FUEL_FACILITIES","FUNERAL_SERVICE_MORTUARIES","FURNITURE_HOME_FURNISHINGS","FUSION_RESTAURANT","GARDEN_CENTERS_SERVICES","GAS_STATION","GENERAL_HOSPITAL_AND_POLYCLINIC","GENERAL_PRACTITIONER","GEOGRAPHIC_FEATURE","GERMAN_RESTAURANT","GIFTS_CARDS_NOVELTIES_SOUVENIRS","GLASSWARE_CERAMIC_SHOP","GLASS_WINDOWS_STORE","GOLD_EXCHANGE","GOLF_COURSE","GOVERNMENT_OFFICE","GREEK_RESTAURANT","GREENGROCER","GRILL_RESTAURANT","GROCERY_STORE","GURUDWARA","HAIRDRESSER","HAMBURGER_RESTAURANT","HARBOR","HARDWARE_STORE","HAWAIIAN_RESTAURANT","HEALTH_CARE_SERVICE","HELIPAD_HELICOPTER_LANDING","HIGH_SCHOOL","HIKING_TRAIL","HILL","HISTORICAL_PARK","HISTORIC_SITE","HOBBY_SHOP","HOCKEY_CLUB","HOLIDAY_RENTAL","HOME_APPLIANCE_REPAIR","HORSE_RACING_TRACK","HORSE_RIDING_CENTER","HORSE_RIDING_TRAIL","HORTICULTURE","HOSPITAL","HOSPITAL_FOR_WOMEN_AND_CHILDREN","HOSPITAL_OF_CHINESE_MEDICINE","HOSPITAL_POLYCLINIC","HOSTEL","HOTEL","HOTEL_MOTEL","HOT_POT_RESTAURANT","HOUSE_GARDEN_FURNITURE_FITTINGS","HUNAN_RESTAURANT","HUNGARIAN_RESTAURANT","ICE_CREAM_PARLOR","ICE_HOCKEY_ARENA","ICE_SKATING_RINK","IMPORTANT_TOURIST_ATTRACTION","IMPORT_EXPORT_AND_DISTRIBUTION","INDIAN_RESTAURANT","INDONESIAN_RESTAURANT","INDUSTRIAL_BUILDING","INFORMAL_MARKET","INSURANCE_COMPANY","INTERNATIONAL_RAILROAD_STATION","INTERNATIONAL_RESTAURANT","INTERNET_CAFE","INVESTMENT_ADVISOR","IRANIAN_RESTAURANT","IRISH_RESTAURANT","ISLAND","ISRAELI_RESTAURANT","ITALIAN_RESTAURANT","JAMAICAN_RESTAURANT","JAPANESE_RESTAURANT","JAZZ_CLUB","JEWELRY_CLOCKS_WATCHES","JEWISH_RESTAURANT","JUNIOR_COLLEGE_COMMUNITY_COLLEGE","KARAOKE_CLUB","KITCHENS_BATHROOMS","KOREAN_RESTAURANT","KOSHER_RESTAURANT","LANGUAGE_SCHOOL","LATIN_AMERICAN_RESTAURANT","LAUNDRY","LEBANESE_RESTAURANT","LEGAL_SERVICES","LEISURE_CENTER","LIBRARY","LIGHTING_SHOPS","LOCALE","LOCAL_SPECIALITIES_SHOP","LOTTERY_SHOP","MANUFACTURING_COMPANY","MANUFACTURING_FACILITY","MARIJUANA_DISPENSARY","MARINA","MARKET","MARSH","MAUSOLEUM_GRAVE","MECHANICAL_ENGINEERING","MEDIA_FACILITY","MEDICAL_SUPPLIES_EQUIPMENT","MEDICINAL_MARIJUANA_DISPENSARY","MEDITERRANEAN_RESTAURANT","MEMORIAL","MENS_CLOTHING","MEXICAN_RESTAURANT","MICROBREWERY","MIDDLE_EASTERN_RESTAURANT","MIDDLE_SCHOOL","MILITARY_AIRPORT","MINERAL_HOT_SPRINGS","MINING_COMPANY","MOBILE_PHONE_SHOP","MONGOLIAN_RESTAURANT","MONUMENT","MOROCCAN_RESTAURANT","MOSQUE","MOTEL","MOTORCYCLE_DEALER","MOTORCYCLE_REPAIR","MOTORING_ORGANIZATION_OFFICE","MOTOR_RACING_STADIUM","MOUNTAIN_BIKE_TRAIL","MOUNTAIN_PASS","MOUNTAIN_PEAK","MOVIE_THEATER","MOVING_STORAGE_COMPANY","MULTI_PURPOSE_STADIUM","MUSEUM","MUSIC_CENTER","MUSIC_INSTRUMENTS_STORE","NAIL_SALON","NATIONAL_RAILROAD_STATION","NATIVE_RESERVATION","NATURAL_TOURIST_ATTRACTION","NEPALESE_RESTAURANT","NETBALL_STADIUM","NEWSAGENTS_TOBACCONISTS","NIGHTLIFE","NON_GOVERNMENTAL_ORGANIZATION","NORWEGIAN_RESTAURANT","OASIS","OBSERVATORY","OFFICE_EQUIPMENT","OIL_NATURAL_GAS","OPEN_CAR_PARKING_AREA","OPEN_PARKING_AREA","OPERA_HOUSE","OPTICIAN","ORGANIC_FOOD_RESTAURANT","ORIENTAL_RESTAURANT","OTHER_FOOD_SHOPS","OTHER_WINTER_SPORT","PAGODA","PAINTING_DECORATING","PAKISTANI_RESTAURANT","PARK","PARKING_GARAGE","PARKWAY","PARK_RECREATION_AREA","PASSENGER_TRANSPORT_TICKET_OFFICE","PAWN_SHOP","PERSONAL_CARE_FACILITY","PERSONAL_SERVICE","PERUVIAN_RESTAURANT","PETROL_STATION","PET_SUPPLIES","PHARMACEUTICAL_COMPANY","PHARMACY","PHILIPPINE_RESTAURANT","PHOTOCOPY_SHOP","PHOTO_LAB_DEVELOPMENT","PICNIC_AREA","PIZZERIA","PLACE_OF_WORSHIP","PLAIN_FLAT","PLANETARIUM","PLATEAU","POLICE_STATION","POLISH_RESTAURANT","POLYNESIAN_RESTAURANT","PORTUGUESE_RESTAURANT","PORT_WAREHOUSE_FACILITY","POST_OFFICE","PRE_SCHOOL","PRIMARY_PRODUCER","PRIMARY_RESOURCE_UTILITY","PRIMARY_SCHOOL","PRISON_CORRECTIONAL_FACILITY","PRIVATE_AIRPORT","PROTECTED_AREA","PUB","PUBLIC_AIRPORT","PUBLIC_AMENITY","PUBLIC_CALL_BOX","PUBLIC_MARKET","PUBLIC_TOILET","PUBLIC_TRANSPORT_STOP","PUBLISHING_TECHNOLOGIES","PUB_FOOD","QUARRY","RACE_TRACK","RAILWAY_STATION","RAPIDS","REAL_ESTATE_AGENT","REAL_ESTATE_COMPANY","RECREATIONAL_CAMPING_GROUND","RECREATIONAL_MARIJUANA_DISPENSARY","RECREATIONAL_VEHICLE_DEALER","RECREATION_AREA","RECYCLING_SHOP","REEF","RENT_A_CAR_FACILITY","RENT_A_CAR_PARKING","REPAIR_FACILITY","REPAIR_SHOP","RESEARCH_FACILITY","RESERVOIR","RESIDENTIAL_ACCOMMODATION","RESORT","RESTAURANT","RESTAURANT_AREA","REST_AREA","REST_CAMP","RETAIL_OUTLET","RETIREMENT_COMMUNITY","RIDGE","RIVER_CROSSING","ROAD_RESCUE","ROAD_TRAFFIC_CONTROL_CENTER","ROCKS","ROCK_CLIMBING_TRAIL","RUGBY_GROUND","RUSSIAN_RESTAURANT","SALAD_BAR","SANDWICH_RESTAURANT","SAUNA_SOLARIUM_MASSAGE","SCANDINAVIAN_RESTAURANT","SCENIC_PANORAMIC_VIEW","SCHOOL","SEAFOOD","SECURED_ENTRANCE","SECURITY_PRODUCTS","SENIOR_HIGH_SCHOOL","SERVICE_COMPANY","SHANDONG_RESTAURANT","SHOP","SHOPPING_CENTER","SHOPPING_SERVICE","SICHUAN_RESTAURANT","SKI_RESORT","SNACKS_RESTAURANT","SNOOKER_POOL_BILLIARD","SOCCER_STADIUM","SOFTWARE_COMPANY","SOUL_FOOD","SOUP_RESTAURANT","SPANISH_RESTAURANT","SPECIALIST","SPECIALTY_CLOTHING_SHOP","SPECIALTY_FOODS","SPECIAL_HOSPITAL","SPORTS_CENTER","SPORTS_EQUIPMENT_CLOTHING","STADIUM","STATION_ACCESS","STATUE","STEAK_HOUSE","STOCK_EXCHANGE","STREETCAR_STOP","SUBWAY_STATION","SUPERMARKETS_HYPERMARKETS","SUSHI_RESTAURANT","SWEDISH_RESTAURANT","SWIMMING_POOL","SWISS_RESTAURANT","SYNAGOG","SYRIAN_RESTAURANT","TAILOR_SHOP","TAIWANESE_RESTAURANT","TAKEOUT_FOOD","TAPAS_RESTAURANT","TAXI_LIMOUSINE_SHUTTLE_SERVICE","TAXI_STAND","TAX_SERVICES","TEA_HOUSE","TELECOMMUNICATIONS","TEMPLE","TENNIS_COURT","TEPPANYAKI_RESTAURANT","THAI_RESTAURANT","THEATER","THEMATIC_SPORT_CENTER","TIBETAN_RESTAURANT","TIRE_SERVICE","TOLL_GATE","TOURIST_ATTRACTION","TOURIST_INFORMATION_OFFICE","TOWER","TOYS_GAMES_SHOP","TRAFFIC_CONTROL_DEPARTMENT","TRAFFIC_SERVICE_CENTER","TRAILS","TRAIL_SYSTEM","TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION","TRANSPORT_COMPANY","TRAVEL_AGENT","TRUCK_DEALER","TRUCK_REPAIR_AND_SERVICE","TRUCK_STOP","TUNISIAN_RESTAURANT","TUNNEL","TURKISH_RESTAURANT","URBAN_STATION","VACATION_RENTAL","VALLEY","VAN_DEALER","VARIETY_STORE","VEGETARIAN_RESTAURANT","VENEZUELAN_RESTAURANT","VETERINARIAN","VIDEO_RENTAL_SHOP","VIETNAMESE_RESTAURANT","VILLA_RENTAL","VOCATIONAL_SCHOOL","WATER_HOLE","WATER_SPORT","WEDDING_SERVICES","WEIGH_STATION","WELFARE_ORGANIZATION","WELL","WESTERN_RESTAURANT","WHOLESALE_CLUB","WILDERNESS_AREA","WILDLIFE_PARK","WINERY","WINE_SPIRITS","WOMENS_CLOTHING","YACHT_BASIN","YOGURT_JUICE_BAR","ZOO","ZOOS_ARBORETA_BOTANICAL_GARDEN"],r=["Small_Paddle_Inductive","Large_Paddle_Inductive","IEC_60309_1_Phase","IEC_60309_3_Phase","IEC_62196_Type_1_Outlet","IEC_62196_Type_2_Outlet","IEC_62196_Type_3_Outlet","IEC_62196_Type_1_Connector_Cable_Attached","IEC_62196_Type_2_Connector_Cable_Attached","IEC_62196_Type_3_Connector_Cable_Attached","Combo_to_IEC_62196_Type_1_Base","Combo_to_IEC_62196_Type_2_Base","Type_E_French_Standard_CEE_7_5","Type_F_Schuko_CEE_7_4","Type_G_British_Standard_BS_1363","Type_J_Swiss_Standard_SEV_1011","China_GB_Part_2","China_GB_Part_3","IEC_309_DC_Plug","AVCON_Connector","Tesla_Connector","NEMA_5_20","CHAdeMO","SAE_J1772","TEPCO","Better_Place_Socket","Marechal_Socket","Standard_Household_Country_Specific"],n=["No_Payment","Subscription","Direct"],M=["tollRoads","motorways","ferries","unpavedRoads","carpools","alreadyUsedRoads","borderCrossings","tunnels","carTrains","lowEmissionZones"],o=["carpool","carTrain","country","ferry","importantRoadStretch","lowEmissionZone","motorway","pedestrian","roadShields","speedLimit","toll","tollVignette","traffic","tunnel","unpaved","urban","vehicleRestricted"],H=[...o,"lanes"],i=[...H,"leg"],a=["accident","animals-on-road","broken-down-vehicle","danger","flooding","fog","frost","jam","lane-closed","narrow-lanes","other","rain","road-closed","roadworks","wind"],G=["Unified","AR","IN","PK","IL","MA","RU","TR","CN"],D=A=>!!A&&(A.length>=4&&A[3]!==A[1]&&A[2]!==A[0]),s=A=>D(A)?A:void 0,B=(A,E)=>{if(A&&!(A.length<2))return E?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[0]?A[0]:E[2],E[3]<A[1]?A[1]:E[3]]:[A[0],A[1],A[0],A[1]]},d=(A,E)=>E&&A?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[2]?A[2]:E[2],E[3]<A[3]?A[3]:E[3]]:A||E,c=A=>A?.length?A.reduce((A,E)=>d(E,A)):void 0,F=A=>{const E=A?.length;if(!E)return;let R;const T=Math.ceil(E/1e3);for(let _=0;_<E;_+=T)R=B(A[_],R);return 1===T?R:B(A[E-1],R)},Y=A=>{if(A){if(Array.isArray(A))return"number"==typeof A[0]?A.length>=4?A:void 0:c(A.map(A=>Y(A)));if(A.bbox)return A.bbox;switch(A.type){case"Feature":return Y(A.geometry);case"FeatureCollection":return c(A.features.map(Y));case"GeometryCollection":return c(A.geometries.map(Y));case"Point":return B(A.coordinates);case"LineString":case"MultiPoint":return F(A.coordinates);case"MultiLineString":case"Polygon":return c(A.coordinates.map(F));case"MultiPolygon":return c(A.coordinates.flatMap(A=>A.map(F)));default:return}}},V=(A,E)=>d(Y(A),E),l=A=>[(A[0]+A[2])/2,(A[1]+A[3])/2],u=A=>{const[E,R,T,_]=A;return{type:"Feature",geometry:{type:"Polygon",coordinates:[[[E,R],[T,R],[T,_],[E,_],[E,R]]]},properties:{}}},p=()=>Date.now().toString(36)+Math.random().toString(36).substring(2),K="MapsSDKJS",m=A=>{if(!/^[a-zA-Z0-9-]{1,100}$/.test(A))throw new TypeError(`a string matching regular expression ^[a-zA-Z0-9-]{1,100}$ is expected, but ${A} ['${typeof A}'] given`);return A},h=A=>({"tomtom-user-agent":A["tomtom-user-agent"]??`${K}/0.46.2`,...A.trackingId&&{"Tracking-ID":m(A.trackingId)}}),W=(A,E)=>{if(A){if(Array.isArray(A))return A;if(A.coordinates)return A.coordinates;if(A.geometry){if("main-when-available"===E?.useEntryPoint){const E=(R=A,R?.properties?.entryPoints?.find(A=>"main"===A.type));return E?.position??A.geometry.coordinates}return A.geometry.coordinates}}var R;return null},g=(A,E)=>{const R=W(A,E);if(!R)throw new Error(`The received object does not have lng-lat coordinates: ${JSON.stringify(A)}`);return R},y=A=>({type:"Point",coordinates:A}),f=A=>({type:"Feature",geometry:y(A),properties:{}}),v={ROAD_TRAFFIC_CONTROL_CENTER:7301,TRAFFIC_CONTROL_DEPARTMENT:7301002,TRAFFIC_SERVICE_CENTER:7301002,TRAIL_SYSTEM:7302,TRAILS:7302,MOUNTAIN_BIKE_TRAIL:7302002,ADVENTURE_VEHICLE_TRAIL:7302003,HIKING_TRAIL:7302004,HORSE_RIDING_TRAIL:7302005,ROCK_CLIMBING_TRAIL:7302006,RESIDENTIAL_ACCOMMODATION:7303,RETIREMENT_COMMUNITY:7303002,FLATS_APARTMENT_COMPLEX:7303003,HOLIDAY_RENTAL:7304,VACATION_RENTAL:7304,COTTAGE_RENTAL:7304002,VILLA_RENTAL:7304003,BUNGALOW_RENTAL:7304004,CHALET_RENTAL:7304005,APARTMENT_RENTAL:7304006,ADVENTURE_SPORTS_FACILITY:7305,ADVENTURE_SPORTS_VENUE:7305,HELIPAD_HELICOPTER_LANDING:7308,ELECTRIC_VEHICLE_STATION:7309,REPAIR_FACILITY:7310,REPAIR_SHOP:7310,BODYSHOP:7310002,CAR_GLASS_REPLACEMENT_SHOP:7310003,CAR_REPAIR_AND_SERVICE:7310004,TIRE_SERVICE:7310007,MOTORCYCLE_REPAIR:7310008,TRUCK_REPAIR_AND_SERVICE:7310009,FUEL_FACILITIES:7311,GAS_STATION:7311,PETROL_STATION:7311,RENT_A_CAR_FACILITY:7312,PARKING_GARAGE:7313,HOTEL_MOTEL:7314,B_B_GUEST_HOUSE:7314002,HOTEL:7314003,HOSTEL:7314004,RESORT:7314005,MOTEL:7314006,CABINS_LODGES:7314007,REST_CAMP:7314008,RESTAURANT:7315,AFRICAN_RESTAURANT:7315002,AMERICAN_RESTAURANT:7315003,AUSTRIAN_RESTAURANT:7315004,BARBECUE_RESTAURANT:7315005,BELGIAN_RESTAURANT:7315006,BISTRO:7315007,BRITISH_RESTAURANT:7315008,CALIFORNIAN_RESTAURANT:7315009,CANADIAN_RESTAURANT:7315010,CARIBBEAN_RESTAURANT:7315011,CHINESE_RESTAURANT:7315012,CREPERIE:7315013,DUTCH_RESTAURANT:7315014,FAST_FOOD:7315015,PHILIPPINE_RESTAURANT:7315016,FRENCH_RESTAURANT:7315017,GERMAN_RESTAURANT:7315018,GREEK_RESTAURANT:7315019,GRILL_RESTAURANT:7315020,HAWAIIAN_RESTAURANT:7315021,HUNGARIAN_RESTAURANT:7315022,INDIAN_RESTAURANT:7315023,INDONESIAN_RESTAURANT:7315024,ITALIAN_RESTAURANT:7315025,JAPANESE_RESTAURANT:7315026,JEWISH_RESTAURANT:7315027,KOREAN_RESTAURANT:7315028,LATIN_AMERICAN_RESTAURANT:7315029,LEBANESE_RESTAURANT:7315030,MEDITERRANEAN_RESTAURANT:7315032,MEXICAN_RESTAURANT:7315033,MIDDLE_EASTERN_RESTAURANT:7315034,ORIENTAL_RESTAURANT:7315035,PIZZERIA:7315036,POLISH_RESTAURANT:7315037,PORTUGUESE_RESTAURANT:7315038,PUB_FOOD:7315039,RUSSIAN_RESTAURANT:7315040,SANDWICH_RESTAURANT:7315042,SEAFOOD:7315043,SPANISH_RESTAURANT:7315044,STEAK_HOUSE:7315045,SWISS_RESTAURANT:7315047,THAI_RESTAURANT:7315048,TURKISH_RESTAURANT:7315049,VEGETARIAN_RESTAURANT:7315050,VIETNAMESE_RESTAURANT:7315051,HUNAN_RESTAURANT:7315052,SHANDONG_RESTAURANT:7315053,SICHUAN_RESTAURANT:7315056,DONGBEI_RESTAURANT:7315057,HOT_POT_RESTAURANT:7315058,TAIWANESE_RESTAURANT:7315059,WESTERN_RESTAURANT:7315060,PERUVIAN_RESTAURANT:7315061,ASIAN_RESTAURANT:7315062,CREOLE_RESTAURANT:7315063,SOUL_FOOD:7315064,IRISH_RESTAURANT:7315065,JAMAICAN_RESTAURANT:7315066,KOSHER_RESTAURANT:7315067,CZECH_RESTAURANT:7315068,HAMBURGER_RESTAURANT:7315069,CHICKEN_RESTAURANT:7315070,FUSION_RESTAURANT:7315071,BRAZILIAN_RESTAURANT:7315072,INTERNATIONAL_RESTAURANT:7315073,MOROCCAN_RESTAURANT:7315074,ORGANIC_FOOD_RESTAURANT:7315075,TAPAS_RESTAURANT:7315076,ICE_CREAM_PARLOR:7315078,DOUGHNUT_RESTAURANT:7315079,AFGHAN_RESTAURANT:7315081,ARABIAN_RESTAURANT:7315083,ARMENIAN_RESTAURANT:7315085,AUSTRALIAN_RESTAURANT:7315086,BASQUE_RESTAURANT:7315087,BOLIVIAN_RESTAURANT:7315088,BULGARIAN_RESTAURANT:7315090,BURMESE_RESTAURANT:7315091,CAMBODIAN_RESTAURANT:7315092,COLOMBIAN_RESTAURANT:7315094,CORSICAN_RESTAURANT:7315095,CUBAN_RESTAURANT:7315096,DANISH_RESTAURANT:7315098,EGYPTIAN_RESTAURANT:7315100,ENGLISH_RESTAURANT:7315101,ETHIOPIAN_RESTAURANT:7315102,FINNISH_RESTAURANT:7315104,IRANIAN_RESTAURANT:7315105,ISRAELI_RESTAURANT:7315106,MONGOLIAN_RESTAURANT:7315110,NEPALESE_RESTAURANT:7315111,NORWEGIAN_RESTAURANT:7315112,SCANDINAVIAN_RESTAURANT:7315114,SWEDISH_RESTAURANT:7315119,SYRIAN_RESTAURANT:7315120,TEPPANYAKI_RESTAURANT:7315121,TIBETAN_RESTAURANT:7315122,TUNISIAN_RESTAURANT:7315123,VENEZUELAN_RESTAURANT:7315125,PAKISTANI_RESTAURANT:7315127,POLYNESIAN_RESTAURANT:7315129,FONDUE_RESTAURANT:7315134,SNACKS_RESTAURANT:7315139,SOUP_RESTAURANT:7315140,BUFFET_RESTAURANT:7315142,SALAD_BAR:7315143,TAKEOUT_FOOD:7315145,BANQUET_ROOMS:7315146,CAFETERIA:7315147,SUSHI_RESTAURANT:7315148,YOGURT_JUICE_BAR:7315149,TOURIST_INFORMATION_OFFICE:7316,MUSEUM:7317,THEATER:7318,CONCERT_HALL:7318002,MUSIC_CENTER:7318003,OPERA_HOUSE:7318004,CABARET_THEATER:7318006,AMPHITHEATER:7318007,DINNER_THEATER:7318008,CULTURAL_CENTER:7319,SPORTS_CENTER:7320,FITNESS_CLUB_CENTER:7320002,HORSE_RIDING_CENTER:7320003,THEMATIC_SPORT_CENTER:7320005,HOSPITAL:7321,HOSPITAL_POLYCLINIC:7321,GENERAL_HOSPITAL_AND_POLYCLINIC:7321002,SPECIAL_HOSPITAL:7321003,HOSPITAL_OF_CHINESE_MEDICINE:7321004,HOSPITAL_FOR_WOMEN_AND_CHILDREN:7321005,POLICE_STATION:7322,POST_OFFICE:7324,PHARMACY:7326,DEPARTMENT_STORE:7327,BANK:7328,MARKET:7332,INFORMAL_MARKET:7332002,PUBLIC_MARKET:7332003,FARMERS_MARKET:7332004,SUPERMARKETS_HYPERMARKETS:7332005,AGRICULTURAL_BUSINESS:7335,AGRICULTURE:7335,HORTICULTURE:7335002,PRIMARY_PRODUCER:7335003,FARM:7335004,SCENIC_PANORAMIC_VIEW:7337,SWIMMING_POOL:7338,PLACE_OF_WORSHIP:7339,CHURCH:7339002,MOSQUE:7339003,SYNAGOG:7339004,TEMPLE:7339005,GURUDWARA:7339006,PAGODA:7339008,CASINO:7341,CINEMA:7342,MOVIE_THEATER:7342,DRIVE_IN_MOVIES:7342003,MARINA:7347,YACHT_BASIN:7347003,WINERY:7349,FERRY_TERMINAL:7352,TRUCK_STOP:7358,WEIGH_STATION:7359,CAMPING_GROUND:7360,RECREATIONAL_CAMPING_GROUND:7360002,CARAVAN_SITE:7360003,COMMUNITY_CENTER:7363,EMBASSY:7365,FRONTIER_CROSSING:7366,GOVERNMENT_OFFICE:7367,MOTORING_ORGANIZATION_OFFICE:7368,OPEN_PARKING_AREA:7369,OPEN_CAR_PARKING_AREA:7369002,SCHOOL:7372,CHILD_CARE_FACILITY:7372003,PRE_SCHOOL:7372004,PRIMARY_SCHOOL:7372005,HIGH_SCHOOL:7372006,SENIOR_HIGH_SCHOOL:7372007,VOCATIONAL_SCHOOL:7372008,LANGUAGE_SCHOOL:7372010,ART_SCHOOL:7372012,MIDDLE_SCHOOL:7372014,DRIVING_SCHOOL:7372016,SHOPPING_CENTER:7373,STADIUM:7374,ATHLETICS_TRACK:7374002,CRICKET_GROUND:7374003,SOCCER_STADIUM:7374004,HORSE_RACING_TRACK:7374005,MULTI_PURPOSE_STADIUM:7374006,RUGBY_GROUND:7374007,ICE_HOCKEY_ARENA:7374008,BASEBALL_PARK:7374009,FOOTBALL_STADIUM:7374010,MOTOR_RACING_STADIUM:7374011,BASKETBALL_ARENA:7374012,RACE_TRACK:7374013,NETBALL_STADIUM:7374014,TOLL_GATE:7375,IMPORTANT_TOURIST_ATTRACTION:7376,TOURIST_ATTRACTION:7376,BUILDING:7376002,MONUMENT:7376003,NATURAL_TOURIST_ATTRACTION:7376004,OBSERVATORY:7376005,PLANETARIUM:7376006,DAM:7376007,TUNNEL:7376008,TOWER:7376009,BRIDGE:7376010,MAUSOLEUM_GRAVE:7376011,ARCH:7376012,STATUE:7376013,WATER_HOLE:7376014,COLLEGE_UNIVERSITY:7377,COLLEGE_OR_UNIVERSITY:7377002,JUNIOR_COLLEGE_COMMUNITY_COLLEGE:7377003,BUSINESS_PARK:7378,RAILWAY_STATION:7380,INTERNATIONAL_RAILROAD_STATION:7380002,NATIONAL_RAILROAD_STATION:7380003,URBAN_STATION:7380004,SUBWAY_STATION:7380005,AIRPORT:7383,PUBLIC_AIRPORT:7383002,PRIVATE_AIRPORT:7383003,MILITARY_AIRPORT:7383004,AIRFIELD:7383005,COURIER_DROP_BOX:7388,ACCESS_GATEWAY:7389,AIRLINE_ACCESS:7389002,STATION_ACCESS:7389003,SECURED_ENTRANCE:7389004,EMERGENCY_MEDICAL_SERVICE:7391,FIRE_STATION_BRIGADE:7392,REST_AREA:7395,ATM:7397,CASH_DISPENSER:7397,GEOGRAPHIC_FEATURE:8099,MOUNTAIN_PEAK:8099002,CAVE:8099003,RIDGE:8099004,DUNE:8099005,VALLEY:8099006,PLAIN_FLAT:8099007,PLATEAU:8099008,WELL:8099010,OASIS:8099011,ROCKS:8099012,RESERVOIR:8099013,REEF:8099014,RAPIDS:8099015,BAY:8099016,COVE:8099017,HARBOR:8099018,CAPE:8099020,MINERAL_HOT_SPRINGS:8099021,ISLAND:8099022,MARSH:8099023,RIVER_CROSSING:8099024,HILL:8099025,QUARRY:8099026,LOCALE:8099027,PRIMARY_RESOURCE_UTILITY:9150,TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION:9151,NON_GOVERNMENTAL_ORGANIZATION:9152,WELFARE_ORGANIZATION:9153,PRISON_CORRECTIONAL_FACILITY:9154,CAR_WASH:9155,MANUFACTURING_FACILITY:9156,RESEARCH_FACILITY:9157,MEDIA_FACILITY:9158,PORT_WAREHOUSE_FACILITY:9159,EXCHANGE:9160,STOCK_EXCHANGE:9160002,GOLD_EXCHANGE:9160003,CURRENCY_EXCHANGE:9160004,COMPANY:9352,SERVICE_COMPANY:9352002,ADVERTISING_COMPANY:9352003,COMPUTER_DATA_SERVICES:9352004,SOFTWARE_COMPANY:9352005,DIVERSIFIED_FINANCIALS:9352006,INSURANCE_COMPANY:9352007,DELIVERY_SERVICE:9352008,REAL_ESTATE_COMPANY:9352009,MANUFACTURING_COMPANY:9352011,AGRICULTURAL_TECHNOLOGY:9352012,AUTOMOBILE_COMPANY:9352013,CHEMICAL_COMPANY:9352014,ELECTRONICS_COMPANY:9352015,MECHANICAL_ENGINEERING:9352016,PHARMACEUTICAL_COMPANY:9352018,PUBLISHING_TECHNOLOGIES:9352019,TELECOMMUNICATIONS:9352020,TAX_SERVICES:9352022,LEGAL_SERVICES:9352023,TRANSPORT_COMPANY:9352024,BUS_CHARTER_COMPANY:9352025,TAXI_LIMOUSINE_SHUTTLE_SERVICE:9352026,BUS_LINES:9352027,CLEANING_SERVICES:9352029,OIL_NATURAL_GAS:9352030,MINING_COMPANY:9352031,CONSTRUCTION_COMPANY:9352032,MOVING_STORAGE_COMPANY:9352033,AIRLINE_COMPANY:9352034,FUNERAL_SERVICE_MORTUARIES:9352036,INVESTMENT_ADVISOR:9352037,EQUIPMENT_RENTAL:9352038,BUSINESS_SERVICES:9352039,CABLE_TELEPHONE_COMPANY:9352040,AUTOMOBILE_MANUFACTURING:9352041,IMPORT_EXPORT_AND_DISTRIBUTION:9352042,CATERING_SERVICES:9352043,HOME_APPLIANCE_REPAIR:9352044,ANIMAL_SHELTER:9352045,WEDDING_SERVICES:9352046,BEACH:9357,RESTAURANT_AREA:9359,ICE_SKATING_RINK:9360,SHOP:9361,BOOK_SHOP:9361002,C_DS_DVD_VIDEOS:9361003,CHILDRENS_CLOTHES:9361004,FOOTWEAR_SHOE_REPAIRS:9361005,CLOTHING_SHOP:9361006,MENS_CLOTHING:9361007,WOMENS_CLOTHING:9361008,CONVENIENCE_STORE:9361009,DRY_CLEANER:9361010,CAMERAS_PHOTOGRAPHY:9361011,COMPUTER_COMPUTER_SUPPLIES:9361012,CONSUMER_ELECTRONICS:9361013,OFFICE_EQUIPMENT:9361014,REAL_ESTATE_AGENT:9361015,FACTORY_OUTLET:9361016,FLORISTS:9361017,BAKERY:9361018,BUTCHER:9361019,FISHMONGER:9361020,FOOD_MARKET:9361021,GREENGROCER:9361022,GROCERY_STORE:9361023,OTHER_FOOD_SHOPS:9361024,WINE_SPIRITS:9361025,GIFTS_CARDS_NOVELTIES_SOUVENIRS:9361026,HAIRDRESSER:9361027,CARPET_FLOOR_COVERINGS:9361028,CURTAINS_TEXTILES:9361029,DO_IT_YOURSELF_CENTERS:9361030,HOUSE_GARDEN_FURNITURE_FITTINGS:9361031,GARDEN_CENTERS_SERVICES:9361032,KITCHENS_BATHROOMS:9361033,LIGHTING_SHOPS:9361034,PAINTING_DECORATING:9361035,JEWELRY_CLOCKS_WATCHES:9361036,NEWSAGENTS_TOBACCONISTS:9361037,OPTICIAN:9361038,SPORTS_EQUIPMENT_CLOTHING:9361039,TOYS_GAMES_SHOP:9361040,TRAVEL_AGENT:9361041,CONSTRUCTION_MATERIAL_EQUIPMENT:9361042,MEDICAL_SUPPLIES_EQUIPMENT:9361043,VIDEO_RENTAL_SHOP:9361044,LAUNDRY:9361045,PHOTO_LAB_DEVELOPMENT:9361046,PHOTOCOPY_SHOP:9361047,ANIMAL_SERVICES:9361048,ANTIQUE_ART_SHOP:9361049,BEAUTY_SUPPLIES:9361050,DRUG_STORE:9361051,ELECTRICAL_APPLIANCES_SHOP:9361052,HOBBY_SHOP:9361053,FURNITURE_HOME_FURNISHINGS:9361054,GLASSWARE_CERAMIC_SHOP:9361055,LOCAL_SPECIALITIES_SHOP:9361056,RECYCLING_SHOP:9361057,BAGS_LEATHERWEAR:9361058,MUSIC_INSTRUMENTS_STORE:9361059,DELICATESSEN:9361060,SPECIALTY_FOODS:9361061,SHOPPING_SERVICE:9361062,RETAIL_OUTLET:9361063,PET_SUPPLIES:9361064,WHOLESALE_CLUB:9361066,BEAUTY_SALON:9361067,NAIL_SALON:9361068,HARDWARE_STORE:9361069,PAWN_SHOP:9361070,LOTTERY_SHOP:9361071,BETTING_STATION:9361072,AGRICULTURAL_SUPPLIES:9361073,MOBILE_PHONE_SHOP:9361075,DRIVE_THROUGH_BOTTLE_SHOP:9361076,TAILOR_SHOP:9361077,SECURITY_PRODUCTS:9361078,SPECIALTY_CLOTHING_SHOP:9361079,GLASS_WINDOWS_STORE:9361080,VARIETY_STORE:9361081,CHRISTMAS_HOLIDAY_SHOP:9361082,BOATING_EQUIPMENT_ACCESSORIES:9361083,PARK_RECREATION_AREA:9362,BATTLEFIELD:9362002,CEMETERY:9362003,HISTORIC_SITE:9362004,HISTORICAL_PARK:9362005,MEMORIAL:9362007,PARK:9362008,PARKWAY:9362009,RECREATION_AREA:9362011,WILDERNESS_AREA:9362014,FOREST_AREA:9362015,FISHING_HUNTING_AREA:9362016,FAIRGROUND:9362017,OTHER_WINTER_SPORT:9362025,SKI_RESORT:9362026,BOAT_LAUNCHING_RAMP:9362032,PICNIC_AREA:9362033,PROTECTED_AREA:9362037,COURTHOUSE:9363,MARIJUANA_DISPENSARY:9364,MEDICINAL_MARIJUANA_DISPENSARY:9364002,RECREATIONAL_MARIJUANA_DISPENSARY:9364003,TENNIS_COURT:9369,WATER_SPORT:9371,DOCTOR:9373,GENERAL_PRACTITIONER:9373002,SPECIALIST:9373003,DENTIST:9374,VETERINARIAN:9375,CAFE_PUB:9376,CAFE:9376002,PUB:9376003,INTERNET_CAFE:9376004,TEA_HOUSE:9376005,COFFEE_SHOP:9376006,MICROBREWERY:9376007,EXHIBITION_CONVENTION_CENTER:9377,LEISURE_CENTER:9378,BOWLING_CENTER:9378002,DANCE_STUDIO_SCHOOL:9378003,SAUNA_SOLARIUM_MASSAGE:9378005,SNOOKER_POOL_BILLIARD:9378006,NIGHTLIFE:9379,DISCO_CLUB:9379002,BAR:9379004,COCKTAIL_BAR:9379006,JAZZ_CLUB:9379008,COMEDY_CLUB:9379009,KARAOKE_CLUB:9379010,COMMERCIAL_BUILDING:9382,INDUSTRIAL_BUILDING:9383,NATIVE_RESERVATION:9389,HEALTH_CARE_SERVICE:9663,PERSONAL_SERVICE:9663002,PERSONAL_CARE_FACILITY:9663003,BLOOD_BANK:9663004,AMBULANCE_UNIT:9663005,ENTERTAINMENT:9900,AMUSEMENT_PARK:9902,AMUSEMENT_PLACE:9902004,AUTOMOTIVE_DEALER:9910,CAR_DEALER:9910002,MOTORCYCLE_DEALER:9910003,BOAT_DEALER:9910004,RECREATIONAL_VEHICLE_DEALER:9910005,TRUCK_DEALER:9910006,VAN_DEALER:9910007,BUS_DEALER:9910008,ATV_DEALER:9910009,GOLF_COURSE:9911,LIBRARY:9913,ZOOS_ARBORETA_BOTANICAL_GARDEN:9927,ARBORETA_BOTANICAL_GARDENS:9927002,ZOO:9927003,AQUATIC_ZOO:9927004,WILDLIFE_PARK:9927005,RENT_A_CAR_PARKING:9930,PUBLIC_AMENITY:9932,PASSENGER_TRANSPORT_TICKET_OFFICE:9932002,PUBLIC_CALL_BOX:9932004,PUBLIC_TOILET:9932005,ROAD_RESCUE:9932006,MOUNTAIN_PASS:9935,CLUB_ASSOCIATION:9937,BEACH_CLUB:9937002,HOCKEY_CLUB:9937003,PUBLIC_TRANSPORT_STOP:9942,BUS_STOP:9942002,TAXI_STAND:9942003,STREETCAR_STOP:9942004,EMERGENCY_ROOM:9956},$=Object.fromEntries(Object.entries(v).map(([A,E])=>[E,A])),b=(E,R,T)=>{if(0===E.geometry.coordinates.length)return 0;if(R.length<2)return 0;const _=g(T),I=A(E,_).properties.location;if(void 0===I)return 0;const N=[];for(const S of R){const R=g(S),T=A(E,R);N.push(T.properties.location??0)}for(let A=0;A<N.length-1;A++){const E=N[A],R=N[A+1];if(I>=E&&I<=R)return A+1}return I<N[0]?0:R.length},w=(A,E,R)=>{const T=b(A,E,R);return[...E.slice(0,T),R,...E.slice(T)]},Z=(A,E)=>{const{progress:R}=A.properties;if(!R||0===R.length)return;const T=A.geometry.coordinates.length;if(E<0||E>=T)return;const _=Q(R,"pointIndex",E);if(!_)return;const{lower:I,lowerVal:N,upper:S,upperVal:O}=_,C=I.distanceInMeters,L=S.distanceInMeters,U=I.travelTimeInSeconds,e=S.travelTimeInSeconds;if(void 0===C||void 0===L||void 0===U||void 0===e)return;if(N===O)return{distanceInMeters:C,travelTimeInSeconds:U};const t=(E-N)/(O-N);return{distanceInMeters:C+t*(L-C),travelTimeInSeconds:U+t*(e-U)}},X=(A,E,R)=>{const T=Z(A,E),_=Z(A,R);if(T&&_)return{start:T,end:_,delta:{distanceInMeters:_.distanceInMeters-T.distanceInMeters,travelTimeInSeconds:_.travelTimeInSeconds-T.travelTimeInSeconds}}},x=(A,E)=>X(A,E.startPointIndex,E.endPointIndex),J=(A,E)=>{const R=A.geometry.coordinates;if(!R||0===R.length||E.startPointIndex<0||E.endPointIndex>=R.length||E.startPointIndex>E.endPointIndex)return;const T=R[E.startPointIndex],_=R[E.endPointIndex],I=R[Math.floor((E.startPointIndex+E.endPointIndex)/2)];let N=B(T);return N=B(I,N),N=B(_,N),N},Q=(A,E,R)=>{let T,_,I,N;for(const S of A){const A=S[E];void 0!==A&&(A<=R&&(T=S,_=A),A>=R&&void 0===I&&(I=S,N=A))}return void 0!==T&&void 0!==_&&void 0!==I&&void 0!==N?{lower:T,lowerVal:_,upper:I,upperVal:N}:void 0},k=(A,E,R)=>{const T=A.geometry.coordinates,_=Math.min(E+1,T.length-1),I=T[E],N=T[_],S=Z(A,E),O=Z(A,_);if(S&&O)return{position:[I[0]+R*(N[0]-I[0]),I[1]+R*(N[1]-I[1])],travelTimeInSeconds:S.travelTimeInSeconds+R*(O.travelTimeInSeconds-S.travelTimeInSeconds),distanceInMeters:S.distanceInMeters+R*(O.distanceInMeters-S.distanceInMeters)}},j=(A,E,R)=>{const{progress:T}=A.properties;if(!T||0===T.length)return;const _=A.geometry.coordinates,I=T[0],N=T.at(-1),S=I[E],O=N[E];if(void 0===S||void 0===O)return;if(R<=S)return{position:_[I.pointIndex],travelTimeInSeconds:I.travelTimeInSeconds??0,distanceInMeters:I.distanceInMeters??0};if(R>=O)return{position:_[N.pointIndex],travelTimeInSeconds:N.travelTimeInSeconds??0,distanceInMeters:N.distanceInMeters??0};const C=((A,E,R)=>{const T=Q(A,E,R);if(!T)return;const{lower:_,lowerVal:I,upper:N,upperVal:S}=T,O=I===S?0:(R-I)/(S-I),C=_.pointIndex+O*(N.pointIndex-_.pointIndex),L=Math.floor(C);return{pathIndex:L,progressRatioTowardsNextPathPoint:C-L}})(T,E,R);return void 0!==C?k(A,C.pathIndex,C.progressRatioTowardsNextPathPoint):void 0},z=(A,E)=>{if("traveledTimeInSeconds"in E)return j(A,"travelTimeInSeconds",E.traveledTimeInSeconds);if("traveledDistanceInMeters"in E)return j(A,"distanceInMeters",E.traveledDistanceInMeters);const R=A.properties.summary.departureTime;if(!R)return;const T=(E.clockTime.getTime()-R.getTime())/1e3;return T<0?void 0:j(A,"travelTimeInSeconds",T)},q=(E,R)=>{const{progress:T}=E.properties;if(!T?.length)return;const _=E.geometry.coordinates,I=A(E,g(R)),N=I.properties.index??0,S=Math.min(N+1,_.length-1),O=_[N],C=_[S],L=((A,E,R)=>{const T=R[0]-A[0],_=R[1]-A[1],I=T*T+_*_;if(0===I)return 0;const N=((E[0]-A[0])*T+(E[1]-A[1])*_)/I;return Math.max(0,Math.min(1,N))})(O,I.geometry.coordinates,C);return k(E,N,L)},AA=(A,E)=>{let R;return R=Array.isArray(A)||"Feature"!==A.type?f(g(A)):A,{...R,properties:{...R.properties,radiusMeters:E}}},EA=A=>Array.isArray(A)?Array.isArray(A[0])?"path":"waypoint":"Feature"===A.type&&"LineString"===A.geometry.type?"path":"waypoint",RA=["unknown","minor","moderate","major","indefinite"],TA={1:"accident",2:"fog",3:"danger",4:"rain",5:"frost",6:"jam",7:"lane-closed",8:"road-closed",9:"roadworks",10:"wind",11:"flooding",12:"animals-on-road",13:"narrow-lanes",14:"broken-down-vehicle"},_A=Object.fromEntries(Object.entries(TA).map(([A,E])=>[E,Number(A)])),IA=A=>TA[A]??"other",NA=A=>_A[A]??0,SA=A=>A?.minutes??"min",OA=(A,E)=>{if(A){const T=Math.abs(A)/3600;let I=Math.floor(T),N=Math.round(T%1*60);60===N&&(N=0,I++);const S={..._.instance.get().displayUnits?.time,...E};if(I)return`${I} ${R=S,R?.hours??"hr"} ${N.toString().padStart(2,"0")} ${SA(S)}`;if(N)return`${N.toString()} ${SA(S)}`}var R},CA=1609.344,LA=A=>A?.meters??"m",UA=A=>A?.kilometers??"km",eA=(A,E,R)=>E<3?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,I=A<0?"-":"";if(_<.125)return`${I}${T} ${R}`;const N=T>0?T:"";return _<.375?`${I}${N}¼ ${R}`:_<.625?`${I}${N}½ ${R}`:_<.875?`${I}${N}¾ ${R}`:`${I}${T+1} ${R}`})(A,E,R):E<10?((A,E,R)=>{const T=Number.parseInt(E.toString()),_=E-T,I=A<0?"-":"";return _<.25?`${I}${T} ${R}`:_<.75?`${I}${T}½ ${R}`:`${I}${T+1} ${R}`})(A,E,R):`${Math.round(A)} ${R}`,tA=A=>A.miles??"mi",PA=(A,E)=>{const R=A/CA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.3048),T=Math.abs(R);return T<30?`${R} ${E}`:T<500?`${10*Math.round(R/10)} ${E}`:`${100*Math.round(R/100)} ${E}`})(A,E.feet??"ft"):eA(R,T,tA(E))},rA=(A,E)=>{const R=A/CA,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.9144);return Math.abs(R)<10?`${Math.round(R)} ${E}`:`${10*Math.round(R/10)} ${E}`})(A,E.yards??"yd"):eA(R,T,tA(E))},nA=(A,R)=>{if(E(A))return"";const T={..._.instance.get().displayUnits?.distance,...R};switch(T?.type??"metric"){case"metric":return((A,E)=>{const R=Math.abs(A);if(R<10)return`${A} ${LA(E)}`;if(R<500)return`${10*Math.round(A/10)} ${LA(E)}`;if(R<1e3){const R=100*Math.round(A/100);return 1e3===R||-1e3===R?`${A<0?"-":""}1 ${UA(E)}`:`${R} ${LA(E)}`}return R<1e4?`${100*Math.round(A/100)/1e3} ${UA(E)}`:`${Math.round(A/1e3)} ${UA(E)}`})(A,T);case"imperial_us":return PA(A,T);case"imperial_uk":return rA(A,T)}};export{K as TOMTOM_USER_AGENT_SDK_NAME,_ as TomTomConfig,AA as asSoftWaypoint,M as avoidableTypes,l as bboxCenter,d as bboxExpandedWithBBox,V as bboxExpandedWithGeoJSON,B as bboxExpandedWithPosition,c as bboxFromBBoxes,F as bboxFromCoordsArray,Y as bboxFromGeoJSON,s as bboxOnlyIfWithArea,Z as calculateProgressAtRoutePoint,O as chargingPointCapabilities,C as chargingPointRestrictions,S as chargingPointStatus,N as chargingStationAccessTypes,L as connectorTypes,U as currentTypes,R as defaultConfig,b as findBestWaypointInsertionIndex,nA as formatDistance,OA as formatDuration,p as generateId,h as generateTomTomHeaders,e as geographyTypes,z as getCoordinateAtRouteProgress,W as getPosition,g as getPositionStrict,q as getProgressAtNearestRoutePoint,EA as getRoutePlanningLocationType,X as getRouteProgressBetween,x as getRouteProgressForSection,J as getSectionBBox,IA as iconToTrafficIncidentCategory,RA as indexedMagnitudes,o as inputSectionTypes,H as inputSectionTypesWithGuidance,D as isBBoxWithArea,I as mergeFromGlobal,n as paymentMethods,t as placeTypes,r as plugTypes,P as poiCategories,v as poiCategoriesToID,$ as poiIDsToCategories,u as polygonFromBBox,i as sectionTypes,f as toPointFeature,y as toPointGeometry,a as trafficIncidentCategories,NA as trafficIncidentToIconCategory,G as views,w as withInsertedWaypoint};
|
|
2
2
|
//# sourceMappingURL=core.es.js.map
|