@tomtom-org/maps-sdk 0.59.0 → 0.61.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +431 -229
- package/README.md +2 -1
- package/core/dist/core.es.js +1 -1
- package/core/dist/core.es.js.map +1 -1
- package/core/dist/index.d.ts +51 -36
- package/core/package.json +4 -2
- package/map/dist/chunks/maplibre-gl-DJlOK9hg.js +2 -0
- package/map/dist/chunks/maplibre-gl-DJlOK9hg.js.map +1 -0
- package/map/dist/index.d.ts +2373 -1390
- package/map/dist/map.es.js +1 -1
- package/map/dist/map.es.js.map +1 -1
- package/map/package.json +19 -1
- package/package.json +8 -1
- package/services/dist/index.d.ts +817 -972
- package/services/dist/services.es.js +1 -1
- package/services/dist/services.es.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,304 +1,506 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.61.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#2397](https://github.com/tomtom-internal/maps-sdk-js/pull/2397) [`8a5a28f`](https://github.com/tomtom-internal/maps-sdk-js/commit/8a5a28fb69c567dc3ebc9c6603bb30ee406c1d36) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** services: `discoverPlaces` replaces `alongRouteSearch`, and the search response and wire-format types are not exported.
|
|
8
|
+
|
|
9
|
+
- **Breaking:** services: `alongRouteSearch` is not exported; `discoverPlaces` takes the same params and searches along the route whenever they carry `route`: `alongRouteSearch({ route, maxDetourTimeSeconds, query, filters, sortBy, limit })` → `discoverPlaces({ route, maxDetourTimeSeconds, query, filters, sortBy, limit })`. It resolves to a `DiscoverPlacesResponse`
|
|
10
|
+
- **Breaking:** services: the response types of the three searches `discoverPlaces` runs are not exported: `AlongRouteSearchResponse`, `FuzzySearchResponse` and `GeometrySearchResponse` → `DiscoverPlacesResponse`, `GeometrySearchFeatureCollectionProps` → `SearchSummary`
|
|
11
|
+
- **Breaking:** services: their wire-format types are not exported either, with no replacement: `AlongRouteSearchRequestAPI`, `AlongRouteSearchPayloadAPI`, `AlongRouteSearchResponseAPI`, `AlongRouteSearchResultAPI`, `RoutePointAPI`, `FuzzySearchResponseAPI`, `FuzzySearchResultAPI`, `QueryIntentAPI`, `CoordinateIntentAPI`, `CoordinateIntentDetailsAPI`, `NearbyIntentAPI`, `NearbyIntentDetailsAPI`, `GeometrySearchRequestAPI`, `GeometrySearchPayloadAPI`, `GeometrySearchResponseAPI`, `GeometrySearchResultAPI`, `GeometryAPI`, `PolygonAPI` and `CircleAPI`
|
|
12
|
+
|
|
13
|
+
- [#2396](https://github.com/tomtom-internal/maps-sdk-js/pull/2396) [`ef74201`](https://github.com/tomtom-internal/maps-sdk-js/commit/ef7420146f5ac8c8ae5978b40b6a9e71aa3d36e0) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `EVAvailabilityConfig.threshold` defaults to `0.3` for the availability label colour as well as the pin icon, instead of `0` for the label, which drew every station's label green, one with no free charging point included. Set `threshold: 0` to keep the old label colour
|
|
14
|
+
|
|
15
|
+
- [#2378](https://github.com/tomtom-internal/maps-sdk-js/pull/2378) [`a245526`](https://github.com/tomtom-internal/maps-sdk-js/commit/a245526b2cebc9ebdc4f5bd57dd8ebc8ecf58ac1) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `GeometriesModule` text config is label config, and the geometry config helpers take one options object.
|
|
16
|
+
|
|
17
|
+
- **Breaking:** map: `GeometriesModule.applyTextConfig()` is `applyLabelConfig()`, after the `label` it sets: `geometries.applyTextConfig({ text })` → `geometries.applyLabelConfig({ text })`
|
|
18
|
+
- **Breaking:** map: `GeometryLabel` is `GeometryLabelConfig` and `GeometryLineLabel` is `GeometryLineLabelConfig`, like `GeometryFillConfig` and `GeometryLineConfig`
|
|
19
|
+
- **Breaking:** map: `fillStyledGeometryConfig` takes one options object: `fillStyledGeometryConfig('retro', 'top')` → `fillStyledGeometryConfig({ palette: 'retro', beforeLayerConfig: 'top' })`
|
|
20
|
+
- **Breaking:** map: `reachableRangeGeometryConfig` takes one options object, and its label function is `title`: `reachableRangeGeometryConfig('cold', 'inverted', 'top', fn)` → `reachableRangeGeometryConfig({ palette: 'cold', fillStyle: 'inverted', beforeLayerConfig: 'top', title: fn })`
|
|
21
|
+
- **Breaking:** map: `prepareReachableRangesForDisplay` takes its fill style and title function in an options object: `prepareReachableRangesForDisplay(result, 'inverted', fn)` → `prepareReachableRangesForDisplay(result, { fillStyle: 'inverted', title: fn })`; `ReachableRangeLabelFn` is `ReachableRangeTitleFn`
|
|
22
|
+
- map: `GeometryLineLabelConfig.text` sets the text of the border labels, a string or a MapLibre expression, as `label.text` does for the center labels; both default to the feature's `title`
|
|
23
|
+
- map: `GeometryLabelConfig.text` is optional, so `label: { size: 18 }` restyles the center labels without restating their text
|
|
24
|
+
- map: `FillStyledGeometryConfigOptions`, `ReachableRangeGeometryConfigOptions` and `ReachableRangesDisplayOptions` name the options objects
|
|
25
|
+
|
|
26
|
+
- [#2314](https://github.com/tomtom-internal/maps-sdk-js/pull/2314) [`0b69fd6`](https://github.com/tomtom-internal/maps-sdk-js/commit/0b69fd66030cb3e02e5d19f881239451e9975bca) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: a `GeometriesModule` palette name moves from `fill.color` to the new `fill.palette`.
|
|
27
|
+
|
|
28
|
+
- **Breaking:** map: `GeometryFillConfig.color` takes a colour or a MapLibre expression; a palette name goes in `fill.palette`. Migrate `fill: { color: 'warm' }` to `fill: { palette: 'warm' }`
|
|
29
|
+
- map: `GeometryFillConfig.palette` gives each `GeometriesModule` feature the next colour of a named palette, on the fill and on a border without its own `line.color`. It sits between `fill.color`, which wins over it, and the top-level `color`; `fillStyledGeometryConfig` and `reachableRangeGeometryConfig` set it, and once it is set an accent change leaves the geometries as they are
|
|
30
|
+
|
|
31
|
+
- [#2393](https://github.com/tomtom-internal/maps-sdk-js/pull/2393) [`45c3ddf`](https://github.com/tomtom-internal/maps-sdk-js/commit/45c3ddfb641b10cf10635aa0a71ff741f2a02828) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** core: the geopolitical view is set once in `TomTomConfig`, and `View` / `view` are renamed `GeopoliticalView` / `geopoliticalView`.
|
|
32
|
+
|
|
33
|
+
- **Breaking:** core: `View` is renamed `GeopoliticalView`, and `views` is renamed `geopoliticalViews`
|
|
34
|
+
- **Breaking:** services: the `view` parameter of search, suggestions, geocoding, reverse geocoding and place details is renamed `geopoliticalView`. Migrate `discoverPlaces({ query, view: 'IN' })` to `discoverPlaces({ query, geopoliticalView: 'IN' })`; the request still sends the API's own parameter
|
|
35
|
+
- core: `TomTomConfig.instance.put({ geopoliticalView })` sets the geopolitical view for the map and every service; a map's or a call's own `geopoliticalView` overrides it
|
|
36
|
+
- core: `geopoliticalViews` lists all 20 geopolitical views the TomTom APIs serve, adding `AE`, `BN`, `CL`, `DZ`, `KR`, `MY`, `PH`, `US` and `VN`
|
|
37
|
+
- map: the map draws the borders and names of disputed territories in the configured view, and `TomTomMap.setGeopoliticalView` switches it at runtime, reloading only the visible vector tiles
|
|
38
|
+
- services: a view an API does not serve is left out of its requests, which then use the default view of the caller's country, instead of failing
|
|
39
|
+
- services: `getSearchSuggestions` uses the global geopolitical view when the call sets none
|
|
40
|
+
|
|
41
|
+
- [#2401](https://github.com/tomtom-internal/maps-sdk-js/pull/2401) [`07d7e52`](https://github.com/tomtom-internal/maps-sdk-js/commit/07d7e52a1de9d5422899175414331dc3b75e72fd) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: the knob catalogues gain `enums`, `offset` and `text` knobs, and hold the POI, traffic and routing filters and unit labels.
|
|
42
|
+
|
|
43
|
+
- **Breaking:** map: `KnobKind` gains `enums`, a list of options, `offset`, an `[x, y]` screen displacement within a `range`, and `text`, any string, so an exhaustive `switch` over `KnobKind` or `KnobEntry['kind']` needs a case for each
|
|
44
|
+
- **Breaking:** map: `POICategoryGroup` is the union of the `poiCategoryGroups` names, `'FOOD_DRINKS_GROUP' | 'TRANSPORTATION_GROUP' | …`, no longer `string`, so `FilterablePOICategory` and `filterCategories` reject a name that is no group or category
|
|
45
|
+
- **Breaking:** map: every module's `…KnobValueOf<ID>` is the plain value at the knob's path, without the expressions and objects the config also takes there. The one id this narrows is `metricConfig.<metric>.color`: `TrafficAreaAnalyticsKnobValueOf` gives `AreaAnalyticsColorTheme` alone; type custom colour stops as `AreaAnalyticsColorStopsConfig`
|
|
46
|
+
- map: `poisKnobCatalogue` holds the category filter: `filters.categories.show` (`only` or `all-except`) and `filters.categories.values`, an `enums` knob over the category groups, then every `MapStylePOICategory`
|
|
47
|
+
- map: `trafficFlowKnobCatalogue` and `trafficIncidentsKnobCatalogue` hold the first `filters.any` alternative: road categories and subcategories, road closures on flow, and incident categories, magnitudes and delays on incidents
|
|
48
|
+
- map: a POI category or traffic values filter missing `show` or `values` filters nothing until the other is set, instead of throwing, so the two knobs can be set one at a time
|
|
49
|
+
- map: `trafficAreaAnalyticsKnobCatalogue` holds `regionPolygon.outlineWidth` and each metric's `height.maxHeightMeters`, `height.minHeightMeters` and `height.scaleFactor`
|
|
50
|
+
- map: `routingKnobCatalogue` holds the unit labels, `displayUnits.distance.*` and `displayUnits.time.*`, as `text` knobs
|
|
51
|
+
- map: a `RoutingModule` `displayUnits` that leaves `distance.type` unset posts the speed limit signs in the global config's unit system, as the summary bubbles already do, so relabelling one unit keeps the global unit system everywhere
|
|
52
|
+
|
|
53
|
+
- [#2416](https://github.com/tomtom-internal/maps-sdk-js/pull/2416) [`4d2acd0`](https://github.com/tomtom-internal/maps-sdk-js/commit/4d2acd0eba34f2c8386a85b771261f4d1b9b9a10) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `validateKnobValue` and `setKnob` check and set knob values, and `KnobRange` requires `bounds`.
|
|
54
|
+
|
|
55
|
+
- **Breaking:** map: `KnobRange` requires `bounds`, which ends a value must keep to: `hard` both, `hard-min` only `min`, `soft` neither, so a range you declare yourself needs one
|
|
56
|
+
- map: `validateKnobValue(entry, value)` checks a value against a knob's kind, range, options or colour syntax, and throws a `RangeError` naming the knob and what it expects
|
|
57
|
+
- map: `setKnob(module, catalogue, id, value)` validates a value, then applies the module's config with it at the knob's path, keeping every other setting; the value is typed from the path
|
|
58
|
+
- map: `StylingModule.set` and `setMapColors` check values with `validateKnobValue`, so their messages match every other module's
|
|
59
|
+
- map: the traffic heights, height scale factor, outline width, delay minutes and area analytics filters, and the geometries line and halo widths, label size and symbol spacing have `hard-min` ranges; the geometries line label offset a `soft` one; opacities, factors and zooms `hard` ones
|
|
60
|
+
|
|
61
|
+
- [#2411](https://github.com/tomtom-internal/maps-sdk-js/pull/2411) [`37c3a8d`](https://github.com/tomtom-internal/maps-sdk-js/commit/37c3a8d769a0ed0ab5adf1add6f3eb83d7ccb5d0) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: each module's `isVisible()` returns its `visible` setting, and `RoutingModule` gains `setVisible` and `isVisible`.
|
|
62
|
+
|
|
63
|
+
- **Breaking:** map: `isVisible()` on `POIsModule`, `BaseMapModule`, `TrafficFlowModule` and `TrafficIncidentsModule` returns the `visible` setting, as the module's `visible` knob reads, instead of whether any of its layers draws; on `BaseMapModule`, the `visible`, `groups` and styling-toggle settings over the groups asked about. Until something sets it, POIs and the base map report what the style draws and the traffic modules `false`. To read a layer itself, use `map.mapLibreMap.getLayoutProperty(layerId, 'visibility')`
|
|
64
|
+
- **Breaking:** map: `TrafficIncidentsModule.isVisible()` is `false` when the incidents are set hidden with `icons: { visible: true }`. Read `anyIconLayersVisible()` for the icons
|
|
65
|
+
- **Breaking:** map: `TerrainModule.isHillshadeVisible()` returns the `hillshade` setting, `false` until something sets it, instead of whether a hillshade layer draws; `isElevationEnabled()` returns the `elevation` setting and, until something sets it, whether the map's own terrain is raised. To read the map itself, use `map.mapLibreMap.getLayoutProperty(layerId, 'visibility')` or `map.mapLibreMap.getTerrain()`
|
|
66
|
+
- **Breaking:** map: `CustomGeoJSONModule.show()` no longer draws the layers of a module hidden with `setVisible(false)` or `visible: false`; data shown while hidden draws on `setVisible(true)`. Call `setVisible(true)` where a `show()` used to reveal them
|
|
67
|
+
- **Breaking:** map: a subclass of `AbstractDataOwnedMapModule` implements `applyVisibility(config)`, which shows or hides what it draws for the `setVisible` and `isVisible` the base class now provides; its config type takes `visible?: boolean`. Move a module's own `setVisible` body into `applyVisibility`
|
|
68
|
+
- map: `RoutingModule` takes `visible` (default `true`), with `setVisible` and `isVisible`. Hiding covers every part it draws and keeps the routes and waypoints through `showRoutes`, `showWaypoints`, `selectRoute`, the clears and style changes, and `routingKnobCatalogue` lists it as the `visible` toggle
|
|
69
|
+
- map: `CustomGeoJSONModule.isVisible()` reads its `visible` setting
|
|
70
|
+
|
|
71
|
+
- [#2394](https://github.com/tomtom-internal/maps-sdk-js/pull/2394) [`b5c66cc`](https://github.com/tomtom-internal/maps-sdk-js/commit/b5c66cc1a28f9ab897590d37a7d98fe83837d826) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `PlacesModule` and the routing charging stops take `label` instead of `text`, as `GeometriesModule` does.
|
|
72
|
+
|
|
73
|
+
- **Breaking:** map: `PlacesModuleConfig.text` is `label`, like `GeometriesModuleConfig.label`: `{ text: { title, color } }` → `{ label: { title, color } }`
|
|
74
|
+
- **Breaking:** map: `PlaceTextConfig` is `PlaceLabelConfig`
|
|
75
|
+
- **Breaking:** map: `PlacesModule.applyTextConfig()` is `applyLabelConfig()`, as on `GeometriesModule`: `places.applyTextConfig({ color })` → `places.applyLabelConfig({ color })`
|
|
76
|
+
- **Breaking:** map: `RoutingModuleConfig.chargingStops.text` is `chargingStops.label`: `{ chargingStops: { text: { title } } }` → `{ chargingStops: { label: { title } } }`; `ChargingStopTextConfig` is `ChargingStopLabelConfig`, and the routing knob `chargingStops.text.visible` is `chargingStops.label.visible`
|
|
77
|
+
|
|
78
|
+
- [#2338](https://github.com/tomtom-internal/maps-sdk-js/pull/2338) [`9095b5d`](https://github.com/tomtom-internal/maps-sdk-js/commit/9095b5d952788eed8f0c2610a300fafc90b12bba) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: a `PlacesModule` theme is a marker type (`markerType`, `applyMarkerType`), and `PlacesModuleConfig.color` sets the place colours at once.
|
|
79
|
+
|
|
80
|
+
- **Breaking:** map: `PlacesModuleConfig.theme` is `markerType`, with the same values: `{ theme: 'base-map' }` → `{ markerType: 'base-map' }`
|
|
81
|
+
- **Breaking:** map: `PlacesModule.applyTheme()` is `applyMarkerType()`: `places.applyTheme('pin')` → `places.applyMarkerType('pin')`
|
|
82
|
+
- **Breaking:** map: `PlacesTheme` is `PlacesMarkerType`, and `placesThemes` is `placesMarkerTypes`
|
|
83
|
+
- map: `PlacesModuleConfig.color` sets the default pin fill, the label of a hovered or clicked place, connection lines and entry points at once. A more specific setting still wins, and once `color` is set an accent change leaves the places as they are
|
|
84
|
+
- map: `PlaceLabelConfig` extends the shared `LabelConfig` and gains `opacity`, drawn as the labels' `text-opacity`
|
|
85
|
+
- map: a `label.size` or `label.haloWidth` of `0` on `PlacesModule` reaches its labels instead of being ignored
|
|
86
|
+
- map: a `PlacesModule` `layers.*.layout` override of `text-size`, `text-font` or `text-field` wins over `label`, as its paint overrides already did
|
|
87
|
+
|
|
88
|
+
- [#2248](https://github.com/tomtom-internal/maps-sdk-js/pull/2248) [`266202b`](https://github.com/tomtom-internal/maps-sdk-js/commit/266202bba8b3bf2db74b7c17e53d50654284e475) Thanks [@carlosprietofernandez-tomtom](https://github.com/carlosprietofernandez-tomtom)! - **Breaking:** services: `getPOICategories` ranks `filters` matches and keeps each filter's best ones, so `'bar'` returns Bar.
|
|
89
|
+
|
|
90
|
+
- **Breaking:** services: `getPOICategories`, and `getPOICategoryCodes` with it, ranks `filters` matches and keeps each filter's strongest ones, instead of every category whose name or synonym contains it: `'bar'` returns Bar instead of 15 categories including Nail Salon ("Nail Bar") and Toll Gate ("Toll Bar"), and a category code returns that category only
|
|
91
|
+
- services: `getPOICategories` merges several `filters` round-robin, so each filter's best match comes first
|
|
92
|
+
- services: `getPOICategories` `filters` fold accents, so `'cafe'` finds Café, and a blank filter matches nothing instead of every category
|
|
93
|
+
|
|
94
|
+
- [#2415](https://github.com/tomtom-internal/maps-sdk-js/pull/2415) [`fe74bd7`](https://github.com/tomtom-internal/maps-sdk-js/commit/fe74bd759a234894cb9c5c1fafb291a6b6777085) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `RoutingModule.getConfig()` returns the configuration as given, and a module without `displayUnits` follows the global units.
|
|
95
|
+
|
|
96
|
+
- **Breaking:** map: `RoutingModule.getConfig()` returns the configuration as given: without the global `displayUnits` filled in when none were set, and `undefined` after `RoutingModule.create(map)` or `resetConfig()`. Read `TomTomConfig.instance.get().displayUnits` for the units in force when the module config has none
|
|
97
|
+
- map: a `RoutingModule` without `displayUnits` labels its summaries, waypoints and speed limit signs in the global units in force when it draws them, so a later `TomTomConfig.instance.put({ displayUnits })` reaches routes already shown on their next `showRoutes` or configuration change, where the units set at creation used to stay, `updateConfig` included
|
|
98
|
+
|
|
99
|
+
- [#2366](https://github.com/tomtom-internal/maps-sdk-js/pull/2366) [`babe49f`](https://github.com/tomtom-internal/maps-sdk-js/commit/babe49f43aef09d682e078f8cfa1219617e1b8df) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `routingKnobCatalogue` lists the `RoutingModule` display settings, and `StylingKnob` types each knob kind strictly.
|
|
100
|
+
|
|
101
|
+
- **Breaking:** map: `StylingKnob` has one member per `kind`: a `factor` or `number` knob always carries its `range`, an `enum` knob its `options`, and no other kind either, so an entry built with a `range` on a `toggle` or `options` on a `color` knob no longer type-checks
|
|
102
|
+
- **Breaking:** map: `KnobKind` gains `image`, a sprite image id, so an exhaustive `switch` over `KnobKind` needs a case for it
|
|
103
|
+
- map: `routingKnobCatalogue` lists every plain-valued `RoutingModuleConfig` display setting, route-wide and per section type, with its kind, range or options and, where one value holds everywhere, its default; `routingKnobIds` lists the ids. `RoutingKnob` is one entry, `RoutingKnobId` a setting's path in the config, and `RoutingKnobValueOf` the value it takes
|
|
104
|
+
- map: `KnobEntry` is the entry shape every catalogue shares, one member per kind, and `KnobValueOf` the value a knob of each kind holds
|
|
105
|
+
- map: `SectionIconPlacement` names the placements `SectionIconConfig.placement` takes
|
|
106
|
+
|
|
107
|
+
- [#2356](https://github.com/tomtom-internal/maps-sdk-js/pull/2356) [`784ac2a`](https://github.com/tomtom-internal/maps-sdk-js/commit/784ac2a4c084ef7e24a85c7118bf4a905dfe201f) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `SectionIconConfig.sizeFactor` multiplies the size the section type draws its icon at, rather than setting it: `1` leaves it unchanged, and `ferry`, `tollRoad`, `tunnel` and `vehicleRestricted` keep their zoom ramp under any factor. A `size: 0.8` on `ferry` was a fixed `icon-size` of 0.8; `sizeFactor: 0.8` draws that size from zoom 16.5 and scales down below it
|
|
108
|
+
|
|
109
|
+
### Patch Changes
|
|
110
|
+
|
|
111
|
+
- [#2375](https://github.com/tomtom-internal/maps-sdk-js/pull/2375) [`40b9332`](https://github.com/tomtom-internal/maps-sdk-js/commit/40b93323148c11a07ec9880f7ca657c2b53f02ae) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `baseMapKnobCatalogue` and `poisKnobCatalogue` list the base map and POI settings a knob holds.
|
|
112
|
+
|
|
113
|
+
- map: `baseMapKnobCatalogue` lists every `BaseMapModuleConfig` setting, `visible` and one `groups.<group>.visible` toggle per layer group, with its description; `baseMapKnobIds` lists the ids. `BaseMapKnob` is one entry, `BaseMapKnobId` a setting's path in the config, and `BaseMapKnobValueOf` the value it takes
|
|
114
|
+
- map: `poisKnobCatalogue` lists the `POIsModuleConfig` settings a knob holds, `visible` with its default; `poisKnobIds` lists the ids. `POIsKnob` is one entry, `POIsKnobId` a setting's path in the config, and `POIsKnobValueOf` the value it takes
|
|
115
|
+
- map: the `basemap.<group>` entries of `stylingKnobCatalogue` say what their group holds, in the words of the matching `baseMapKnobCatalogue` entry, and name its id
|
|
116
|
+
|
|
117
|
+
- [#2330](https://github.com/tomtom-internal/maps-sdk-js/pull/2330) [`2c1178c`](https://github.com/tomtom-internal/maps-sdk-js/commit/2c1178ca3d23f74eab3431b4a722e7312a94ef52) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: places, routes and the traffic incident overlay follow the styling knob colours live.
|
|
118
|
+
|
|
119
|
+
- map: `TrafficIncidentOverlayModule` follows the `traffic.incidents.*Color` styling knobs live, set before or after it was created and across `setStyle`
|
|
120
|
+
- map: `PlacesModule` with the `base-map`, `circle-icon` or `pin-clustered` marker type follows the POI label colour, outline and size knobs live; the caller's `label` and `layers` settings still win
|
|
121
|
+
- map: `RoutingModule` draws a route's traffic sections in the `traffic.incidents.minorColor`, `moderateColor` and `majorColor` knob colours when they are set, live; a `layers.sections` override still wins, and with none set the colours are unchanged
|
|
122
|
+
- map: `TrafficIncidentOverlayModule` draws minor jams in the style's own colour instead of the light styles' on every style, the dark ones included
|
|
123
|
+
|
|
124
|
+
- [#2399](https://github.com/tomtom-internal/maps-sdk-js/pull/2399) [`2044b41`](https://github.com/tomtom-internal/maps-sdk-js/commit/2044b41e6e0b0b2c0a6e6bf75c39cae496696b1a) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `customGeoJSONKnobCatalogue` lists the `CustomGeoJSONModuleConfig` settings a knob holds, `visible` with its default; the sources' MapLibre layers and cluster options and the images stay the caller's. `customGeoJSONKnobIds` lists the ids. `CustomGeoJSONKnob` is one entry, `CustomGeoJSONKnobId` a setting's path in the config, and `CustomGeoJSONKnobValueOf` the value it takes
|
|
125
|
+
|
|
126
|
+
- [#2253](https://github.com/tomtom-internal/maps-sdk-js/pull/2253) [`52325b7`](https://github.com/tomtom-internal/maps-sdk-js/commit/52325b755317a25d0d1edf6fb1d3a751fc59fcdc) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `TomTomMap` loads nothing from unpkg.com: neither the MapLibre stylesheet nor the RTL text plugin.
|
|
127
|
+
|
|
128
|
+
- map: `TomTomMap` no longer fetches the MapLibre stylesheet from unpkg.com, which sent every end user's IP address to a third party and fired even when the app had imported `maplibre-gl.css` itself; when the page lacks the MapLibre CSS, the SDK applies a copy shipped with it as a lazy chunk — served alongside the SDK, not blocked by a strict CSP `style-src`, and in a cascade layer so the app's own CSS still wins
|
|
129
|
+
- map: `TomTomMap` no longer loads the Mapbox RTL text plugin from unpkg.com either; MapLibre shapes Arabic and bidirectional text itself, so right-to-left labels render as before
|
|
130
|
+
|
|
131
|
+
- [#2379](https://github.com/tomtom-internal/maps-sdk-js/pull/2379) [`85e9d1d`](https://github.com/tomtom-internal/maps-sdk-js/commit/85e9d1dfff95207fe42303d931a61941c45ba0b5) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `GeometriesModule` config changes restyle the geometries already shown.
|
|
132
|
+
|
|
133
|
+
- map: `GeometriesModule.applyConfig`, `updateConfig`, `resetConfig` and `applyLabelConfig` restyle the geometries already shown — colours, palette, fill style, labels and `transformFeaturesForDisplay` — instead of only the ones a later `show()` draws; a shown geometry keeps its id and event state
|
|
134
|
+
- map: `GeometriesModule.applyConfig` replaces the paint of the previous config, so a config that leaves out the colour, fill, border or label, and `resetConfig()`, return them to the defaults; call `updateConfig` to change one part
|
|
135
|
+
- map: a `GeometriesModule` `label.text` given as a MapLibre expression no longer becomes each geometry's `title`, which the line labels and an expression reading `['get', 'title']` drew as the expression itself; a geometry keeps its own title or address, and a literal `label.text` still sets it
|
|
136
|
+
- map: a config change or a style change after `GeometriesModule.clear()` keeps the map clear, and a style change no longer emits `shown-features`, as on the other modules
|
|
137
|
+
|
|
138
|
+
- [#2391](https://github.com/tomtom-internal/maps-sdk-js/pull/2391) [`2293010`](https://github.com/tomtom-internal/maps-sdk-js/commit/2293010f3e0dce4ad1b3fbe960368214a3ca64b3) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `geometriesKnobCatalogue` lists every plain-valued `GeometriesModuleConfig` display setting — colour, fill, border, center and border labels with their fonts, and the border labels' offset — with its kind, range or options and, where one value holds everywhere, its default; `geometriesKnobIds` lists the ids. `GeometriesKnob` is one entry, `GeometriesKnobId` a setting's path in the config, and `GeometriesKnobValueOf` the value it takes
|
|
139
|
+
|
|
140
|
+
- [#2402](https://github.com/tomtom-internal/maps-sdk-js/pull/2402) [`3944ea8`](https://github.com/tomtom-internal/maps-sdk-js/commit/3944ea8d4c46d69facaa59837cb9ce99460a9b67) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - core: `TimeDisplayUnits.hours` documents its real default, `hr`, which `formatDuration` uses when none is set
|
|
141
|
+
|
|
142
|
+
- [#2412](https://github.com/tomtom-internal/maps-sdk-js/pull/2412) [`473c613`](https://github.com/tomtom-internal/maps-sdk-js/commit/473c613346c6014f1be6499893472d97ec38c976) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `TrafficIncidentOverlayModule.applyConfig` and `updateConfig` apply `focus` to the incidents already shown, instead of only after a style switch: the outline colour and width factor repaint in place, so the `focus.outlineColor` and `focus.widthFactor` knobs of `trafficIncidentOverlayKnobCatalogue` take effect when set, and `focus: false` removes the outline, which a later focus style adds back beneath the incidents
|
|
143
|
+
|
|
144
|
+
- [#2389](https://github.com/tomtom-internal/maps-sdk-js/pull/2389) [`04ee5de`](https://github.com/tomtom-internal/maps-sdk-js/commit/04ee5de36942abebd8d59f111925dc83d3056340) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: `discoverPlaces` and the new `resolvePOICategories` take POI categories in words.
|
|
145
|
+
|
|
146
|
+
- discoverPlaces: `filters.poiCategoryQuery` takes categories in words — `'sushi'`, `['gym', 'parking']` — and searches the POI categories they name, resolved in the call's language, so category words reach results in one call instead of a lookup and a search; a word nothing matches is left out, and when none matches the call rejects with `SDKError`
|
|
147
|
+
- `resolvePOICategories` turns words or codes into the `poiCategories` of one search — each word's best three codes, merged round-robin and capped at the 10 a search accepts — and returns the words nothing matched in `unmatched`, for a caller who decides about them before searching; codes alone skip the catalog request
|
|
148
|
+
|
|
149
|
+
- [#2384](https://github.com/tomtom-internal/maps-sdk-js/pull/2384) [`bfe160b`](https://github.com/tomtom-internal/maps-sdk-js/commit/bfe160b1767f892ad2a82fe218a0e9599964eb84) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `preparePlacesForDisplay`, what `PlacesModule.show()` does to the places it is given, is documented along with `toPlaces` and `buildPlaceTitle`, and takes `(places, config)`. The places guide shows your own GeoJSON points drawn through `show()`. `ShownPlaces` names the three places results that are not places — search suggestions, `geometryData` polygons, EV availability — and what shows each instead
|
|
150
|
+
|
|
151
|
+
- [#2376](https://github.com/tomtom-internal/maps-sdk-js/pull/2376) [`6fcdacc`](https://github.com/tomtom-internal/maps-sdk-js/commit/6fcdacc97e87aede4f227f052d139f93a9fed026) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: `getPlacesWithEVAvailability` takes `maxConcurrentRequests`, and its result type allows places without availability.
|
|
152
|
+
|
|
153
|
+
- services: `getPlacesWithEVAvailability` takes `maxConcurrentRequests` (default 1, one request at a time as before) to send that many availability requests at once; the places keep their input order. `PlacesWithEVAvailabilityOptions` names its options
|
|
154
|
+
- services: `getPlacesWithEVAvailability(places)` without options is typed as places that may lack availability, as it returns them; only `excludeIfAvailabilityUnknown: true` types every place as having it
|
|
155
|
+
- services: the `discoverPlaces` docs name all three searches it runs, along-route search when `route` is given included
|
|
156
|
+
|
|
157
|
+
- [#2380](https://github.com/tomtom-internal/maps-sdk-js/pull/2380) [`cd981a0`](https://github.com/tomtom-internal/maps-sdk-js/commit/cd981a0b508b712b95a068b0959d3904c0c80503) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `placesKnobCatalogue` lists every plain-valued `PlacesModuleConfig` display setting — marker type, colour, visibility, default pin style, label, cluster badge and source, EV availability and entry points — with its kind, range or options and, where one value holds everywhere, its default; `placesKnobIds` lists the ids. `PlacesKnob` is one entry, `PlacesKnobId` a setting's path in the config, and `PlacesKnobValueOf` the plain value it takes
|
|
158
|
+
|
|
159
|
+
- [#2390](https://github.com/tomtom-internal/maps-sdk-js/pull/2390) [`712dbb0`](https://github.com/tomtom-internal/maps-sdk-js/commit/712dbb0bae2c7e2f57aa18e403bdd7b50820b67c) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `PlaceLabelConfig` says to set place labels through the module config rather than with MapLibre's `setPaintProperty` or `setLayoutProperty` on its layers, which a style change or a marker type change rebuilds from the config
|
|
160
|
+
|
|
161
|
+
- [#2387](https://github.com/tomtom-internal/maps-sdk-js/pull/2387) [`2d22b56`](https://github.com/tomtom-internal/maps-sdk-js/commit/2d22b56c143d991be6d7cdfa12102a959fcdd92a) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `PlacesModule` documents what a place keeps across `show()`, `clear()` and style changes — `show()` replaces and drops the event states and connections of what it replaces, even under the same id, while style and configuration changes keep both — and `getShown()` states that it returns the places as drawn, with their display properties and event states
|
|
162
|
+
|
|
163
|
+
- [#2410](https://github.com/tomtom-internal/maps-sdk-js/pull/2410) [`8ee1161`](https://github.com/tomtom-internal/maps-sdk-js/commit/8ee11613905ff75aafbb0a204cd7ec58c4ecec8f) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `PlacesModule.create<P>`, `applyLabelConfig<P>`, `applyIconConfig<P>` and `preparePlacesForDisplay<P>` type the `label.title` and `icon.mapping.fn` callbacks for the place shape `P` you name, as `extraFeatureProps` already was, so a callback reading a property of your own data no longer needs a cast
|
|
164
|
+
|
|
165
|
+
- [#2350](https://github.com/tomtom-internal/maps-sdk-js/pull/2350) [`d987e8f`](https://github.com/tomtom-internal/maps-sdk-js/commit/d987e8fc4bfab020ae1019b987e55db368a480e9) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: `calculateReachableRange` and `calculateReachableRanges` return polygons whose ring ends on its first position, as GeoJSON requires; the API's boundary leaves it open, which spatial libraries such as Turf reject
|
|
166
|
+
|
|
167
|
+
- [#2352](https://github.com/tomtom-internal/maps-sdk-js/pull/2352) [`1882c43`](https://github.com/tomtom-internal/maps-sdk-js/commit/1882c433fee8d2756013291a7e3e35f05424adf3) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: `calculateReachableRanges` rejects on a `401` like it does on a `403` or a `429`, instead of skipping the range as one the engine could not compute and returning no polygons
|
|
168
|
+
|
|
169
|
+
- [#2372](https://github.com/tomtom-internal/maps-sdk-js/pull/2372) [`3288c6c`](https://github.com/tomtom-internal/maps-sdk-js/commit/3288c6c43d74d5a3cb6f686a1f6f0b9c0c076eb1) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - `calculateReachableRanges` says in its TSDoc that a range the service answers with an error, such as `NO_RANGE_FOUND` for an origin off the road network, is skipped rather than thrown, so the result can hold fewer polygons than requested.
|
|
170
|
+
|
|
171
|
+
- [#2357](https://github.com/tomtom-internal/maps-sdk-js/pull/2357) [`184d4f4`](https://github.com/tomtom-internal/maps-sdk-js/commit/184d4f4f9c5dd5c31c3ad155223495a19d2e38c0) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: the route's instruction arrows scale with `widthFactor`, instead of keeping one size as the line around them grows or shrinks. The `width` presets draw them as before
|
|
172
|
+
|
|
173
|
+
- [#2358](https://github.com/tomtom-internal/maps-sdk-js/pull/2358) [`6836e99`](https://github.com/tomtom-internal/maps-sdk-js/commit/6836e9910edacc4a7b9d57cb40477f6803793dcd) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: the stop number inside a waypoint pin scales with the pin, so it stays in the pin's head at every `waypointSize` and `waypointSizeFactor`; the `'s'` and `'l'` presets draw it at 0.75× and 1.25×
|
|
174
|
+
|
|
175
|
+
- [#2382](https://github.com/tomtom-internal/maps-sdk-js/pull/2382) [`5e5708b`](https://github.com/tomtom-internal/maps-sdk-js/commit/5e5708bf7160077cbea1b4e36aa49a1bdfb4d024) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `PlacesModuleSerializableConfig`, `RoutingModuleSerializableConfig`, `GeometriesModuleSerializableConfig` and `CustomGeoJSONModuleSerializableConfig` type the part of each module's configuration that survives JSON, leaving out the functions and image elements those modules also take; `SerializableCustomImage` is a `CustomImage` with a string `image`. Every module's configuration, exported with `JSON.stringify(module.getConfig())` and given back to `applyConfig`, holds the same configuration and draws the same layers, and the map modules guide shows how to save and replay one
|
|
176
|
+
|
|
177
|
+
- [#2399](https://github.com/tomtom-internal/maps-sdk-js/pull/2399) [`2044b41`](https://github.com/tomtom-internal/maps-sdk-js/commit/2044b41e6e0b0b2c0a6e6bf75c39cae496696b1a) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `terrainKnobCatalogue` lists every `TerrainModuleConfig` setting — the hillshade, the 3D surface and its exaggeration — with its kind, the exaggeration's `hard-min` range (at least 0.5; above 3 still applies) and, where one value holds everywhere, its default; `terrainKnobIds` lists the ids. `TerrainKnob` is one entry, `TerrainKnobId` a setting's path in the config, and `TerrainKnobValueOf` the value it takes
|
|
178
|
+
|
|
179
|
+
- [#2383](https://github.com/tomtom-internal/maps-sdk-js/pull/2383) [`43b1a71`](https://github.com/tomtom-internal/maps-sdk-js/commit/43b1a717a07857925d37239d886a5fa01b961a0c) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `trafficFlowKnobCatalogue`, `trafficIncidentsKnobCatalogue`, `trafficIncidentOverlayKnobCatalogue` and `trafficAreaAnalyticsKnobCatalogue` list each traffic module's plain-valued settings with their kind, range or options and, where one value holds everywhere, their default; the matching `…KnobIds` arrays list the ids. `TrafficFlowKnob`, `TrafficIncidentsKnob`, `TrafficIncidentOverlayKnob` and `TrafficAreaAnalyticsKnob` are one entry each, their `…KnobId` a setting's path in the module config, and their `…KnobValueOf` the value it takes
|
|
180
|
+
|
|
181
|
+
- [#2414](https://github.com/tomtom-internal/maps-sdk-js/pull/2414) [`7cfe598`](https://github.com/tomtom-internal/maps-sdk-js/commit/7cfe598e8b7e1096a13399d1a086b11f06116b72) Thanks [@JulianChinAFoeng-TomTom](https://github.com/JulianChinAFoeng-TomTom)! - security: a new guide, What the SDK sends, and where, lists what the browser sends to TomTom and to third parties, which values travel in URLs and so land in logs, and whose session cookie proxy mode carries, for a privacy notice or records of processing
|
|
182
|
+
|
|
183
|
+
## 0.60.0
|
|
184
|
+
|
|
185
|
+
### Minor Changes
|
|
186
|
+
|
|
187
|
+
- [#2337](https://github.com/tomtom-internal/maps-sdk-js/pull/2337) [`5c97b52`](https://github.com/tomtom-internal/maps-sdk-js/commit/5c97b529ba05bb8b42dc5ca66da56a1b239107ec) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
188
|
+
|
|
189
|
+
- **Breaking:** map: `GeometriesModule`'s `fill.beforeLayerConfig` and `line.beforeLayerConfig` are removed; use `beforeLayerConfig: { fill, line }` on the module config, `all` covering any part it doesn't name
|
|
190
|
+
- **Breaking:** map: `GeometryBeforeLayerTargets` is removed; the record form of `GeometryBeforeLayerConfig` is `PartsBeforeLayerConfig<'fill' | 'line'>`'s
|
|
191
|
+
- **Breaking:** map: `TrafficAreaAnalyticsModule`'s nested `beforeLayerConfig` shape is removed; key it by display mode instead: `hexgrid.flat2D` → `'hexgrid-2d'`, `hexgrid.extrusion3D` → `'hexgrid-3d'`, likewise for `square`, plus `all` for the rest
|
|
192
|
+
- **Breaking:** map: `GeometriesModule.applyConfig` puts a part the applied config's `beforeLayerConfig` names no target for back at its default place, as a style change does — every part, when the applied config has no `beforeLayerConfig`. `moveBeforeLayer` still leaves such a part where it is
|
|
193
|
+
- **Breaking:** map: `RoutingModule.getLayerToRenderLinesUnder()` returns `string | undefined`, following `beforeLayerConfig` and undefined when the route lines are on top; unconfigured, it still returns `mapStyleLayerIDs.lowestLabel`
|
|
194
|
+
- map: `RoutingModule` takes a `beforeLayerConfig`: one target for the whole route, or one per part — `mainLines`, `instructionLines`, `icons` — plus `all`. `applyConfig` and `updateConfig` restack the layers, and a style change keeps them there. Unconfigured, the layer order is unchanged
|
|
195
|
+
- map: `PartsBeforeLayerConfig` is the one shape every module's `beforeLayerConfig` takes: a single `BeforeLayerConfig`, or a record of the module's own part names plus `all`. `GeometryBeforeLayerConfig`, `AreaAnalyticsBeforeLayerConfig` and `RoutingBeforeLayerConfig` are built on it
|
|
196
|
+
- map: `TrafficAreaAnalyticsModule.moveBeforeLayer` emits `config-change`, as `GeometriesModule` and `TrafficIncidentOverlayModule` do
|
|
197
|
+
|
|
198
|
+
- [#2336](https://github.com/tomtom-internal/maps-sdk-js/pull/2336) [`a117660`](https://github.com/tomtom-internal/maps-sdk-js/commit/a11766044b72a7a8128e882fc58b55f151e7db7c) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
199
|
+
|
|
200
|
+
- **Breaking:** map: `RoutingModuleConfig.theme` and the `RouteTheme` type are removed. `theme.mainColor` → `color`, `theme.routeWidth` → `width`, `theme.waypointSize` → `waypointSize`, all top-level: `{ theme: { mainColor: '#f00', routeWidth: 'l' } }` becomes `{ color: '#f00', width: 'l' }`
|
|
201
|
+
- **Breaking:** map: `SectionIconConfig.size` → `sizeFactor`, now clamped to `SECTION_ICON_SIZE_FACTOR_RANGE` (0.25–2)
|
|
202
|
+
- map: `RoutingModuleConfig.widthFactor` and `waypointSizeFactor` multiply the `width` and `waypointSize` presets, and a section's `widthFactor` its own `width`; clamped to the published `ROUTE_WIDTH_FACTOR_RANGE` and `ROUTE_WAYPOINT_SIZE_FACTOR_RANGE` (0.5–2). The presets draw the sizes they did
|
|
203
|
+
|
|
204
|
+
### Patch Changes
|
|
205
|
+
|
|
206
|
+
- [#2354](https://github.com/tomtom-internal/maps-sdk-js/pull/2354) [`d2e714a`](https://github.com/tomtom-internal/maps-sdk-js/commit/d2e714ac51e1977be7c2fbe10cbcad6559db38e0) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: the `ChargingModel.batteryCurve` reference says a route with charging stops needs it; the service rejects such a request without one
|
|
207
|
+
|
|
3
208
|
## 0.59.0
|
|
4
209
|
|
|
5
210
|
### Minor Changes
|
|
6
211
|
|
|
7
|
-
- 4279e2a
|
|
8
|
-
|
|
9
|
-
- d2c304e
|
|
10
|
-
|
|
212
|
+
- [#2312](https://github.com/tomtom-internal/maps-sdk-js/pull/2312) [`4279e2a`](https://github.com/tomtom-internal/maps-sdk-js/commit/4279e2a7b5d6a9a1971dc46f9ece23eda52793ba) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `TrafficAreaAnalyticsModule.applyConfig` replaces the configuration instead of merging into it: what it leaves out, including each metric its `metricConfig` leaves out and each layer its `beforeLayerConfig` leaves out, goes back to the default. Merge with `updateConfig`, and change one metric with `setColor`, `setHeight` or `filter` given that metric (`setColor('heat', ['speed'])`)
|
|
213
|
+
|
|
214
|
+
- [#2335](https://github.com/tomtom-internal/maps-sdk-js/pull/2335) [`d2c304e`](https://github.com/tomtom-internal/maps-sdk-js/commit/d2c304e124ba0607c4387f85bb5fdc4b1ffa65c4) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
215
|
+
|
|
216
|
+
- **Breaking:** map: `BaseMapModuleConfig.layerGroupsVisibility` and the `BaseMapLayerGroupsVisibility` type are removed; use `groups`, which keeps a visibility per layer group:
|
|
11
217
|
- `layerGroupsVisibility: { mode: 'include', names: ['water', 'ferries'], visible: false }` becomes `groups: { water: { visible: false }, ferries: { visible: false } }`
|
|
12
218
|
- `layerGroupsVisibility: { mode: 'exclude', names: ['land', 'roads'], visible: false }` becomes `visible: false, groups: { land: {}, roads: {} }` — an entry without `visible` draws its group as the style ships it
|
|
13
|
-
- map: `BaseMapModule.getConfig()` and its `config-change` event carry `groups`, one entry per group `setVisible` has set
|
|
14
|
-
- map: `BaseMapModule.applyConfig` replaces the configuration instead of merging into it: groups the new configuration leaves out go back to how the style ships them. Merge with `updateConfig`
|
|
15
|
-
- map: `BaseMapModule.resetConfig` puts every base-map layer back to how the style ships it, instead of leaving hidden groups hidden, or showing every layer, those the style ships hidden included, when the whole base map was hidden
|
|
16
|
-
- map: the `basemap.roadShields` styling knob is removed; use `roads.shields`, which now toggles the whole `roadShields` group
|
|
17
|
-
|
|
18
|
-
Features:
|
|
219
|
+
- **Breaking:** map: `BaseMapModule.getConfig()` and its `config-change` event carry `groups`, one entry per group `setVisible` has set
|
|
220
|
+
- **Breaking:** map: `BaseMapModule.applyConfig` replaces the configuration instead of merging into it: groups the new configuration leaves out go back to how the style ships them. Merge with `updateConfig`
|
|
221
|
+
- **Breaking:** map: `BaseMapModule.resetConfig` puts every base-map layer back to how the style ships it, instead of leaving hidden groups hidden, or showing every layer, those the style ships hidden included, when the whole base map was hidden
|
|
222
|
+
- **Breaking:** map: the `basemap.roadShields` styling knob is removed; use `roads.shields`, which now toggles the whole `roadShields` group
|
|
19
223
|
- map: `BaseMapModuleConfig.groups` keeps a visibility per base-map layer group, applied in order over `visible`; an entry without `visible` draws its group as the style ships it
|
|
20
|
-
|
|
21
|
-
Fixes:
|
|
22
224
|
- map: a style change restores every `BaseMapModule.setVisible` group call, not only the last one
|
|
23
225
|
- map: `BaseMapModule.setVisible` over a group removes the `basemap.<group>`, `buildings.*` or `roads.shields` knob for it from `StylingModule`, so the later call still wins after a style change
|
|
24
226
|
- map: `pois.microMarkers`, `roads.arrows`, `roads.restricted`, `roads.underConstruction` and `roads.exitNumbers` only hide within what `POIsModule` and `BaseMapModule` show: `true` no longer shows layers their module hid, `POIsModule.setVisible(true)` or `BaseMapModule.setVisible(true)` keeps a knob's `false`, and resetting the knob leaves the layers as the module has them
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
227
|
+
|
|
228
|
+
- [#2317](https://github.com/tomtom-internal/maps-sdk-js/pull/2317) [`220d76c`](https://github.com/tomtom-internal/maps-sdk-js/commit/220d76c56634fdfd1f42803fa0f67b7d36da3664) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `IncidentFocusStyle.widthScale` is `widthFactor`, clamped to the new `INCIDENT_FOCUS_WIDTH_FACTOR_RANGE` (`1`–`1.8`, default `1.6`); migrate `focus: { widthScale }` to `focus: { widthFactor }`
|
|
229
|
+
|
|
230
|
+
- [#2313](https://github.com/tomtom-internal/maps-sdk-js/pull/2313) [`3c4cd39`](https://github.com/tomtom-internal/maps-sdk-js/commit/3c4cd395ace39d4730a1af0b047c2d4af0c79933) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
29
231
|
|
|
30
|
-
|
|
232
|
+
- **Breaking:** map: `TrafficIncidentsModule` has one set of filters for the incident lines and their icons. `TrafficIncidentsModuleConfig.icons` is the new `IncidentIconsConfig`, `{ visible? }` only, and `filter()` takes a single argument; `IncidentsCommonConfig` is removed. Migrate by moving what `icons.filters` or `filter()`'s second argument held into the root `filters`
|
|
31
233
|
- map: the style parts the SDK adds — traffic flow, traffic incidents and the hillshade — are hidden until you show them, stated in the traffic flow, traffic incidents and terrain guides
|
|
32
|
-
|
|
33
|
-
|
|
234
|
+
|
|
235
|
+
- [#2316](https://github.com/tomtom-internal/maps-sdk-js/pull/2316) [`70fc511`](https://github.com/tomtom-internal/maps-sdk-js/commit/70fc511e288c47c09d509c497f5116e6d2f75744) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
34
236
|
|
|
35
|
-
|
|
36
|
-
- map: `TrafficIncidentOverlayModule.show()` keeps the incidents hidden while the module is set to `visible: false`
|
|
37
|
-
- map: a style change restores a hidden `TrafficAreaAnalyticsModule` without emitting `config-change`
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
- map:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
- map: `GeometriesModuleConfig.textConfig: { textField }` is `label: { text }`, `GeometryTextConfig` is `GeometryLabel`, and `GeometriesModule.applyTextConfig` takes `{ text }`
|
|
48
|
-
- map: `GeometriesModuleConfig.lineLabelConfig` is `lineLabel` and `GeometryLineLabelConfig` is `GeometryLineLabel`; its `textSize`, `textColor`, `textHaloColor`, `textHaloWidth`, `textOpacity` and `textOffset` are `size`, `color`, `haloColor`, `haloWidth`, `opacity` and `offset`
|
|
49
|
-
- map: `GeometryFillConfig.color` takes a colour, a palette name or a MapLibre expression; legacy MapLibre function objects (`{ stops }`) are no longer accepted
|
|
237
|
+
- **Breaking:** map: `isVisible()` on `TrafficIncidentOverlayModule` and `TrafficAreaAnalyticsModule` reports the module's `visible` setting — `true` unless hidden with `setVisible(false)` or `visible: false` — whatever is shown. A module showing nothing returns `true`. To know whether data is drawn, read `getShown()`: `overlay.getShown().incidents.features.length > 0`, or the `heatmap`/`hexgrid`/`square` collections of `TrafficAreaAnalyticsModule.getShown()`
|
|
238
|
+
- map: `TrafficIncidentOverlayModule.show()` keeps the incidents hidden while the module is set to `visible: false`
|
|
239
|
+
- map: a style change restores a hidden `TrafficAreaAnalyticsModule` without emitting `config-change`
|
|
240
|
+
|
|
241
|
+
- [#2345](https://github.com/tomtom-internal/maps-sdk-js/pull/2345) [`c5660b8`](https://github.com/tomtom-internal/maps-sdk-js/commit/c5660b8679ad652fc068277bc977cfda59226e76) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
242
|
+
|
|
243
|
+
- **Breaking:** services: `CommonServiceParams.customServiceBaseURL` is removed; every service builds its endpoint URL from the global `commonBaseURL`
|
|
244
|
+
- **Breaking:** services: an `apiVersion` passed at runtime, per call or through `TomTomConfig.put`, is ignored; each service calls the API version it pins
|
|
245
|
+
- **Breaking:** map: `StandardStyle.version` is removed; standard styles always load the Orbis style version the SDK is verified against
|
|
246
|
+
- **Breaking:** map: the undocumented `DEFAULT_STYLE_VERSION` export is removed
|
|
247
|
+
|
|
248
|
+
- [#2333](https://github.com/tomtom-internal/maps-sdk-js/pull/2333) [`a52f5f0`](https://github.com/tomtom-internal/maps-sdk-js/commit/a52f5f02acfecdfcc1b05800652f6e16037b0a7a) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
50
249
|
|
|
51
|
-
|
|
250
|
+
- **Breaking:** map: `GeometriesModuleConfig.theme` is `fillStyle`, `GeometryTheme` is `GeometryFillStyle` and `geometryThemes` is `geometryFillStyles`; the values are unchanged
|
|
251
|
+
- **Breaking:** map: a feature sets its own fill style with `properties.fillStyle` instead of `properties.theme`
|
|
252
|
+
- **Breaking:** map: `themedGeometryConfig` is `fillStyledGeometryConfig`
|
|
253
|
+
- **Breaking:** map: `GeometriesModuleConfig.textConfig: { textField }` is `label: { text }`, `GeometryTextConfig` is `GeometryLabel`, and `GeometriesModule.applyTextConfig` takes `{ text }`
|
|
254
|
+
- **Breaking:** map: `GeometriesModuleConfig.lineLabelConfig` is `lineLabel` and `GeometryLineLabelConfig` is `GeometryLineLabel`; its `textSize`, `textColor`, `textHaloColor`, `textHaloWidth`, `textOpacity` and `textOffset` are `size`, `color`, `haloColor`, `haloWidth`, `opacity` and `offset`
|
|
255
|
+
- **Breaking:** map: `GeometryFillConfig.color` takes a colour, a palette name or a MapLibre expression; legacy MapLibre function objects (`{ stops }`) are no longer accepted
|
|
52
256
|
- map: `GeometriesModuleConfig.color` colours a module's fill and border at once; `fill.color`, `line.color` and a feature's own `color` override it, and the map accent applies only while it is unset
|
|
53
257
|
- map: `LabelConfig` is the label styling every module shares — `size`, `color`, `haloColor`, `haloWidth`, `opacity` and `font`
|
|
54
258
|
- map: `label` styles the geometry titles with `LabelConfig`, and `lineLabel` gains `font`
|
|
55
|
-
|
|
56
|
-
Fixes:
|
|
57
259
|
- map: a MapLibre expression in `fill.color` renders, on the fill and on a border without its own `line.color`; an accent change no longer redraws a module that sets `fill.color`
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Features:
|
|
62
|
-
- services: EV charging places from `discoverPlaces()`, `discoverOnePlace()` and `getPlaceDetails()` carry `chargingPark.chargingStations` — each station's charging points (EVSEs) with `capabilities`, `restrictions`, connectors and `evseId`, as the availability service already returns them (#2226)
|
|
63
|
-
- services: route charging stops carry `dataSources.chargingAvailability.id`, so `getPlaceWithEVAvailability()` adds their availability as it does for search results (#2226)
|
|
64
|
-
- core: `ChargingStation` takes its charging point type as a parameter, and `StaticChargingPoint` describes a charging point without real-time status (#2226)
|
|
65
|
-
|
|
66
|
-
Fixes:
|
|
67
|
-
- services: `connectorAvailabilities[].connector.chargingSpeed` is set, and a charging point without `capabilities` or `restrictions` gets empty lists (#2226)
|
|
68
|
-
- services: `getPlaceWithEVAvailability()` counts `chargingPark.connectors` from the availability when the place has none of its own (#2226)
|
|
69
|
-
- c324ff0: Breaking changes:
|
|
70
|
-
- services: the options that drop results — `poiCategories`, `poiBrands`, `indexes`, `geographyTypes`, `connectors`, `fuelTypes`, `minPowerKW`, `maxPowerKW` and `countries` — move under one `filters` object: `PlaceFilters` on the places searches, plus `GeographicFilters` (`countries`) on fuzzy search and geocoding. Geometry and along-route search take no `countries`, which they never sent (#2193)
|
|
71
|
-
- services: `offset` gives way to an opaque `cursor`: pass a fuzzy search or geocoding response's `properties.nextCursor` back unchanged; a value the SDK did not mint throws. `SearchSummary.offset` becomes `nextCursor`, absent when no further page can be served — including once the next page would start past result 1900, which ends pagination rather than failing validation (#2193)
|
|
260
|
+
|
|
261
|
+
- [#2226](https://github.com/tomtom-internal/maps-sdk-js/pull/2226) [`543319b`](https://github.com/tomtom-internal/maps-sdk-js/commit/543319b321489e3ce6e5ea280e736b253464bd1d) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
72
262
|
|
|
73
|
-
|
|
74
|
-
- services:
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
|
|
80
|
-
|
|
263
|
+
- **Breaking:** core: `ChargingPoint.evseId` is optional — some operators publish none, in search results and in `evChargingStationsAvailability()` alike
|
|
264
|
+
- services: EV charging places from `discoverPlaces()`, `discoverOnePlace()` and `getPlaceDetails()` carry `chargingPark.chargingStations` — each station's charging points (EVSEs) with `capabilities`, `restrictions`, connectors and `evseId`, as the availability service already returns them
|
|
265
|
+
- services: route charging stops carry `dataSources.chargingAvailability.id`, so `getPlaceWithEVAvailability()` adds their availability as it does for search results
|
|
266
|
+
- core: `ChargingStation` takes its charging point type as a parameter, and `StaticChargingPoint` describes a charging point without real-time status
|
|
267
|
+
- services: `connectorAvailabilities[].connector.chargingSpeed` is set, and a charging point without `capabilities` or `restrictions` gets empty lists
|
|
268
|
+
- services: `getPlaceWithEVAvailability()` counts `chargingPark.connectors` from the availability when the place has none of its own
|
|
269
|
+
|
|
270
|
+
- [#2193](https://github.com/tomtom-internal/maps-sdk-js/pull/2193) [`c324ff0`](https://github.com/tomtom-internal/maps-sdk-js/commit/c324ff04afb892a600eda5ca9e6576d380ccc9c7) Thanks [@JulianChinAFoeng-TomTom](https://github.com/JulianChinAFoeng-TomTom)!
|
|
81
271
|
|
|
82
|
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
272
|
+
- **Breaking:** services: the options that drop results — `poiCategories`, `poiBrands`, `indexes`, `geographyTypes`, `connectors`, `fuelTypes`, `minPowerKW`, `maxPowerKW` and `countries` — move under one `filters` object: `PlaceFilters` on the places searches, plus `GeographicFilters` (`countries`) on fuzzy search and geocoding. Geometry and along-route search take no `countries`, which they never sent
|
|
273
|
+
- **Breaking:** services: `offset` gives way to an opaque `cursor`: pass a fuzzy search or geocoding response's `properties.nextCursor` back unchanged; a value the SDK did not mint throws. `SearchSummary.offset` becomes `nextCursor`, absent when no further page can be served — including once the next page would start past result 1900, which ends pagination rather than failing validation
|
|
274
|
+
- services: geocoding responses carry the search summary as `properties`, `nextCursor` included
|
|
275
|
+
|
|
276
|
+
- [#2201](https://github.com/tomtom-internal/maps-sdk-js/pull/2201) [`bed0784`](https://github.com/tomtom-internal/maps-sdk-js/commit/bed07846eb89910a5587caf1a04e0dd7c3fe5607) Thanks [@JulianChinAFoeng-TomTom](https://github.com/JulianChinAFoeng-TomTom)! - **Breaking:** services: `getPlaceWithEVAvailability` and `getPlacesWithEVAvailability` reject with `SDKAbortError` when their `signal` is aborted, instead of reporting the cancellation as missing availability data. Every other request failure still resolves to `undefined`, and the sequential run now stops at the cancelled station rather than working through the rest of the list
|
|
277
|
+
|
|
278
|
+
- [#2311](https://github.com/tomtom-internal/maps-sdk-js/pull/2311) [`f0b1ad9`](https://github.com/tomtom-internal/maps-sdk-js/commit/f0b1ad9f75007b73c584bd5d238a118d1a66440d) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `SectionSignConfig.minzoom` and `CountryCrossingConfig.minzoom` are renamed `minZoom`, as every other display config spells its zoom threshold; migrate by renaming the key
|
|
279
|
+
|
|
280
|
+
- [#2101](https://github.com/tomtom-internal/maps-sdk-js/pull/2101) [`f066146`](https://github.com/tomtom-internal/maps-sdk-js/commit/f066146bed70481f8bb3c705b808bda634b7b905) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
85
281
|
|
|
86
|
-
|
|
87
|
-
- map: `
|
|
88
|
-
- map:
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
282
|
+
- **Breaking:** map: `MapColorName` and `mapColorNames` gain `accent`, the colour for what is drawn on top of the map, so a `Record<MapColorName, …>` needs an entry for it
|
|
283
|
+
- map: `setMapColors` and the `colors.accent` knob set `accent`, and `map.mapColors` publishes the map colours in effect
|
|
284
|
+
- map: routes, geometries, place pins, connections and entry points default to the accent and follow it when it changes; a colour the caller set still wins
|
|
285
|
+
- map: `RoutingModule.getConfig()` returns the configuration as given, without the layers the module built from it
|
|
286
|
+
- map: a `PlacesModule` default pin `style` repaints the pin when it changes, and an `icon.default.image` is never replaced by it
|
|
287
|
+
- services: `trafficAreaAnalytics` parses its response when an app transpiles the SDK to ES5, as Sandpack or Babel over `node_modules` does, instead of failing with "undefined is not iterable"
|
|
288
|
+
|
|
289
|
+
- [#2334](https://github.com/tomtom-internal/maps-sdk-js/pull/2334) [`1fa401b`](https://github.com/tomtom-internal/maps-sdk-js/commit/1fa401bb7a7ab40061caad66651ee509f96c44be) Thanks [@carlosprietofernandez-tomtom](https://github.com/carlosprietofernandez-tomtom)! - **Breaking:** core: `AreaAnalyticsFeatureProperties.name` is optional: the API echoes a region name only from a request that names one, and the SDK's names none, so `trafficAreaAnalytics` leaves it out instead of setting it to `undefined`
|
|
92
290
|
|
|
93
291
|
### Patch Changes
|
|
94
292
|
|
|
95
|
-
- b5a7c5f:
|
|
96
|
-
|
|
97
|
-
- 220d76c:
|
|
98
|
-
|
|
99
|
-
- bc35c5f
|
|
100
|
-
- map: `PlacesModule` takes a `cluster` config under the `pin-clustered` theme: `badge` styles the count badge of single-category and mixed-category clusters together, and `source` sets MapLibre's `clusterRadius`, `clusterMaxZoom`, `clusterMinPoints` and your own `clusterProperties` aggregators. Entry points start above a changed `clusterMaxZoom` (#2203)
|
|
293
|
+
- [#2327](https://github.com/tomtom-internal/maps-sdk-js/pull/2327) [`b5a7c5f`](https://github.com/tomtom-internal/maps-sdk-js/commit/b5a7c5fb5503401cd4ae77b7e788b872661cac01) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: the `evChargingStationsAvailability()`, `getPlaceWithEVAvailability()` and `getPlacesWithEVAvailability()` examples compile, and `ChargingParkWithAvailability.availability` names the functions that fetch it
|
|
294
|
+
|
|
295
|
+
- [#2317](https://github.com/tomtom-internal/maps-sdk-js/pull/2317) [`220d76c`](https://github.com/tomtom-internal/maps-sdk-js/commit/220d76c56634fdfd1f42803fa0f67b7d36da3664) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: the `hillshade.exaggeration` knob description, `TerrainModuleConfig.elevationExaggeration` and `TerrainModule.setElevationExaggeration` each name the other: the knob sets how strongly slopes are shaded, the terrain setting the vertical scale of the 3D surface
|
|
296
|
+
|
|
297
|
+
- [#2203](https://github.com/tomtom-internal/maps-sdk-js/pull/2203) [`bc35c5f`](https://github.com/tomtom-internal/maps-sdk-js/commit/bc35c5f288e1bc900cca64469d2960e762e15b81) Thanks [@JulianChinAFoeng-TomTom](https://github.com/JulianChinAFoeng-TomTom)!
|
|
101
298
|
|
|
102
|
-
|
|
103
|
-
- map: a `PlacesModule` `layers.cluster`, `clusterBadge`, `clusterCount`, `clusterMixedBadge` or `clusterMixedCount` override merges into that layer's `paint` and `layout` key by key, like the other place layers, instead of replacing them whole
|
|
104
|
-
|
|
105
|
-
|
|
299
|
+
- map: `PlacesModule` takes a `cluster` config under the `pin-clustered` theme: `badge` styles the count badge of single-category and mixed-category clusters together, and `source` sets MapLibre's `clusterRadius`, `clusterMaxZoom`, `clusterMinPoints` and your own `clusterProperties` aggregators. Entry points start above a changed `clusterMaxZoom`
|
|
300
|
+
- map: a `PlacesModule` `layers.cluster`, `clusterBadge`, `clusterCount`, `clusterMixedBadge` or `clusterMixedCount` override merges into that layer's `paint` and `layout` key by key, like the other place layers, instead of replacing them whole
|
|
301
|
+
|
|
302
|
+
- [#2315](https://github.com/tomtom-internal/maps-sdk-js/pull/2315) [`daf1d0b`](https://github.com/tomtom-internal/maps-sdk-js/commit/daf1d0bb69f6ea6ecd5c23b4bcb5e536e6d76080) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
106
303
|
|
|
107
|
-
|
|
304
|
+
- map: `PlacesModule` and `GeometriesModule` take a `visible` config field (default `true`) and `setVisible()` / `isVisible()`. Hiding covers every layer the module draws — places, connections and entry points; fills, borders, center labels and border labels — keeps its data, and survives `show()`, `clear()` and style changes. Showing again leaves theme-unused layers and `layout.visibility: 'none'` overrides hidden
|
|
108
305
|
- map: `PlacesModule` connection layers and the `GeometriesModule` border keep a `layout.visibility: 'none'` override when data is shown
|
|
109
306
|
- map: `GeometriesModule` border labels (`lineLabel`) move with the border in `moveBeforeLayer` and follow config changes
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
|
|
307
|
+
|
|
308
|
+
- [#2308](https://github.com/tomtom-internal/maps-sdk-js/pull/2308) [`371985f`](https://github.com/tomtom-internal/maps-sdk-js/commit/371985f1576d92f3d4566eec863d5b27c36d0eb5) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: `reverseGeocode` sets no `dataSources.geometry` on an area result; the ID it set was the place ID, which `geometryData` answers with no geometry. To draw a reverse geocoded area, search it by name with its `geographyType`
|
|
309
|
+
|
|
310
|
+
- [#2181](https://github.com/tomtom-internal/maps-sdk-js/pull/2181) [`da4a60d`](https://github.com/tomtom-internal/maps-sdk-js/commit/da4a60d64e59beae7d4b55531f0fa6235b70275f) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - core: `getCoordinateAtRouteProgress`, `calculateProgressAtRoutePoint` and the other route progress lookups bisect the route's `progress` instead of scanning all of it, so a lookup on a 30,000-point route takes microseconds rather than a millisecond ([#2181](https://github.com/tomtom-internal/maps-sdk-js/issues/2181))
|
|
311
|
+
|
|
312
|
+
- [#2272](https://github.com/tomtom-internal/maps-sdk-js/pull/2272) [`8d7d938`](https://github.com/tomtom-internal/maps-sdk-js/commit/8d7d9385d0695547511ef94e02eef59c1840d19f) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
115
313
|
|
|
116
|
-
|
|
117
|
-
- map: `sections.tunnel.icon` and `sections.vehicleRestricted.icon` replace those signs, instead of being accepted and ignored
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
314
|
+
- map: `RoutingModule` posts a tunnel sign where each tunnel starts, under the map's labels, and a "closed to vehicles" sign where each vehicle-restricted stretch starts, just under the traffic icons, on the new `routeTunnelSymbol` and `routeVehicleRestrictedSymbol` layers
|
|
315
|
+
- map: `sections.tunnel.icon` and `sections.vehicleRestricted.icon` replace those signs, instead of being accepted and ignored
|
|
316
|
+
|
|
317
|
+
- [#2279](https://github.com/tomtom-internal/maps-sdk-js/pull/2279) [`0574709`](https://github.com/tomtom-internal/maps-sdk-js/commit/0574709de2be181fe2ed64c6b16e1ec69bec269b) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: `createLatestRequest` keeps only the latest of a series of requests. Each `run` aborts the one before it and resolves `{ current: true, value }`, or `{ current: false }` once a newer run or a `cancel` retired it, so a superseded call neither rejects nor paints last. Errors of the current request, a deadline composed onto its signal included, are rethrown
|
|
318
|
+
|
|
319
|
+
- [#2307](https://github.com/tomtom-internal/maps-sdk-js/pull/2307) [`6d5ac9d`](https://github.com/tomtom-internal/maps-sdk-js/commit/6d5ac9deac6c3d276a787b2654c2dc48088b9ff5) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: the `CommonRoutingParams` examples compile — the heavy-vehicle one drops `travelMode: 'truck'`, the EV one uses `speedsToConsumptionsKWH` — and `VehicleDimensions` states that weight is its only dimension
|
|
122
320
|
|
|
123
321
|
## 0.58.1
|
|
124
322
|
|
|
125
323
|
### Patch Changes
|
|
126
324
|
|
|
127
|
-
- 3e22da7
|
|
128
|
-
|
|
129
|
-
- map: `basemap
|
|
130
|
-
-
|
|
131
|
-
|
|
325
|
+
- [#2099](https://github.com/tomtom-internal/maps-sdk-js/pull/2099) [`3e22da7`](https://github.com/tomtom-internal/maps-sdk-js/commit/3e22da7ae15c064c19a1e32a360d40c1688d8cc5) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
326
|
+
|
|
327
|
+
- map: the `basemap.<group>` and `buildings.*` styling toggles write through `BaseMapModule`, and `styling.get` reads their layers live, so it agrees with `baseMap.isVisible(…)` whichever of the two set the group
|
|
328
|
+
- map: `basemap.land` reaches the layers `BaseMapModule`'s `land` group does, which leave out the style's sourceless `background`; on `satellite` that is no layer
|
|
329
|
+
|
|
330
|
+
- [#1939](https://github.com/tomtom-internal/maps-sdk-js/pull/1939) [`4a3fd42`](https://github.com/tomtom-internal/maps-sdk-js/commit/4a3fd42681a45609a31cd90ad0600a40aac3e097) Thanks [@SuleymanAli-TomTom](https://github.com/SuleymanAli-TomTom)!
|
|
132
331
|
|
|
133
|
-
|
|
134
|
-
- services: `trafficIncidentDetails` validation rejects a request that sets more than one of `bbox`, `polygon` and `ids`, or none of them; the check that `bbox` and `ids` are not combined was never applied
|
|
332
|
+
- services: `trafficIncidentDetails` takes a `polygon`, such as a city boundary from `geometryData`, as a third query mode beside `bbox` and `ids`; the request covers the polygon's bounding box and the response keeps the incidents that intersect the polygon
|
|
333
|
+
- services: `trafficIncidentDetails` validation rejects a request that sets more than one of `bbox`, `polygon` and `ids`, or none of them; the check that `bbox` and `ids` are not combined was never applied
|
|
135
334
|
|
|
136
335
|
## 0.58.0
|
|
137
336
|
|
|
138
337
|
### Minor Changes
|
|
139
338
|
|
|
140
|
-
- 29a6a55
|
|
141
|
-
- map: `culori` v4 is a new peer dependency. npm 7+ and Yarn install it for you; pnpm needs `auto-install-peers=true` or `pnpm add culori` (#2227)
|
|
339
|
+
- [#2227](https://github.com/tomtom-internal/maps-sdk-js/pull/2227) [`29a6a55`](https://github.com/tomtom-internal/maps-sdk-js/commit/29a6a55ca894dfedc1cdd2788b17a836f57c74ef) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
142
340
|
|
|
143
|
-
|
|
144
|
-
- map: colour parsing, conversion, luminance and mixing run on culori's tree-shakeable `culori/fn` instead of the SDK's own parser and named-colour table, so an app that also uses culori ships it once
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- core: `TextWithPhonetics` is renamed `InstructionText` and drops `phonetic` and `phoneticLanguageCode`; instruction name fields carry `text` only (#2213)
|
|
148
|
-
- 93b72d7: Breaking changes:
|
|
149
|
-
- services: `calculateReachableRange` calls reachable-range API version 3, so the request `onAPIRequest` sees is a `POST` with `data` and `headers` — the API key travels as a `TomTom-Api-Key` header — instead of a `GET` URL (#2137)
|
|
150
|
-
- services: `calculateReachableRange` rejects `costModel.avoidAreas`, `when.arriveBy`, and a charge budget it cannot convert (no `model.engine.charging.maxChargeKWH`, or no `vehicle.state` for `remainingChargePCT`) instead of dropping them (#2137)
|
|
341
|
+
- **Breaking:** map: `culori` v4 is a new peer dependency. npm 7+ and Yarn install it for you; pnpm needs `auto-install-peers=true` or `pnpm add culori`
|
|
342
|
+
- map: colour parsing, conversion, luminance and mixing run on culori's tree-shakeable `culori/fn` instead of the SDK's own parser and named-colour table, so an app that also uses culori ships it once
|
|
343
|
+
|
|
344
|
+
- [#2213](https://github.com/tomtom-internal/maps-sdk-js/pull/2213) [`115f8a4`](https://github.com/tomtom-internal/maps-sdk-js/commit/115f8a48dbea201145da4bec3bb8e50d90ddc0ab) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
151
345
|
|
|
152
|
-
|
|
153
|
-
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
- services: `reverseGeocode` takes `geographyTypes`, as the other places services do; it was a singular name holding an array (#2216)
|
|
157
|
-
- services: `metricKeyToApiDataType` is no longer exported (#2216)
|
|
158
|
-
- services: generic and combustion vehicles take no `preferences`, and the `VehiclePreferences` type is removed; an electric vehicle's `preferences` is `ElectricVehiclePreferences` (#2216)
|
|
159
|
-
- map: the module config types follow `<Module>Config` — `TrafficFlowModuleConfig`, `TrafficIncidentsModuleConfig`, `TrafficIncidentOverlayModuleConfig`, `TrafficAreaAnalyticsModuleConfig` replace `FlowConfig`, `IncidentsConfig`, `TrafficIncidentOverlayConfig`, `TrafficAreaAnalyticsConfig` (#2216)
|
|
160
|
-
- map: the `FilterShowMode` value `'all_except'` is `'all-except'`, in the POI, traffic flow and traffic incident filters (#2216)
|
|
346
|
+
- **Breaking:** services: `GuidanceParams.phonetics` and the `Phonetics` type are removed; `guidance` takes `{ type: 'coded' }` only
|
|
347
|
+
- **Breaking:** core: `TextWithPhonetics` is renamed `InstructionText` and drops `phonetic` and `phoneticLanguageCode`; instruction name fields carry `text` only
|
|
348
|
+
|
|
349
|
+
- [#2137](https://github.com/tomtom-internal/maps-sdk-js/pull/2137) [`93b72d7`](https://github.com/tomtom-internal/maps-sdk-js/commit/93b72d70cc0bf7b112f091a839b5d1a9984f5587) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
161
350
|
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
- services: `
|
|
165
|
-
|
|
166
|
-
|
|
351
|
+
- **Breaking:** services: `calculateReachableRange` calls reachable-range API version 3, so the request `onAPIRequest` sees is a `POST` with `data` and `headers` — the API key travels as a `TomTom-Api-Key` header — instead of a `GET` URL
|
|
352
|
+
- **Breaking:** services: `calculateReachableRange` rejects `costModel.avoidAreas`, `when.arriveBy`, and a charge budget it cannot convert (no `model.engine.charging.maxChargeKWH`, or no `vehicle.state` for `remainingChargePCT`) instead of dropping them
|
|
353
|
+
- services: `calculateRoute` sends a vehicle's `currentChargeInkWh` / `currentFuelInLiters` when it has no explicit engine model, and keeps a zero charge, charge percentage or heading on the wire
|
|
354
|
+
|
|
355
|
+
- [#2216](https://github.com/tomtom-internal/maps-sdk-js/pull/2216) [`5bfbe75`](https://github.com/tomtom-internal/maps-sdk-js/commit/5bfbe75ec9517789c8624fd2ede1034590e51d48) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
167
356
|
|
|
168
|
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
- services:
|
|
176
|
-
|
|
177
|
-
|
|
357
|
+
- **Breaking:** services: the reachable-range budget type `remainingChargeCPT` is `remainingChargePCT`, matching `spentChargePCT`
|
|
358
|
+
- **Breaking:** services: `reverseGeocode` takes `geographyTypes`, as the other places services do; it was a singular name holding an array
|
|
359
|
+
- **Breaking:** services: `metricKeyToApiDataType` is no longer exported
|
|
360
|
+
- **Breaking:** services: generic and combustion vehicles take no `preferences`, and the `VehiclePreferences` type is removed; an electric vehicle's `preferences` is `ElectricVehiclePreferences`
|
|
361
|
+
- **Breaking:** map: the module config types follow `<Module>Config` — `TrafficFlowModuleConfig`, `TrafficIncidentsModuleConfig`, `TrafficIncidentOverlayModuleConfig`, `TrafficAreaAnalyticsModuleConfig` replace `FlowConfig`, `IncidentsConfig`, `TrafficIncidentOverlayConfig`, `TrafficAreaAnalyticsConfig`
|
|
362
|
+
- **Breaking:** map: the `FilterShowMode` value `'all_except'` is `'all-except'`, in the POI, traffic flow and traffic incident filters
|
|
363
|
+
- map: `filterShowModes` lists the `FilterShowMode` values at runtime
|
|
364
|
+
- services: `discoverOnePlace` and `geocodeOne` also take a params object (everything but `limit`), so a single-result lookup can carry `geoBias` or a `signal`
|
|
365
|
+
|
|
366
|
+
- [#2197](https://github.com/tomtom-internal/maps-sdk-js/pull/2197) [`0678a81`](https://github.com/tomtom-internal/maps-sdk-js/commit/0678a81f5dff0f840c6735e8a68182c7c998eb60) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
178
367
|
|
|
179
|
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
368
|
+
- **Breaking:** map: `eventState` is typed `EventState`, which adds `recently-hovered`, so your own `['has', 'eventState']` expressions match a feature for its grace period; exclude that state or set `hoverGracePeriodMS: 0`
|
|
369
|
+
- map: `PlacesModule` draws the entry points of shown places with `entryPoints` on its config — for all places or only hovered or clicked ones, from a minimum zoom — and `places.events.entryPoints` hands each back as a point feature with its place attached
|
|
370
|
+
- map: a GeoJSON-backed feature the pointer leaves stays `recently-hovered` for `hoverGracePeriodMS` (default 400, on the map's or a module's `events`); the SDK's layers draw it as no state
|
|
371
|
+
|
|
372
|
+
- [#2189](https://github.com/tomtom-internal/maps-sdk-js/pull/2189) [`834257b`](https://github.com/tomtom-internal/maps-sdk-js/commit/834257b27bee5c60e1cc1782a466d7f6a6f5f8d8) Thanks [@JulianChinAFoeng-TomTom](https://github.com/JulianChinAFoeng-TomTom)!
|
|
182
373
|
|
|
183
|
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
- services:
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
- core: `
|
|
191
|
-
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
374
|
+
- **Breaking:** core: 67 `POICategory` values take their Places Search v3 name, upper-cased — among them `GAS_STATION` → `FUEL_STATION`, `ELECTRIC_VEHICLE_STATION` → `CHARGING_LOCATION`, `HOTEL_MOTEL` → `HOTEL_OR_MOTEL`, `SHOPPING_CENTER` → `MALL`, `SUPERMARKETS_HYPERMARKETS` → `SUPERMARKET`
|
|
375
|
+
- **Breaking:** core: five `POICategory` values merge into the v3 type they share, keeping both V2 ids: `COLLEGE_UNIVERSITY` → `COLLEGE_OR_UNIVERSITY`, `LEISURE_SPORTS_CENTER` → `SPORTS_CENTER`, `OPEN_PARKING_AREA` → `OPEN_CAR_PARKING_AREA`, `PERFORMING_ARTS_THEATER` → `THEATER`, `ROAD_TRAFFIC_CONTROL_CENTER` → `TRAFFIC_CONTROL_DEPARTMENT`
|
|
376
|
+
- **Breaking:** services: `autocompleteSearch` and its `AutocompleteSearch*` types are no longer exported — `getSearchSuggestions()` returns its brand and category suggestions, alone with `filters: { kinds: ['brand', 'category'] }` or ranked with places
|
|
377
|
+
- **Breaking:** services: the places functions take intent-based names that line up with Places Search v3's `suggest` / `discover` / `details`: `search` → `discoverPlaces`, `searchOne` → `discoverOnePlace`, `placeById` → `getPlaceDetails`
|
|
378
|
+
- **Breaking:** services: the types follow — `SearchResponse` → `DiscoverPlacesResponse`, `PlaceByIdParams` / `PlaceByIdResponse` → `PlaceDetailsParams` / `PlaceDetailsResponse`; a place-details error reports its service as `PlaceDetails`
|
|
379
|
+
- **Breaking:** core: `POICategory` drops `PUB_FOOD`, `POLYNESIAN_RESTAURANT`, `OTHER_WINTER_SPORT` and `SNOOKER_POOL_BILLIARD`, which the category endpoint no longer returns. Filtering on one already matched nothing. The map's `poiCategoryGroups.FOOD_DRINKS_GROUP` no longer lists `PUB_FOOD`
|
|
380
|
+
- services: `getSearchSuggestions()` returns one ranked list from the search and autocomplete arms, blended like Places Search v3: at most one brand or category leads, then places
|
|
381
|
+
- core: `POICategory` gains the seven categories the endpoint returns that the vendored table was missing, so `getPOICategories()` and category filters now reach them, and `PlacesModule` draws an icon for each
|
|
382
|
+
- services: `discoverPlaces`, `geocode` and `getSearchSuggestions` encode the query in the request path, so a query containing `/`, `?` or `#` is answered instead of failing with a 404
|
|
383
|
+
|
|
384
|
+
- [#2212](https://github.com/tomtom-internal/maps-sdk-js/pull/2212) [`78c9a7e`](https://github.com/tomtom-internal/maps-sdk-js/commit/78c9a7e74fff1cdb9bc4735d7c01011485d59031) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** services: remove the `customizeService` export, and the optional second argument every service function took to override its request building, sending or response parsing. `calculateReachableRanges` keeps its second `options` argument
|
|
385
|
+
|
|
386
|
+
- [#2223](https://github.com/tomtom-internal/maps-sdk-js/pull/2223) [`e0417a9`](https://github.com/tomtom-internal/maps-sdk-js/commit/e0417a900d9954567180fe96325160f484563c7e) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - **Breaking:** map: `StylingModule.describe()` is removed, together with the `StylingCatalogue`, `StylingKnobDescriptor`, `StylingPresetDescriptor` and shared `KnobDescriptor` types. The knob catalogue is static data now: `stylingKnobCatalogue` lists every knob's kind, description, range or options and `appliesTo`, `stylingPresetCatalogue` every preset with its settings, and `styling.get(id)` reads the value in force on a live map.
|
|
387
|
+
|
|
388
|
+
- [#2231](https://github.com/tomtom-internal/maps-sdk-js/pull/2231) [`7a26791`](https://github.com/tomtom-internal/maps-sdk-js/commit/7a267912057c1026021c769b036e395b1fc29405) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
195
389
|
|
|
196
|
-
|
|
197
|
-
- services: `
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
- services:
|
|
204
|
-
-
|
|
390
|
+
- **Breaking:** core: `GlobalConfig.trackingId` is removed, together with the `Tracking-ID` request header it set
|
|
391
|
+
- **Breaking:** core, services: `apiVersion` is removed from `GlobalConfig` and `CommonRoutingParams`; each service picks the API version it calls
|
|
392
|
+
|
|
393
|
+
- [#2244](https://github.com/tomtom-internal/maps-sdk-js/pull/2244) [`d94e12b`](https://github.com/tomtom-internal/maps-sdk-js/commit/d94e12bb142693730a95b7032e9772ff3caf6a31) Thanks [@carlosprietofernandez-tomtom](https://github.com/carlosprietofernandez-tomtom)!
|
|
394
|
+
|
|
395
|
+
- **Breaking:** core: each `AreaAnalyticsTimedData` granularity has its own entry type, `AreaAnalyticsYearlyEntry` to `AreaAnalyticsHourlyEntry` and `AreaAnalyticsAverageEntry`, whose time identifiers are required, and `AreaAnalyticsTimedEntry` is their union, so code that builds entries by hand must set them
|
|
396
|
+
- **Breaking:** core: `AreaAnalyticsFeatureProperties.timezone` is optional: the API echoes it only from a request that names one, and the SDK's names none
|
|
397
|
+
- services: `trafficAreaAnalytics` reads each `timedData.average` entry's `day` and `hour` from the label the API sends (`FRIDAY-10`) and orders the entries Monday first, instead of numbering them by position in an array the API sorts by label string
|
|
398
|
+
- services: `trafficAreaAnalytics` reads the `year`, `month`, `week`, `date` and `hour` of each yearly to hourly `timedData` entry from the `time` label the API sends (`2024-08-06T07:00`), instead of numbering daily and hourly entries by position from a start date the Lite response never sends, which gave every one an Invalid Date and shifted the hours whenever an `hours` filter, a `days` list or a day without data left entries out, and leaving yearly, monthly and weekly entries with none
|
|
399
|
+
- services: `trafficAreaAnalytics` defaults an omitted `endDate` to three days ago, the latest date that always has data, instead of two: the API publishes a day 24 to 48 hours after it ends, so the default window failed during part of each day
|
|
400
|
+
- services: `trafficAreaAnalytics` documents that its `hours` filter and every `timedData` time identifier are in UTC, since the request names no region timezone
|
|
401
|
+
|
|
402
|
+
- [#2215](https://github.com/tomtom-internal/maps-sdk-js/pull/2215) [`b09510c`](https://github.com/tomtom-internal/maps-sdk-js/commit/b09510c42d6863777e2a5fbe09f429cc0cc9b8da) Thanks [@JulianChinAFoeng-TomTom](https://github.com/JulianChinAFoeng-TomTom)!
|
|
205
403
|
|
|
206
|
-
|
|
207
|
-
- services:
|
|
208
|
-
-
|
|
404
|
+
- **Breaking:** services: `trafficIncidentDetails` calls Orbis Traffic Incident Details v2, so the request `onAPIRequest` sees carries the API key, version, language and an `Attributes` projection as headers instead of query parameters
|
|
405
|
+
- **Breaking:** services: remove the `trafficModelId` parameter from `trafficIncidentDetails`; v2 always serves the latest traffic state
|
|
406
|
+
- **Breaking:** core: remove `TrafficIncidentTMC`, `TrafficIncidentTMCPoint` and `properties.tmc` from `TrafficIncidentProperties`; v2 carries no TMC data
|
|
407
|
+
- services: `trafficAreaAnalytics` accepts a `startDate` without an `endDate` and measures the range to two days ago, the end date it sends, instead of rejecting every such request
|
|
408
|
+
- services: `trafficAreaAnalytics` validates a range in the UTC calendar days it sends, and dates hourly and daily entries in UTC, so neither drifts a day with the time of day or a daylight-saving switch
|
|
209
409
|
|
|
210
410
|
### Patch Changes
|
|
211
411
|
|
|
212
|
-
- d70cae2:
|
|
213
|
-
|
|
214
|
-
- f7e1c3e
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
- map: `
|
|
221
|
-
-
|
|
222
|
-
-
|
|
223
|
-
|
|
224
|
-
-
|
|
225
|
-
|
|
226
|
-
-
|
|
227
|
-
|
|
412
|
+
- [#2098](https://github.com/tomtom-internal/maps-sdk-js/pull/2098) [`d70cae2`](https://github.com/tomtom-internal/maps-sdk-js/commit/d70cae24af5aae9fcdc48159ebb6d7a167bea69b) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: the API reference of `BaseMapModule`, `POIsModule`, `TerrainModule`, `TrafficFlowModule` and `TrafficIncidentsModule` states what each module owns and which `StylingModule` knobs own the look
|
|
413
|
+
|
|
414
|
+
- [#2232](https://github.com/tomtom-internal/maps-sdk-js/pull/2232) [`f7e1c3e`](https://github.com/tomtom-internal/maps-sdk-js/commit/f7e1c3e534cabefd56d09a03ae68bf8b5c90ed06) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: a source comment in the place-pin category mapping no longer links to an internal repository ([#2232](https://github.com/tomtom-internal/maps-sdk-js/issues/2232))
|
|
415
|
+
|
|
416
|
+
- [#2217](https://github.com/tomtom-internal/maps-sdk-js/pull/2217) [`8eff899`](https://github.com/tomtom-internal/maps-sdk-js/commit/8eff899c713586296529fb22a4c84f3663fa0859) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - The `maplibre-gl` peer dependency requires `^6.11.2`, and the `zod` peer dependency `^4.6.5`
|
|
417
|
+
|
|
418
|
+
- [#2222](https://github.com/tomtom-internal/maps-sdk-js/pull/2222) [`bb9161c`](https://github.com/tomtom-internal/maps-sdk-js/commit/bb9161c2dd3bd0e210c36ff94c4f4d4d6f950c3c) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
419
|
+
|
|
420
|
+
- map: `PlacesModule` pins for `ADVENTURE_SPORTS_FACILITY`, `COMMUNITY_CENTER`, `EMBASSY`, `EMERGENCY_MEDICAL_SERVICE` and `ENTERTAINMENT` draw the icon of the category they share a base-map icon with, instead of no icon at all
|
|
421
|
+
- map: `TOLL_GATE` maps to the base-map `toll_plaza` category, so its `circle-icon` and `base-map` icons draw and `POIsModule` category filters match toll plazas
|
|
422
|
+
- map: `THEATER`, `SPORTS_CENTER`, `SQUASH_COURT` and `SCHOOL_BUS_COMPANY` places draw the closest base-map icon under the `circle-icon`, `base-map` and `pin-clustered` themes, instead of the default place pin
|
|
423
|
+
|
|
424
|
+
- [#2230](https://github.com/tomtom-internal/maps-sdk-js/pull/2230) [`58761e4`](https://github.com/tomtom-internal/maps-sdk-js/commit/58761e446cf917b8e07d3388c0347e1fab1f10e4) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: `calculateReachableRange` and `calculateReachableRanges` keep the API key, base URLs, `retry`, callbacks and `signal` out of each polygon's `properties`, now typed as the new `ReachableRangeProperties` — the request parameters without the `CommonServiceParams` fields
|
|
425
|
+
|
|
426
|
+
- [#2242](https://github.com/tomtom-internal/maps-sdk-js/pull/2242) [`8d48ac8`](https://github.com/tomtom-internal/maps-sdk-js/commit/8d48ac87c76270554b67340495318b0f8bb167b2) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - services: the TSDoc of reachable ranges, Long Distance EV Routing, EV charging stations availability and traffic area analytics says which API key access each needs; reachable ranges are marked as a private preview
|
|
427
|
+
|
|
428
|
+
- [#2254](https://github.com/tomtom-internal/maps-sdk-js/pull/2254) [`dec7dac`](https://github.com/tomtom-internal/maps-sdk-js/commit/dec7dacd9a6a00177ce6541bf592d1992988de72) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `TomTomMap.updateEventsConfig` changes the map's user events configuration at runtime, such as the long-hover delays and `hoverGracePeriodMS`; what it leaves out keeps its value
|
|
429
|
+
|
|
430
|
+
- [#2237](https://github.com/tomtom-internal/maps-sdk-js/pull/2237) [`a0f6956`](https://github.com/tomtom-internal/maps-sdk-js/commit/a0f6956bedd3a8f511d062ef37179329392e58de) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
228
431
|
|
|
229
|
-
|
|
230
|
-
- map: `setMapColors` darkens or lightens the education, healthcare, leisure and shopping land-use and building tints with `artificial`, keeping their hue and scaling their saturation with its luminance as the styles' themes do, instead of leaving them at the style's pastel lightness under a dark built-up colour
|
|
231
|
-
- map: a pure grey map colour or colour knob derives grey shades, instead of shades tinted towards red
|
|
232
|
-
- map: `setMapColors` recolours railway outlines with `artificial` along with their dashes, instead of leaving them at the style's grey
|
|
233
|
-
- map: `setMapColors` paints water, roads, built-up areas and labels in the colour given, on the mono styles too, instead of offsetting them from a glacier, restricted-access or city-label literal
|
|
234
|
-
- map: `setMapColors` keeps the opacity of translucent label halos, instead of painting them opaque
|
|
235
|
-
- map: `setMapColors` recolours motorway, trunk and primary link roads with `roadMajor`, instead of with `road`
|
|
236
|
-
- map: `styling.get('colors.<name>')` reports a colour without the opacity of the layer it was read from, so setting it back changes nothing
|
|
237
|
-
- map: `artificial` is read from the city-scale built-up colour, the one the style's theme sets, and `setMapColors` measures its shades from it, instead of from the more saturated small-scale stop
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
- services: `trafficAreaAnalytics`
|
|
432
|
+
- map: on the mono styles, `setMapColors({ land })` re-derives the other nine colours from it with the formulas the styles' themes compile them with; colours given outright still win
|
|
433
|
+
- map: `setMapColors` darkens or lightens the education, healthcare, leisure and shopping land-use and building tints with `artificial`, keeping their hue and scaling their saturation with its luminance as the styles' themes do, instead of leaving them at the style's pastel lightness under a dark built-up colour
|
|
434
|
+
- map: a pure grey map colour or colour knob derives grey shades, instead of shades tinted towards red
|
|
435
|
+
- map: `setMapColors` recolours railway outlines with `artificial` along with their dashes, instead of leaving them at the style's grey
|
|
436
|
+
- map: `setMapColors` paints water, roads, built-up areas and labels in the colour given, on the mono styles too, instead of offsetting them from a glacier, restricted-access or city-label literal
|
|
437
|
+
- map: `setMapColors` keeps the opacity of translucent label halos, instead of painting them opaque
|
|
438
|
+
- map: `setMapColors` recolours motorway, trunk and primary link roads with `roadMajor`, instead of with `road`
|
|
439
|
+
- map: `styling.get('colors.<name>')` reports a colour without the opacity of the layer it was read from, so setting it back changes nothing
|
|
440
|
+
- map: `artificial` is read from the city-scale built-up colour, the one the style's theme sets, and `setMapColors` measures its shades from it, instead of from the more saturated small-scale stop
|
|
441
|
+
|
|
442
|
+
- [#2224](https://github.com/tomtom-internal/maps-sdk-js/pull/2224) [`3133622`](https://github.com/tomtom-internal/maps-sdk-js/commit/3133622d8f7a9c56bd2126326e026f85f470fc2f) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: replacing the image of a `ferry` or `tollRoad` section icon through `sections.<type>.icon` keeps the zoom-ramped size its layer draws with, instead of flattening it to 1; `icon.size` still sets one when given
|
|
443
|
+
|
|
444
|
+
- [#2094](https://github.com/tomtom-internal/maps-sdk-js/pull/2094) [`ddd6a97`](https://github.com/tomtom-internal/maps-sdk-js/commit/ddd6a9749bc140ba90fbc6abf8e6bf648b64db9a) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)! - map: `toHsl`, `formatStyleHsl` and `HslColor` are exported, the colour rules the map-theme plugin shares with the recolour
|
|
445
|
+
|
|
446
|
+
- [#2247](https://github.com/tomtom-internal/maps-sdk-js/pull/2247) [`a3318ef`](https://github.com/tomtom-internal/maps-sdk-js/commit/a3318efefbefa313fe082440d9f5c5f24aff17eb) Thanks [@carlosprietofernandez-tomtom](https://github.com/carlosprietofernandez-tomtom)!
|
|
447
|
+
|
|
448
|
+
- services: `trafficAreaAnalytics` reads `properties.startDate` and `endDate` as the earliest and latest of the `days` the API lists, at midnight UTC, instead of fields the Lite response never sends, which left both an Invalid Date
|
|
449
|
+
- services: `trafficAreaAnalytics` reads `anomalies` keyed by the abbreviated metric fields the API sends (`v`, `c`), instead of data type names, which dropped every anomaly; each anomaly's times are read as UTC, and its `labels` are the names of the public holidays it overlaps
|
|
450
|
+
- services: `trafficAreaAnalytics` documents that `anomalies` is empty: the service detects anomalies only over 35 days or more, beyond a request's 31-day limit
|
|
246
451
|
|
|
247
452
|
## 0.57.0
|
|
248
453
|
|
|
249
454
|
### Minor Changes
|
|
250
455
|
|
|
251
|
-
- 669dc17
|
|
252
|
-
- services: the places services send the API key and API version as `TomTom-Api-Key` / `TomTom-Api-Version` headers instead of `key=` in the URL, so a request builder now returns `{ url, headers }` and a proxy has to forward those headers (#2185)
|
|
253
|
-
- services: `SearchSummary.totalResults` and `SearchSummary.fuzzyLevel` are optional — guard them rather than assuming a number (#2185)
|
|
456
|
+
- [#2185](https://github.com/tomtom-internal/maps-sdk-js/pull/2185) [`669dc17`](https://github.com/tomtom-internal/maps-sdk-js/commit/669dc17c7be960bafbce86c4acabeafa44350f37) Thanks [@JulianChinAFoeng-TomTom](https://github.com/JulianChinAFoeng-TomTom)!
|
|
254
457
|
|
|
255
|
-
|
|
256
|
-
- services: `
|
|
257
|
-
-
|
|
258
|
-
|
|
259
|
-
|
|
458
|
+
- **Breaking:** services: the places services send the API key and API version as `TomTom-Api-Key` / `TomTom-Api-Version` headers instead of `key=` in the URL, so a request builder now returns `{ url, headers }` and a proxy has to forward those headers
|
|
459
|
+
- **Breaking:** services: `SearchSummary.totalResults` and `SearchSummary.fuzzyLevel` are optional — guard them rather than assuming a number
|
|
460
|
+
- services: `customizeService` builders document how to send the credential yourself, including `credentials: 'include'` under a credentials proxy via `isProxyCredentialsMode(config)`
|
|
461
|
+
|
|
462
|
+
- [#2056](https://github.com/tomtom-internal/maps-sdk-js/pull/2056) [`892139d`](https://github.com/tomtom-internal/maps-sdk-js/commit/892139d642f4e78cfe061ea246452effab171ea0) Thanks [@AlvaroGraca-TomTom](https://github.com/AlvaroGraca-TomTom)!
|
|
260
463
|
|
|
261
|
-
|
|
262
|
-
- map:
|
|
464
|
+
- **Breaking:** map: `TerrainModule` replaces `HillshadeModule` — `TerrainModule.get(map, { hillshade: true })` for what `HillshadeModule.get(map, { visible: true })` did, `setHillshadeVisible` for `setVisible`
|
|
465
|
+
- **Breaking:** map: the `view.terrain` and `view.terrainExaggeration` styling knobs and the `terrain` preset are removed — `TerrainModule.get(map, { elevation: true, elevationExaggeration })` raises the terrain instead, and loads the elevation style part the knob could not
|
|
466
|
+
- map: 3D terrain with `TerrainModule` — `elevation` and `elevationExaggeration` raise the map surface from the same elevation data the hillshade shades, restored after every style change
|
|
263
467
|
|
|
264
468
|
### Patch Changes
|
|
265
469
|
|
|
266
|
-
- a8d3fde
|
|
267
|
-
- map: `basemap.<group>` styling knobs toggle every base-map layer group `BaseMapModule` knows, bar the two building groups the `buildings.*` knobs already cover (#2092)
|
|
268
|
-
- map: `hillshade.*` styling knobs set the shading's method, light direction, strength, maximum zoom and colours (#2092)
|
|
269
|
-
- map: `styling.layers.query(…)` edits the paint, layout, filter or visibility of the style layers a query selects, re-applied after every style change and undone by `reset()` (#2092)
|
|
270
|
-
- 2f9aa90: Features:
|
|
271
|
-
- map: every module has `updateConfig(partial)`, which changes the given properties and keeps the rest of the configuration, whatever that module's `applyConfig` does with a whole one (#2100)
|
|
470
|
+
- [#2092](https://github.com/tomtom-internal/maps-sdk-js/pull/2092) [`a8d3fde`](https://github.com/tomtom-internal/maps-sdk-js/commit/a8d3fdef60c84278dc9f1c326d390aaed2af7154) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
272
471
|
|
|
273
|
-
|
|
274
|
-
- map: `
|
|
275
|
-
- map: `
|
|
276
|
-
|
|
277
|
-
|
|
472
|
+
- map: `basemap.<group>` styling knobs toggle every base-map layer group `BaseMapModule` knows, bar the two building groups the `buildings.*` knobs already cover
|
|
473
|
+
- map: `hillshade.*` styling knobs set the shading's method, light direction, strength, maximum zoom and colours
|
|
474
|
+
- map: `styling.layers.query(…)` edits the paint, layout, filter or visibility of the style layers a query selects, re-applied after every style change and undone by `reset()`
|
|
475
|
+
|
|
476
|
+
- [#2100](https://github.com/tomtom-internal/maps-sdk-js/pull/2100) [`2f9aa90`](https://github.com/tomtom-internal/maps-sdk-js/commit/2f9aa90eae8bed1d90fd16388664f577b65b0c1c) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
477
|
+
|
|
478
|
+
- map: every module has `updateConfig(partial)`, which changes the given properties and keeps the rest of the configuration, whatever that module's `applyConfig` does with a whole one
|
|
479
|
+
- map: `BaseMapModule.resetConfig()` empties the configuration instead of keeping the previous one
|
|
480
|
+
- map: `TrafficAreaAnalyticsModule.resetConfig()` returns the display mode, metric, colours, filters, region and layer positions to their defaults, instead of only clearing `getConfig()`
|
|
481
|
+
- map: `TrafficAreaAnalyticsModule.applyConfig` with a new `activeMetric` filters and scales the layers by that metric rather than the previous one
|
|
482
|
+
- map: a clean style switch (`setStyle(style, { resetState: true })`) leaves every module on the configuration `resetConfig()` returns to, and `CustomGeoJSONModule` survives it instead of throwing
|
|
278
483
|
|
|
279
484
|
## 0.56.0
|
|
280
485
|
|
|
281
486
|
### Minor Changes
|
|
282
487
|
|
|
283
|
-
- 9e1d080
|
|
284
|
-
- map: precise types for custom styles, places props and traffic data (#2161)
|
|
285
|
-
- services: deduplicate vehicle energy encoding, tighten EV types (#2159)
|
|
286
|
-
|
|
287
|
-
Features:
|
|
288
|
-
- map: label a route's border crossings with the countries they join (#2153)
|
|
289
|
-
- map: post speed limit signs where the limit changes (#2183)
|
|
290
|
-
- map: styling GA phase 2 - view knobs, presets, map-effects plugin (#2090)
|
|
291
|
-
- map: styling GA phase 3 - setMapColors map colours and exportStyle (#2091)
|
|
292
|
-
- routing: phase 6 - show what the SDK adds over calling the API directly (#2080)
|
|
293
|
-
- services: places GA phase 1 - remove the experimentalSearch export (#2152)
|
|
488
|
+
- [#2188](https://github.com/tomtom-internal/maps-sdk-js/pull/2188) [`9e1d080`](https://github.com/tomtom-internal/maps-sdk-js/commit/9e1d080397ee2d16b6185873661890e5a81f7b65) Thanks [@AlvaroGraca-TomTom](https://github.com/AlvaroGraca-TomTom)!
|
|
294
489
|
|
|
295
|
-
|
|
296
|
-
-
|
|
297
|
-
-
|
|
298
|
-
- map:
|
|
490
|
+
- **Breaking:** map: precise types for custom styles, places props and traffic data
|
|
491
|
+
- **Breaking:** services: deduplicate vehicle energy encoding, tighten EV types
|
|
492
|
+
- map: label a route's border crossings with the countries they join
|
|
493
|
+
- map: post speed limit signs where the limit changes
|
|
494
|
+
- map: styling GA phase 2 - view knobs, presets, map-effects plugin
|
|
495
|
+
- map: styling GA phase 3 - setMapColors map colours and exportStyle
|
|
496
|
+
- routing: phase 6 - show what the SDK adds over calling the API directly
|
|
497
|
+
- services: places GA phase 1 - remove the experimentalSearch export
|
|
498
|
+
- map: draw border crossings under the waypoint pins
|
|
499
|
+
|
|
500
|
+
- [#2175](https://github.com/tomtom-internal/maps-sdk-js/pull/2175) [`1bea71f`](https://github.com/tomtom-internal/maps-sdk-js/commit/1bea71fe79f2875ff3c78cfef136eeb492e8acc0) Thanks [@DanielForniessoria-TomTom](https://github.com/DanielForniessoria-TomTom)!
|
|
299
501
|
|
|
300
|
-
|
|
301
|
-
- map: `stylingColorKnobIds` and `StylingColorKnobId` name every styling colour knob, and `KnobKind` gains `colors`
|
|
502
|
+
- **Breaking:** map: `StylingKnobValueOf` narrows to each knob's kind, so `StylingModule.set` rejects a value of the wrong kind at compile time
|
|
503
|
+
- map: `stylingColorKnobIds` and `StylingColorKnobId` name every styling colour knob, and `KnobKind` gains `colors`
|
|
302
504
|
|
|
303
505
|
## [0.55.1](https://github.com/tomtom-internal/maps-sdk-js/compare/v0.54.0...v0.55.1) (2026-09-21)
|
|
304
506
|
|