All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Security Audit and Dependency Updates
- Security Audit and Dependency Updates
- Demos, removed experimental lat/lng to point demo (point not accurate)
- Security Audit and Dependency Updates
- Updated travis config to use dpl V2 which will become the default soon.
- Remove Meridian Watermark
- Security Audit and Dependency Updates
- Security Audit and Dependency Updates
- Security Audit and Dependency Updates
- Security Audit and Dependency Updates
- Added new Create Map option
floorsControlSortDescending
to change Floor Switcher UI sort order to descending. Defaults tofalse
.
- Fire Extinguisher Placemark icon
- Loading spinner issue related to changing floors and disconnecting where the spinner didn't accurately reflect the tag loading state (web socket connection).
- Tags: Default Tag image was changed to a PNG to improve performance.
- API.openStream, onOpen function that's called when the stream opens.
- Demo:
centerMap
- Demo:
zoomToDefault
- Demo:
zoomToPoint
- Security Audit and Dependency Updates
- Placemark search was added to the Directions Overview (multi-floor) demo (BETA). Search can be used for selecting both start and destination endpoints.
- Dependency Updates and Security Audit
- Security Audit and dependency updates
- Support for additional SVG elements:
<defs>
,<marker>
and<use>
- Step by step functionality to the Directions Overview (multi-floor) demo (BETA)
- Dependency Updates and Security Audit
- Dependency Updates and Security Audit
- Security, CI key rotation
- Support for additional SVG elements:
<image>
,<path>
and<circle>
-
Additional API.openStream demos for each resourceType option
-
API.fetchTagDetail(<mac>)
which returns dynamicly updated data for a specific tag.
-
API.openStream, OpenStreamOptions - More specific types
-
API.openStream, OpenStreamOptions - floorID is no longer required when resourceType is set to a value other than "FLOOR".
-
API.openStream, OpenStreamOptions - default value for resourceType is now dynamically calculated. Previous default value was set to "FLOOR" which made floorID required.
-
API.openStream - When resourceType is set to a value other than "FLOOR", the loadInitialTags callback will return all tags at the location.
- Placemarks, add Bike Placemark Icon
-
Minimum zoom level is now dynamically calculated and matches the initial map scale (further zooming out is not allowed). The previous default value was arbitrarily set to 1/60 of the actual map scale. See below for information on how to customize this value.
-
Maximum zoom level was changed to 8 which equals eight times the actual scale of the map. The previous default value was arbitrarily set to 14. See below for information on how to customize this value.
-
Minor styling modifications to Detail Overlay/Modal. See below for information on overriding default styles.
-
Option to specify a minimum zoom level (minZoomLevel). The default value is dynamically calculated and matches the initial map scale (further zooming out is not allowed).
-
Option to specify a maximum zoom level (maxZoomLevel). The default value is 8 which equals eight times the scale of the map.
-
Pan limiting functionality to help keep the map in view when zooming in/out.
-
New method to center the map while retaining the current scale.
centerMap: () => void;
-
Output Placemark Description in Detail Overlay/Modal.
-
Additional Detail Overlay/Modal related classnames to target for styling.
- Restore change made in 1.13.0 (Use new backend endpoints without "track" in the URL. This helps limit potential issues with Ad Blockers).
- Reverted change made in 1.13.0 (Use new backend endpoints without "track" in the URL. This helps limit potential issues with Ad Blockers). A new fix for this issue will be released soon.
- Demo formatting and naming consistency
- API.fetchFloorData method which previously returned undefined
- Security Audit, update Webpack (Cross-realm object access possible in current version)
- Use new backend endpoints without "track" in the URL. This helps limit potential issues with Ad Blockers.
- Notes to README and demos indicating the WebSDK is not a complete location services SDK.
- Dependency Updates and Security Audit
- Dependency Updates and Security Audit
- Placemarks, support for custom Placemark images in detail overlay
- Dependency updates and security audit
- SearchOverlay, handle Placemarks that are not searchable
- Ability to manually set language via a new API option
- Incorrect Examples for Lat/Lng and X/Y conversions
- i18 support. Added additional UI translations
-
i18 support. Include translations for UI.
-
New Annotation Demo and associated functionality for converting Meridian Map x/y points to real-world coordinates (lat/lng)
stream.onTagLeave()
. This is now handled bystream.onTagUpdate()
- Issue where tags that have left the floor after initialization could still appear on the map.
- Dependency updates and security audit
- Init modification to prevent race conditions
- Fetch assets for SearchOverlay after floor specific assets have loaded
- Re-center map when the container size changes
- Update interval for showing Tag location updates is now 5000ms
- Option to change the interval for Tag location updates. Default is 5000 (ms)
- Bug where Tags could appear on the wrong floor
- Cypress test for Demo of lat/lng to Meridian Map points
- Remove pan limiting (translateExtent) related code
- Dependency updates and security audit
- Placemark Details Overlay, output placemark type (type_name) when name is not specified
- New Annotation Demo and associated functionality for converting real-world coordinates (lat/lng) to Meridian Map x/y points
- Directions Overview demo showing how to use the Directions API to display a route that navigates across multiple floors
- SearchOverlay, align radio buttons with labels
- async package patch
-
New demo for adding an annotation point identifying where a user/viewer is, such as at a kiosk
-
SVG styling and presentation attributes for Overlay Polygons and Polylines. Usage examples can be found in the Overlay Polygon and Polyline demos.
- strokeDasharray (stroke-dasharray)
- strokeDashoffset (stroke-dashoffset)
- strokeOpacity (stroke-opacity)
- fill
- fillOpacity (fill-opacity)
- animation
- style
- id
- className (class)
- Change
master
branch name and all references tomain
- New resource options (
resourceIDs
,resourceType
) added toapi.openStream()
for tracking Zone updates. See "api.openStream(), Tag Zone" demo.
- Issue where unnamed Tags could cause an empty list in the Asset List Overlay.
- Issue where unnamed Placemarks could cause an empty list in the Asset List Overlay.
-
(BREAKING) The
showTagsControl
option was removed. This was used to hide the button that opened the Tags List Overlay. SeeshowSearchControl
below for an alternate option. -
The Tag List Overlay is now part of a new Asset List Overlay. See below.
-
api.fetchPlacemarksByLocation()
-
Placemark search functionality (see below)
-
Asset List (search) Overlay. This replaces the Tag List Overlay and provides the ability to also search for Placemarks.
-
showSearchControl
. This can be used to hide the search icon that opens the Asset List overlay -
Demo showing how to hide the Floor menu icon that opens the Floor Switcher
-
Demo showing how to hide the Search menu icon that opens the new Asset List (search) Overlay
-
api.getDirections()
(see Directions Overview demo below) -
Directions Overview demo showing how to use the Directions API to display a route
- Dependency updates
- Added notes for styling a Placemark or Tag label with special characters
- Dependency updates
- Annotation Points: Map Annotation Points are now properly centered by their x,y.
- Upgrade webpack, related dependencies and loaders (#275)
- Placemark Category selectors
body .meridian-placemark-category-{CATEGORY_NAME}
- Added additional example for styling a Placemark based on Category name.
- Issue where Label Placemarks (Label only) would not appear regardless of zoom level.
- Click handlers for annotation points and polygon overlays
- Chrome Zoom related issue that caused annotations to be misaligned when the Zoom level was not 100%
- Demo (Load Tags) to show how to avoid loading Tags. This is especially helpful for customers without the Tags SKU.
- Limit panning so users can't drag the map out of view
- Updated default zoom level and map centering to better accommodate widely differing map and container sizes.
placemarks.labelZoomLevel
Zoom level at which placemark labels appear when label mode is set to "zoom" (defaults to0.2
)
- Placemarks no longer shrink when zoomed out
placemarks.labelMode
setting withalways
,never
,hover
, andzoom
values (defaults tozoom
)
- An issue where placemarks and tags near the top left were unclickable
- Upgraded the map SVG for the examples
onMapClick()
option which is called when the map is clickedTagData
interface (replacesRecord<string, any>
)PlacemarkData
interface (replacesRecord<string, any>
)FloorData
interface (replacesRecord<string, any>
)LocationData
interface (replacesRecord<string, any>
)
- Removed undocumented and unsupported option
onMarkerClick
-
An issue where an HTTP 401 related message would log to the console; now we give a helpful suggestion to use
loadTags: false
in this scenario -
The "basic" demo didn't work correctly
loadTags: false
option to avoid loading tags
- An issue where a loading spinner would stay indefinitely when using the Web SDK on a location without access to tags
- Updated API documentation formatting for code examples
- Overlay polygons are now drawn as
<polygon>
instead of<path>
- Online demos use a snapshot of data now for a more consistent experience
- Console error:
placemarkIconURL: no such icon 'label_department'
MeridianSDK.placemarkIconURL(type)
return URL to an icon representing the given placemark typeonPlacemarksUpdate({ allPlacemarks, filteredPlacemarks })
callback tocreateMap
overlays
array increateMap
, to draw custom polygons or polylines over the maponFloorChange
callback increateMap
annotations
array increateMap
, to draw custom images and text
map.destroy()
is now optional; aMeridianMap
can detect being disconnected from the DOM and automatically destroy itself
map.destroy()
method which should be called when you're done with a map, to close network connections (e.g. in a single page app, or when using JS that removes the map container from the DOM, or replaces its contents viainnerHTML
)
- Unpublished floors are now hidden from the floor selector and tags list
- Placemarks wouldn't update after changing floors
loadPlacemarks
didn't work correctly
api.fetchTagsByFloor()
api.fetchTagsByLocation()
api.fetchPlacemarksByFloor()
api.fetchFloorsByLocation()
api.fetchSVG()
api.token
is now read-onlyapi.environment
is now read-only
api.axios
-
locationID
can now be changed after callingcreateMap
-
Exclusion zones are now hidden
- Adds an Example, titled "Tag/Marker click, prevent default and show additional options", to demo customization of a Tag/Marker click callback -- overriding the default modal, and showing marker data in a sidebar
- Option
loadPlacemarks
that when false causes the map to not load placemark data (defaults totrue
; it can be updated viaupdate
to true later if you want to load the data at a later time)
-
Placemark ID selectors
.meridian-placemark-icon[data-meridian-placemark-id="..."]
-
Tag ID selectors
.meridian-tag[data-meridian-tag-id="..."]
-
An example for styling a specific placemark called "Placemark Customization"
- Replaced inline styles with CSS Custom Properties for easier customization of Placemarks and Tags
- Updates documentation for
onTagsUpdate
to clarify it only receives tags for the current floor
- Descriptions to examples page
- More examples to documentation
- An internal code crash
- Download link now points directly to unpkg
- Fixes broken links
- Exposes the
API
class directly so you can usenew API(options)
instead ofcreateAPI(options)
-
Deprecates
createAPI(options)
-
Switches to TypeDoc for documentation
-
(BREAKING) Tag data returned from API has a new schema
-
tag.editor_data.tags
is nowtag.tags
-
tag.editor_data.is_control_tag
is nowtag.is_control_tag
-
tag.calculations.default.location.x
is nowtag.x
-
tag.calculations.default.location.y
is nowtag.y
-
any other fields from
tag.editor_data
andtag.calculations
have been moved up to the top level of thetag
object -
This may affect your SDK usage if you use the following callbacks:
-
Methods on the stream returned from
openStream()
stream.onInitialTags()
stream.onTagLeave()
stream.onTagUpdate()
-
The options callbacks to
createMap()
onTagClick()
onTagsUpdate()
tags.filter()
-
-
-
Switched TypeScript compiler to target ES2017
-
Tag labels wouldn't line wrap in the tag list
-
Placemarks didn't hide while loading placemarks for a new floor
-
Map images didn't hide while loading the map image for a new floor
-
A few race conditions involving incorrect data appearing onscreen when switching floors quickly
- TypeScript support
MeridianSDK.restrictedPanZoom
now supports any modifier key, not just Shift
-
onTagUpdate
was not called fromcreateAPI
-
Bug: If
showTagsControl
was false, all control tags would be hidden on the map -
The map background image would fail to load unless the user also had access to edit.meridianapps.com.
-
onTagClick(data, options)
- (optional) callback function called whenever a tag is clicked, receiving the tag data and an options object. The options object contains apreventDefault
function. Calloptions.preventDefault()
to prevent the overlay from appearing. -
onPlacemarkClick(data, options)
- (optional) callback function called whenever a placemark is clicked, receiving the tag data and an options object. The options object contains apreventDefault
function. Calloptions.preventDefault()
to prevent the overlay from appearing.
The differences are compared to the old pre-release beta version.
-
The
all
,ids
,labels
, andtypes
props fortags
andplacemarks
have been replaced with a singlefilter
function prop for full control over filtering behavior -
onTagsUpdate(tagsByMAC)
is nowonTagsUpdate(tags)
, wheretags
is an object withallTags
andfilteredTags
keys, which point to arrays of tags -
onFloorsUpdate(floorsByBuilding)
is nowonFloorsUpdate(floors)
, passing an array of floors rather than an object -
onTagDisappear
is now calledonTagLeave
-
Data passed to callbacks follows the same format as the Meridian endpoints now
Previous releases were internal only and not documented.