# Installation

### NPM Package

The API can be installed as a package using npm. To install it from the npm package repository, simply type:

```bash
npm install @inovitas/infra3dapi
```

### CDN Download

Alternatively, you can obtain the API from a CDN. To get the latest version, add the following script to your HTML file:

```html
<script src="https://cdn.jsdelivr.net/npm/@inovitas/infra3dapi@latest/infra3dapi.js"></script>
```

We recommend using a specific version in your project. To get a specific version, use the following script and adjust the version accordingly:

```html
<script src="https://cdn.jsdelivr.net/npm/@inovitas/infra3dapi@1.0.1/infra3dapi.js"></script>
```

**Note**: Please do not name the `<div>` in which the viewer is initialized as "infra3d" as this may cause internal conflicts.

# Core Concept

To use the API, you can call the init functions in infra3dapi. After log in and initializing the view (with [`manager.initView()`](classes/_inovitas_infra3dapi.manager.Manager.html#initView)), you will get a viewer object. This viewer object can then be used to add event-listeners to different events emitted by the viewer (like [`viewer.geoframechanged`](classes/_inovitas_infra3dsdk.Viewer.html#geoframechanged)) or to call some functions (like [`viewer.getRoutes()`](classes/_inovitas_infra3dsdk.Viewer.html#getRoutes) or [`viewer.movePosition()`](classes/_inovitas_infra3dsdk.Viewer.html#movePosition)).

# Authentication

The authentication of the infra3D JavaScript API is documented [here](https://developers.infra3d.com/javascript-api/authentication) on a dedicated page.

# Changelog

## [1.9.0] - 2026-06-02

### Bugfixes

- fix wrong link to infra3D Academy
- when switching from classic, the imageKey in the searchparam is not a uuid

### Added

- Attribution is now displayed for every layer currently shown in the map (IN-4175)
- Support overlay layers with a specific button (IN-4141)

## 1.8.2 - 2026-05-07

### Added

- add user_groups to tracking labels (IN-4117)

### Bugfixes

- increase number of decimals to get mm-accuracy when using WGS84 (-)

## 1.8.1 - 2026-04-27

### Added

- add getLayers, showLayerById and hideLayerById functions (IN-4074)
- add layershown/layerhidden subscriptions (IN-4074)
- add user_groups to tracking labels (IN-4117)

### Bugfixes

- fix error when login as non-migrated user
- fix FeatureListTable not updating when deleting a feature (IN-4060)
- fix Nodechanged event firing multiple times after moving
- fix snackbar inconsistency (IN-4073)

## 1.8.0 - 2026-03-26

### Added

- added basemap selection feature

### Bugfixes

- fix flickering profile when browser zoom < 100%
- fix error when login as non-migrated user

## 1.7.3 - 2026-03-20

### Bugfixes

- Problem when using the start_position
- Return a message, if no image has been found when using the start_position
- Error when not showing the map window
- Do not show the no-axis-found info if no image was found

## 1.7.2 - 2026-03-05

### Added

- nodechanged event returns now also an averaged lat/lon
- add new interactive authentication method
- add tenant name to apm logs

### Bugfixes

- fix not all layerimports give local storage warning
- fix linref measurement not showing the pinned value field
- fix localStorage not updating
- fix point cloud export not working correctly on tablet
- fix textures & geometries memory leak, which caused a WebGL context-loss

### Changes

- internal repo reorganisation
- update sdk dependencies

## 1.7.1 - 2026-01-27

### Bugfixes

- Fix login as non-migrated user when using the API

## 1.7.0 - 2025-12-16

### Added

- Enable linref for cantons (IN-3084)
- Fully support domains in ArcGIS Layers
- add link to infra3D Academy
- enabled link to profile on platform (IN-1993)

## 1.6.1 - 2025-11-20

### Bugfixes

- Performance when calling movePosition on the viewer is improved (NVTS-1060, NVTS-1062)
- When clicking twice on a feature with the info-tool, the feature info disappears (NVTS-1029, NVTS-1125)
- When exceeding the limit of the localstorage when importing layers, a message is displayed (NVTS-995)
- Fixed errors when importing geodataconfigurations from infra3D Classic (NVTS-1069)
- The Share-Link is updated even if the tool is open and the viewer is moved (NVTS-1078)
- While the layertree is open and focussed, the play with space works again (NVTS-1066)
- Overlap of layertree visibility-symbol with scrollbar in Firefox is fixed (NVTS-1067)

### Added

- PDF-Export is now also in the API available (NVTS-1057)

## 1.6.0 - 2025-10-29

### Bugfixes

- When clicking twice on a feature with the info-tool, the feature info disappears
- When importing Shapefiles, containing an id property, the ID is no longer overwritten with an internal one

### Added

- Authenticate interactively. You could now login with the common login mask (using username)

## 1.5.1 - 2025-10-13

### Bugfixes

- fix forever loading search when switching from classic to nextgen (IN-3791)

## 1.5.0 - 2025-09-17

### Added

- Node ID is returned in nodechanged event
- viewer.moveToKey() to move to a specific key

### Bugfixes

- Projects with a projectScope containing start- or endtimestamps, show the correct routeLines and routeHexes in the map
- Fix boolean attribute handling on creating new features
- moveToPosition is considering the maxDist parameter correctly

### Removed

- No request to /outline in framegate is been done, instead the project boundary or the boundary of the EPSG is used.

## 1.4.2 - 2025-08-13

### Bugfixes

- fix readme docs

## 1.4.1 - 2025-08-13

### Bugfixes

- fix performance (re-render) issue & improve store implementations (IN-3675)
- fix showing whatsnew on hotfix release (IN-3400)
- reset selectedaxis when moving away too far
- fix linref step being shown in non-linref projects

### Changes

- streamline PDF Export translations across the whole app (-)
- activate continuous measurement in linref tool

### Added

- implement whatsnew step

## 1.4.0 - 07.08.2025

### Changes

- Improve What's New Announcements

### Added

- Linear Reference tools: Axisscalebar, Axis Panel, Linear Reference Measurement
- Survey Wheel Measure
- PDF Export Tool

## 1.3.1 - 25.07.2025

### Bugfixes

- Fix types-file
- Bundle images inside the js-file

## 1.3.0 - 02.07.2025

### Added

- viewer.getCameraView() and viewer.setCameraView(...)
- viewer.setUserInteraction(true, false) to enable or disable paning and/or zooming in the image
- viewer.on("panzoomchanged", ...) to get notified when a user is interacting whithin a stereo image
- viewer.getCurrentNode() to retrieve some information like coordinates of the current position
- extended the viewer.on("nodechanged", ...) with some further properties

## 1.2.5 - 27.06.2025

### Bugfixes

- When adding a WFS 2.0 Layer, the settings have not been took over and not been saved correctly (IN-3444)
- When minimising the measurement panel and reopening meausrements again, the panels overlap each other (IN-3461)

## 1.2.4 - 12.06.2025

### Bugfixes

- Some request when using a non-migrated user resulted in a 400 Bad Request.

## 1.2.3 - 05.06.2025

### Bugfixes

- Profile Tool enlarge button now has a tooltip
- Add-On Point Cloud Export: Authorisation based on scope entry in token

### Added

- LoD Concept for Pointcloud fragments
- Add-On Point Cloud Export: Loading state on startup

## 1.2.2 - 17.04.2025

### Bugfixes

- Keydown/-up Eventlisteners ignored if evt.target is an HTMLInputElement, HTMLTextAreaElement or HTMLSelectElement.
- Requests in routesprovider have a lower limit to not reach the backend limit of 6 MB.
- Viewer is destroyed completly, with unlistening to events.
- Layer-configs: Wrong handling with source_options fixed
- When adding a new feature, it could be saved only after two inserts. This is now fixed.
- Fix shortened arcgis URL in Layer options
- Fix jump to multipolygon feature in Feature table
- Fix bug when Frame 0 is not inside projectscope
- Fix zick-zack bug in map when having lra-projects

## 1.2.1 - 24.02.2025

### Bugfixes

- React Reference Error when activating survey wheel measurement
- Not loading depthmaps anymore if loading view

## 1.2.0 - 16.12.2024

### Bugfixes

- Improve styling when using global box-sizing style
- Style of the scrollbar is no more globally overwritten by the API
- Resize event listens now on the div and not the whole window

### Added

- Added functions on viewer to draw and pick a geometry
- Added geometry overlays to display geometries in the viewer
- Function to destroy the API and remove it from the DOM

## 1.1.2 - 21.10.2024

### Bugfixes

- viewer.getRoutes() resulted in an error

## 1.1.1 - 14.10.2024

### Bugfixes

- Layer export not working for non-memory layers
- Duplicate layers when exporting directly after importing layers (without reloading)

## 1.1.0 - 09.10.2024

### Bugfixes

- Bug in viewer.getRoutesOutline() when using as migrated user.
- Same default EPSG-Code (4326) when using start-position for (un)-migrated users.

### Added

- ProjectScope is available to restrict the access inside a project accordingly.
- New concept for routes abstraction in the map, using hexagons
- viewer.getRouteLines() and viewer.getRouteHexes()
- PointCloudExport
- Support of EPSG-Code in start-position

## 1.0.3 - 17.09.2024

### Bugfixes

- Fixed pilegate URL for migrated users.
- Using the profiletool, added an information and reset the tool when changing the image while performing a measurement.
- Fix the bug when using jest for testing.
- Added missing bounding box parameter to viewer.getRoutes().

## 1.0.2 - 06.08.2024

### Bugfixes

- Fixed bug in the layer tree view. The layer tree is visible again.

## 1.0.1 - 23.07.2024

### Bugfixes

- Fixed a bug in the campaign change event in the viewer.

## 1.0.0 - 17.05.2024

### Bugfixes

- Restoration of toolbar and top bar functionality: They can now be shown and hidden smoothly.

### Added

- Introduction of machine authentication and a new corresponding example.
  - Added: Option for access token in the init function.
  - Added: Refresh token for the init function.
- Typings

### Changed

- Examples have been updated to accommodate the new authentication process.

### Deleted

- Interactive login functions.
- Removed: Two options from the init function:
  - demoAccess
  - redirectPath

## 0.2.8 - 08.04.2024

### Added

- Integrated and documented functions
  - moveToPosition
  - moveToCampaign
  - lookAtPosition
  - getRoutes

## 0.2.7 - 04.04.2024

### Added

- Improved documentation
  - Description of the event types
  - Description of further settings

### Changed

- Adaptation to the existing examples

## 0.2.4 - 14.03.2024

### Bugfixes

- Troubleshooting with internal module

## 0.2.3 - 09.02.2024

### Added

- Demo Access Login
- Documenation

### Changed

- Adoption of adjustments to the UI base of infra3D Edit

### Bugfixes

- Various minor adjustments

## 0.2.0 - 30.01.2024

### Added

- Edit functionality

