API Documentation

Version: 24.1.0

Getting started

Below is a small example to get you started. You need a (local) webserver to get the html to work. For a more in depth example, go to: https://www.cyclomedia.com/en/code-examples

Example
<script type="text/javascript" src="https://unpkg.com/react@18.2.0/umd/react.production.min.js"></script>
<script type="text/javascript" src="https://unpkg.com/react-dom@18.2.0/umd/react-dom.production.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@main/dist/en/v6.12.0/build/ol.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js"></script>
<script type="text/javascript" src="https://streetsmart.cyclomedia.com/api/v23.7/StreetSmartApi.js" ></script>
<script>
   // Here you can now call StreetSmartApi.init(), StreetSmartApi.open(),
   // or use event contents like this: StreetSmartApi.Events.panoramaViewer.RECORDING_LOADED
</script>

Changelog

Street Smart - Version 23.6

Story

  • Change redirect URL
  • 3rd party data integration

Street Smart - Version 23.3

Story

  • Changed color of documentation

Bug

  • Version tooltip was missing

Street Smart - Version 23.2

Bug

  • Oblique save image fixed

Street Smart - Version 23.1

Story

  • Client Id passed for logging in with OAuth
  • Remove check for 3DNL viewer
  • Changed configuration endpoint

Street Smart - Version 22.19

Story

  • Added interface function for snapping

Street Smart - Version 22.17

Story

  • Added a save measurement button

Street Smart - Version 22.16

Story

  • New version of the Pointcloud viewer

Street Smart - Version 22.15

Story

  • The 3DNL (Mesh) viewer can now be used in the API. (oauth login only) For an example, please check at the end of the open function documentation.

Street Smart - Version 22.13

Bug

  • fonts not downloading from Street Smart website when using API on custom location

Street Smart - Version 22.12

Story

  • Link sign is visible in single cyclorama
  • Align navigation bar icon colors with viewer color
  • Change date/time notation

Bug

  • Styling elevation slider

Street Smart - Version 22.11

Story

  • Increase Elevation Slider reach to 25 meters

Bug

  • Elevation slider not using proper feet/meter conversion

Street Smart - Version 22.10

Story

  • API: Oauth with popup + user login

Bug

  • API: Fix production build error

Street Smart - Version 22.9

Bug

  • Wrong ol.js in api template

Story

  • Remove zoom buttons from all viewers

Street Smart - Version 22.7

Bug

  • Remove Unity Error in API integrations

Street Smart - Version 22.5

Bug

  • API: Tooltip position hovering on a recording dot

Street Smart - Version 22.3

Story

  • Remove Google fonts

Street Smart - Version 22.1

Story

  • New address search service for countries outside the Netherlands

Street Smart - Version 21.12

Bug

  • API: panorama viewer crashes when open a panorama viewer in the api

Street Smart - Version 21.10

Story

  • API: New PointCloud viewer, which can be called with options argument { viewerType: ['@@ViewerType/POINTCLOUD'] }
  • API: PointCloud Linked Panorama, which can be set with function toggleLinkedViewers (i.e. window.panoramaViewer[0].toggleLinkedViewers()).
  • Implemented DCR9+ Tileschema

Street Smart - Version 21.9

Story

  • API: added the functionality of compass, which can be set with function toggleCompass (i.e. window.panoramaViewer[0].toggleCompass() or window.obliqueViewer.toggleCompass().

Street Smart - Version 21.3

Story

  • API: added the function to set an elevationLevel in the panorama viewer

Street Smart - Version 20.12

Story

  • API: added pointcloud viewer documentation
  • API: added aerial pointcloud toggle

Street Smart - Version 20.1

Story

  • API: added pointcloud viewer to api
  • API: added pointcloud viewer navigation functions
  • API: added pointcloud viewer specific functions

Street Smart - Version 19.19

Story

  • API: added measureMethod to startMeasurement

Street Smart - Version 19.18

Story

  • API: Unit preference setting

Street Smart - Version 19.17

Bug

  • Older oblique image not loaded on panning
  • Symbol sizes in feet systems
  • Flex direction for dashboard panel

Story

  • Update error message
  • API: panorama toggle sidebar expanded error
  • Improve feedback for buttons
  • API: disable pointcloud viewer

Street Smart - Version 19.16

Bug

  • API: cant select redlining features
  • Nested "And" filters in sld are not working
  • Ownership of loading process
  • Point measurements not shown in oblique
  • API: Non Street Smart point measurement + Forward Intersection
  • New navigation with historic cyclorama's
  • API: Oblique viewer crashes when a WFS layer is added.
  • Panorama arrow key navagation
  • API: panorama save image wrong width/height
  • API: geojson polygon measurement in api
  • Brightness and Contrast not on measurements

Story

  • Implement new slope stdev calculations + new correlation function
  • Separate focus styling from hover/active

Street Smart - Version 19.15

Bug

  • API: Close measurement by cross leads to exception in console log
  • API: The cyclorama can be closed during the measurement
  • API: Close measurement leads to an undefined removed viewer event
  • Proper SRS' are not always loaded when needed
  • Intersection calcualtions fail if recordedAt is not a date
  • The lines of measurements are much too thick
  • Correct equations for calculation of standard deviations of polygon measurements
  • Small update of the standard deviation line calculations (change correlation parameters)

Story

  • Support Line width PanoramaViewer
  • Add pointcloud viewer
  • Add pointcloud interface functions
  • Improve layer styling in wizard
  • Improve sizing of points/labels/symbols
  • Label size Panoramaviewer
  • Update npm openlayers to npm ol

Street Smart - Version 19.14

Bug

  • SLD size in panorama works weird<
  • Perfect Polygon does not draw in API
  • API: PropertyIsNull filter not working in Cyclorama
  • Styling issue with polygon fill
  • Webapp crashes in us give german error
  • Fix crash forward intersection with polygons

Story

  • Keyboard shortcuts
  • Add extra panorama window color
  • Remove Reactcss from project
  • Remove / reduce usate of IntlComponents
  • Update to latest pep.js / remove forked pep.js
  • Standard deviation measurements

Street Smart - Version 19.13

Story

  • Copy ground coordinates from cyclorama
  • Show slope angle also with more than 45
  • Remove link for full image when image is new tiling

Street Smart - Version 19.12

Bug

  • Remove adress layer from non-NL configs
  • 'Kadastrale kaart' not shown in oblique viewer
  • Brightness and contrast no longer work in oblique
  • Improve readability of measurement information popups
  • Some 3D polygons not visible in panoramaviewer

Story

  • Transparency slider on oblique
  • View radius
  • Rotating cyclorama by dragging viewing cone in oblique window
  • Show a north arrow for the images
  • Keep bright and contrast setting when opening another cyclorama
  • DCR10 new Tiling Smart Click fix
  • Implement React error bounds

Street Smart - Version 19.11

Bug

  • Clicking non-lidar recording
  • Pip images broken in panoramaviewer
  • Viewing cone not visible
  • Oblique measurement crashes when skipping the last observation

Story

  • API: start oblique measurement

Street Smart - Version 19.10

Bug

  • ObliqueHeight: height of WFS layer in oblique doesn't work
  • ObliqueHeight: viewing cone doesn't work well (only one direction is working)
  • Line does not look accurate in Cycloramaviewer
  • Missing tooltip
  • Surface cursor position not properly updated
  • Layers are not showing in layer manager

Story

  • Source image download
  • Measurement panel collapse
  • Make measurement properties panel collapsible
  • Show total length of the line in the Cyclorama
  • Show the area of a polygon in the cyclorama
  • Measurement panel collapse

Street Smart - Version 19.9

Story

  • Moving the measurement panel to the right side of the Cyclorama/Oblique
  • Combine measurement list with measurement panel
  • API - zoom window button turned off by default.

Street Smart - Version 19.8

Bug

  • Measurement only appears after moving the mouse

Story

  • Improve hitbox for addresslabels and other 2DText
  • Rework loading indicator

Street Smart - Version 19.7

Bug

  • Forward intersection: a click on a recording point leads to the addition of an observation point
  • IE: oblique rotate buttons dont work
  • API: toggleRecordingsVisibility is broken

Story

  • API: Add an interface function to deselect a feature in a layer

Street Smart - Version 19.6

Bug

  • API: viewer is not properly cleaned on destroy
  • Forward intersection + insert between
  • Oblique turn left button doesn't work.
  • toggleAddressesVisible fails
  • API: open 2 images, start measurement, close measurement, some functionality 2nd image doesn't work
  • Fix SetState warnings
  • Can't add observation to smart click measurement.

Story

  • Add WFS overlay option to API
  • "Merge" recordingslayer and historical recordings layer
  • One single Cyclorama layer
  • Change fillColor opacity for polygon measurements
  • Improve forward intersection measurement calculations
  • addLayer reducer throwing warnings

Street Smart - Version 19.5

Bug

  • Standard deviation is lower than recording with point measurement
  • API: Measuring in degree systems should not be possible
  • Switching measurement type crashes Street Smart
  • Black square for text lables
  • Map point measurements broken.

Story

  • Add WFS option on API-SLD-string with WFS-url
  • Three.js replace point geometry with sprite
  • Address number click leads to panorama update
  • Oblique - feature zoomLvl
  • Default collapsed/expanded MeasurementInformationPanel

Street Smart - Version 19.4

Bug

  • API: after start-stop measurement, and two panoramic images are open, no events are fired from one of the images
  • GeoJSON positioning in Oblique improved
  • Color of lines in panorama defaults to white sometimes
  • Fixed Css scoped outside of cmt

Story

  • API: click-info not collapsable
  • SLD: Expands external Graphic so that it is also possible to provide inline Content. (base64 string)
  • Adjusted default measurement name

Street Smart - Version 19.3

Bug

  • Click on point features in panorama is not working
  • Custom layer styling for lines
  • TypeError when toggling overlay in Oblique

Story

  • Add WFS option on API-WFS-SLD-string styling
  • API: Add address layer
  • API: addOverlay function, Make it possible to also give a color to the layer

Street Smart - Version 19.2

Bug

  • Decimal notation depending on language
  • Textsymbolizer is not shown using SLD with SHP
  • API: cant select redlining features
  • Attribute window width for very long values

Street Smart - Version 19.1

Bug

  • Panoramaviewer tooptip doesn't disapear
  • Remove surfacecursor on mouseOut
  • object information not correct with SHP overlay in cyclorama
  • Height measurement, remove insert above button
  • No oblique found form panorama
  • double click zoom bug
  • removeOverlay fails on oblique viewer
  • Precision values change when adding point to line measurement
  • Textlabels are not visible in the panorama viewer
  • Safari Mac PanoramaViewer dragging (viewing) not working

Story

  • Use Properties in CSSParameters in sld
  • keep green color with height measurement
  • API: Remove text: "No Windows Present"

Street Smart - Version 18.15.1

Bug

  • API: rerender on parent div resize

Street Smart - Version 18.15

Bug

  • navigateToUrl on line features
  • Api: Measurement panel falls outside api window
  • Measurement modal resize observer

Story

  • API: Add SLD filter rule PropertyIsNull
  • API: Responsive measurement selection
  • API: update french language file

Street Smart - Version 18.14

Bug

  • Zoom by mouse click problem on measurements
  • First observation line not visible Forward Intersection
  • Report blurring for France
  • Missing language string MeasurementInformationPanel

Story

  • Create measurement from WFS-geometry
  • Download image

Street Smart - Version 18.13.1

Bug

  • Window navigation bar gone when in measurementmode

Street Smart - Version 18.13

Bug

  • Incorrect height in measurement US-feet
  • getApiReadyState() returned incorrect value

Story

  • Mosaic: ability to drag and resize windows

Breaking changes

Version 23.9

  • Updated to React 18.2.0

Version 22.15

  • Lodash is no longer built into the Street Smart API. So you should be aware that the integration now imports lodash properly.

Version 22.10

  • can be used with an iframe
  • Added OAuth, request adding origin domain to be authorised to use OAuth

Version 22.9

  • not usable within an iframe
  • Webpack upgrade

Version 21.10

  • DCR9+ TileSchema
  • New PointCloud Viewer
  • Because of above, historical cycloramas (images shot before 2021) are not displayed correctly.

Version 19.19

  • Updated to React 16.12.0
  • Please update your versions of React and React-DOM to version 16.12.0. Reason is that we also want to be prepared for React 17 next year.

Version 18.10

  • Updated to React 16.4.1
  • Please update your versions of React and React-DOM to version 16.4.1. Reason is that we also want to be prepared for React 17 next year.

Version 18.4

  • The StreetSmartApi.open function takes a different options object, from now it can contain: panoramaviewer options and obliqueviewer options
  • Previously accepted options.closable, options.maximizable and options.replace can be provided per viewer options

Version 17.3

  • Removed previously deprecated functions addPanoramaViewer and destroyPanoramaViewer. Please use StreetSmartApi.open.
  • addOverlay function distinct parameters changed to a single options object.
Example

new options object

const query = 'Van Voordenpark 1, Zaltbommel';

const options = {
     viewerType: [StreetSmartApi.ViewerType.PANORAMA, StreetSmartApi.ViewerType.OBLIQUE],
     srs: 'EPSG:28992',
     panoramaViewer: {
         closable: true,
         maximizable: true,
         replace: true,
         recordingsVisible: true,
         navbarVisible: true,
         timeTravelVisible : true,
         measureTypeButtonVisible: true,
         measureTypeButtonStart: true,
         measureTypeButtonToggle: true,
     },
     obliqueViewer: {
         closable: true,
         maximizable: true,
         navbarVisible: true,
         timeTravelVisible : true,
     }
};

// Open
StreetSmartApi.open(query, options).then( successCallback, errorCallback);

API newsletter

to stay tuned on important API updates, subscribe to our newsletter via https://www.cyclomedia.com/en/street-smart-api-newsletter

OAuth integration in the API

This article describes how to create an OAuth integration with the Street Smart Javascript API.

The following parts are discussed:

point

Type: (Vector3 | undefined)

GenericViewer

Containing event definitions that are the same across all viewers

Events
LAYER_VISIBILITY_CHANGE
VIEWER_ADDED
VIEWER_REMOVED
VIEWER_UPDATED

MeshViewerContainer

MeshViewer component. Do not create this component directly; use the open function.

Instance Members
getId()
getMapDesaturated()
getNavbarExpanded()
getNavbarVisible()
getType()
toggleNavbarExpanded(expanded?)
toggleNavbarVisible(visible?)
setDesaturatedTexture
setLOSEyeHeight
setNavigationState
setOverlayVisibility
setTime

ObliqueViewer

ObliqueViewer component. Do not create this component directly; use the open function.

Instance Members
getButtonEnabled(buttonId)
getId()
getTimeTravelExpanded()
getTimeTravelVisible()
getType()
saveImage()
setBrightness(value?)
setContrast(value?)
setSelectedFeatureByProperties(jsonProperties, layerId)
switchViewingDirection(deltaDegrees)
toggleButtonEnabled(buttonId, enabled?)
toggleCompass(visible?)
toggleNavbarExpanded(expanded?)
toggleNavbarVisible(visible?)
toggleOverlay(layer)
toggleSidebarEnabled(enabled?)
toggleSidebarExpanded(expanded?)
toggleSidebarVisible(visible?)
toggleTimeTravelExpanded(expanded?)
toggleTimeTravelVisible(visible?)
zoomIn()
zoomOut()
canvasToBase
getNavbarExpanded
getNavbarVisible
getSidebarEnabled
getSidebarExpanded
getSidebarVisible
Events
FEATURE_CLICK
FEATURE_SELECTION_CHANGE
IMAGE_CHANGE
SWITCH_VIEWING_DIRECTION
TIME_TRAVEL_CHANGE
VIEW_CHANGE
VIEW_LOAD_END

PanoramaViewer

PanoramaViewer component. Do not create this component directly; use the open function.

Instance Members
get3DCursorVisible()
getId()
getOrientation()
getRecording()
getType()
getViewerColor()
lookAtCoordinate(coordinate, srs?)
openByAddress(query, srs?)
openByCoordinate(coordinate, srs?)
openByImageId(imageId, srs?)
rotateDown(deltaPitch)
rotateLeft(deltaYaw)
rotateRight(deltaYaw)
rotateUp(deltaPitch)
saveImage()
setBrightness(value?)
setContrast(value?)
setElevationSliderLevel(elevationLevel)
setFeatureStyle(feature, null)
setOrientation(orientation)
setSelectedFeatureByProperties(jsonProperties, layerId, additionalLayerId)
setSuppressLoading(active)
showAttributePanelOnFeatureClick(visible?)
toggle3DCursor(visible?)
toggleAddressesVisible(visible?)
toggleCompass(visible?)
toggleLinkedViewers()
toggleNavbarExpanded(expanded?)
toggleNavbarVisible(visible?)
toggleOverlay(layer)
toggleRecordingsVisible(visible?)
toggleSidebarEnabled(enabled?)
toggleSidebarExpanded(expanded?)
toggleSidebarVisible(visible?)
toggleTimeTravelExpanded(expanded?)
toggleTimeTravelVisible(visible?)
canvasToBase
crossSectionController
crossSectionPoints
getButtonEnabled
getNavbarExpanded
getNavbarVisible
getRecordingsVisible
getSidebarEnabled
getSidebarExpanded
getSidebarVisible
getTimeTravelExpanded
getTimeTravelVisible
objectManager
resetCubeProgram
toggleButtonEnabled
Events
ELEVATION_CHANGE
FEATURE_CLICK
FEATURE_SELECTION_CHANGE
IMAGE_CHANGE
MEASUREMENT_CHANGED
MEASUREMENT_SAVED
MEASUREMENT_STARTED
MEASUREMENT_STOPPED
RECORDING_CLICK
SURFACE_CURSOR_CHANGE
TILE_LOAD_ERROR
TIME_TRAVEL_CHANGE
VIEW_CHANGE
VIEW_LOAD_END

PointCloudViewer

PointcloudViewer component. Do not create this component directly; use the open function.

Instance Members
getBackgroundPreset()
getButtonEnabled(buttonId)
getEdgesVisibility()
getId()
getMaxHeightColorization()
getMinHeightColorization()
getNavbarExpanded()
getNavbarVisible()
getPointAmount()
getPointSize()
getPointStyle()
getType()
setBackgroundPreset(backgroundPreset, Background)
setMaxHeightColorization(heightColorization)
setMinHeightColorization(heightColorization)
setPointAmount(amount)
setPointSize(size)
setPointStyle(style)
toggleButtonEnabled(buttonId, enabled?)
toggleEdges(visibility?)
toggleNavbarExpanded(value?)
toggleNavbarVisible(visible?)
togglePointCloudType(switchToPointCloudType, value?)
Events
BACKGROUND_CHANGED
EDGES_CHANGED
POINT_BUDGET_CHANGED
POINT_SIZE_CHANGED
POINT_STYLE_CHANGED
VIEW_CHANGE

addOverlay

Add a GeoJSON overlay to the panorama viewer. Can be removed with removeOverlay

Parameters
options (object) Set of parameters for overlay
Name Description
options.geojson object GeoJSON object containing the layer data
options.name string? Name of the layer
options.sourceSrs string? Optional EPSG code (srs) for the source GeoJSON, if not provided, srs of API initialisation is used.
options.sldXMLtext string? Optional XML string for Styled Layer Descriptor
options.color string? Optional color string, needs to be a hexadecimal value
options.visible boolean? Optional for setting the visibility of the layer, default is true
Returns
{id: (string)}
Example
var options = {name: 'My GeoJSON', geojson: {}, sourceSrs: 'EPSG:28992', sldXMLtext: 'XMLstring'};
var layer = StreetSmartApi.addOverlay(options);
var layerId = layer.id

addWFSLayer

Add a WFS Layer as overlay to the panorama viewer. Can be removed with removeOverlay

Parameters
options (Object) Set of parameters for overlay
Name Description
options.name string Name of the layer
options.url string The url where the WFS is hosted. Not needed if a remoteOWS is provided in the sld.
options.typeName string The type name of the layer. Not needed if a remoteOWS is provided in the sld.
options.version string The WFS version to be used
options.sldXMLtext string? Optional XML string for Styled Layer Descriptor, this can contain an remoteOWS with wfs service.
options.color string? Optional color string, needs to be a hexadecimal string value
options.authRequired boolean? Whether this layer requires authentication to access
options.credentials credentials? Credentials used to access the layer.
options.visible boolean? Optional for setting the visibility of the layer, default is true
Returns
{id: (string)}
Example
var options = {
name: 'My Super cool layer',
url: 'http://testserver.com/geoserver/streets/wfs',
typeName: 'streets:street-center-lines',
version: '1.1.0',
color: '#00ff00',
authRequired: true,
credentials: { username: 'Mike', password: 'Tyson'}
};
var layer = StreetSmartApi.addWFSLayer(options);
var layerId = layer.id

closeViewer

Close a panorama or oblique viewer using a window ID (wid).

Parameters
wid (string) The ID of the viewer to close.
Returns
Promise<any> : When the promise resolves, it returns an array with references to all viewers of type PanoramaViewer and/or ObliqueViewer .
Example

Close a viewer by ID:

StreetSmartApi.open('5D4KX5SM', {
 viewerType: [StreetSmartApi.ViewerType.PANORAMA],
 srs: 'EPSG:28992',
 panoramaViewer: { replace: false, },
}).then(
 function(result) {
   if (result && result[0]) {
     setTimeout(() => {
       StreetSmartApi.closeViewer(result[0].props.id).then(
         function(res) {
           if (res) {
             console.log('Opened and closed a viewer, resulting in an empty list of viewers: ' + res);
           }
         }).catch(
           function(err) {
             console.log('error closing viewer: ' + err);
           }
         )
    }, 1000);
  }
 }).catch(
   function(reason) {
     console.log('Error opening panorama viewer: ' + reason);
   }
 )

destroy

Destroys the API. Cleans up its event handlers and makes used memory available for garbage collection.

Parameters
options (Object) Object containing the options used for destroying the API.
Name Description
options.targetElement Element? DOM element the viewers were rendered into.
options.loginOauth boolean? Indicates whether to log out with oauth. true means log out with oauth.

getActiveMeasurement

Get the active measurement

Returns
Array : Returns Array that includes Type, GeoJSON data and CRS object.
Example

Get the active measurement data

StreetSmartApi.getActiveMeasurement();

result:
{
type: String,
 features: [
  geometry: Object,
  properties: Object,
  type: String,
 ],
 crs: Object,
}

getAddressSettings

Returns the object containing the address search settings.

Returns
{locale: (string), database: (string)} : Object containing the address settings.

getApiReadyState

Returns the current 'ready'-state of the API.

Returns
Boolean : 'ready'-state.

getApplicationName

Returns the application name of the API.

Returns
string : Application name.

getApplicationVersion

Returns the used version of the API.

Returns
string : API version number.

getDebugLogs

Returns all logs, including ones invisible to integrators.

Returns
Array<string> : Array of console logs

getPermissions

Returns the object containing functionalities that are currently permitted to use by the user.

Returns
Array : Array containing the permissions.

getViewers

Return an array with references to all viewers.

Returns
Array<Object> : Returns an array with references to all viewers of type PanoramaViewer and/or ObliqueViewer .
Example

Get opened viewers:

StreetSmartApi.open('5D4KX5SM', {
 viewerType: [StreetSmartApi.ViewerType.PANORAMA],
 srs: 'EPSG:28992',
 replace: false,
}).then(
  function(result) {
    if (result && result[0]) {
      const viewers = StreetSmartApi.getViewers();
      console.log('Viewer Array:', viewers);
    }
  }).catch(
   function(reason) {
     console.log('Error opening panorama viewer: ' + reason);
   }
 )

init

Initializes the API using the inserted values. Required to use functional viewers. Please choose a feet or metric system like: EPSG:26918 (UTM18 - USA) or EPSG:28992 (Netherlands)

Parameters
options (Object) Object containing the options used for initializing the API.
Name Description
options.targetElement Element? DOM element to render the viewers into.
options.username string? Username of the user. Only used when the loginOauth value is false.
options.password string? Password of the user. Only used when the loginOauth value is false.
options.loginOauth boolean? Indicates to login with oauth. true means login with oauth. false means use basic auth.
options.clientId string? The clientId of the user. This value only needs to be provided when logging in via oAuth. The clientId can be obtained from the helpdesk.
options.loginRedirectUri string? Optional value, the absolute / relative path to the redirect login handling of oauth.
options.logoutRedirectUri string? Optional value, the absolute / relative path to the redirect logout handling of oauth.
options.tid string? Password of the user.
options.apiKey string apiKey given to the user.
options.srs string EPSG code of the coordinate system used in the API. E.g. "EPSG:28992".
options.locale string (default 'en-US') Language used as default in the API. currently we support: de, en-GB, en-US, fi, fr, nl, tr, pl
options.overlayDrawDistance string (default 30) max distance that is used for draw the overlays in the panorama viewer.
options.addressSettings {locale: string, database: string}? The address settings to use for address searches.
options.configurationUrl string? Alternate configuration url to use for all configuration services. Can be used for a local installation . locale - The locale to use. e.g. 'nl', use only 2 letter ISO-3166 country codes . database - The name of the database. e.g. 'CMDatabase'.
Returns
Promise : Returns a new promise for the result that may be used to chain additional functions.
Example

Initializing a StreetSmartApi.

<script type="text/javascript" src="src/StreetSamrtApi.js"></script>

// Set variables for initialization.
let options = {
     targetElement: document.getElementById('streetsmartApi'),
     username: "username",
     password: "password",
     loginOauth: true,
     clientId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
     srs: "EPSG:29882",
     apiKey: "XXXX-XXXX-XXXX-XXXX",
     locale: "en-US",
     overlayDrawDistance: 30,
     addressSettings: {
         locale: "nl",
         database: "CMDatabase"
     }
};

// Initalize
StreetSmartApi.init(options).then( successCallback, errorCallback);

off

Method to add an event listener.

Parameters
type (string) Remove an event listener. See Events E.g. MEASUREMENT_CHANGED
callback (Function) Function which was set on the event listener.
Returns
StreetSmartAPI : Returns back the instance of StreetSmartAPI so you can remove events in a chain.

off

Method to add an event listener.

Parameters
type (string) Remove an event listener. See Events E.g. RECORDING_CLICK
callback (Function) Function which was set on the event listener.
Returns
PanoramaViewer : Returns back the instance of PanoramaViewer so you can remove events in a chain.

on

Method to add an event listener.

Parameters
type (string) Type of event to listen to. See Events E.g. MEASUREMENT_CHANGED
callback (Function) Callback for event listener. Will provide an event as the first argument.
Returns
StreetSmartAPI : Returns back the instance of StreetSmartAPI so you can add events in a chain.

on

Method to add an event listener.

Parameters
type (string) Type of event to listen to. See Events E.g. RECORDING_CLICK
callback (Function) Callback for event listener. Will provide an event as the first argument.
Returns
PanoramaViewer : Returns back the instance of PanoramaViewer so you can add events in a chain.

open

Open a panorama, oblique, point cloud viewer and/or meshviewer using a query. The query can be a coordinate, an extent, an address or a panorama/oblique ID.

Parameters
query (string) The query
options (object)
Name Description
options.viewerType Array<ViewerType> an array indicating what kind of viewer(s) to open
options.recordingServiceType RecordingServiceType value indicating what kind of service to open
options.srs string EPSG code of the spatial reference system to use
options.panoramaViewer PanoramaViewerOptions options object for PanoramaViewer options
options.obliqueViewer ObliqueViewerOptions options object for ObliqueViewer options
options.pointcloudViewer PointcloudViewerOptions options object for PointcloudViewer options
options.meshviewer MeshViewerOptions options object for MeshViewer options
Returns
Promise<any> : When the promise resolves, it returns an array with references to the created PanoramaViewer , ObliqueViewer and/or MeshViewerContainer .
Example

Open a panorama viewer by ID:

StreetSmartApi.open('5D4KX5SM', {
  viewerType: [StreetSmartApi.ViewerType.PANORAMA],
  srs: 'EPSG:28992',
  panoramaViewer: { replace: false, },
}).then(
  function(result) {
    if (result && result[0]) {
      console.log('Opened a panorama viewer through API!', result[0]);
    }
  }
).catch(
  function(reason) {
    console.log('Error opening panorama viewer: ' + reason);
  }
)

Open a panorama viewer by coordinate and date range (this is only applicable for the panorama viewer):

StreetSmartApi.open(
{
 coordinate: [121692.34, 487812.37, 5.60],
 dateRange: {from: '2017-03-01', to: '2017-04-01'},
},
{
viewerType: [StreetSmartApi.ViewerType.PANORAMA],
srs: 'EPSG:28992',
panoramaViewer: { replace: false, },
}).then(
  function(result) {
    if (result && result[0]) {
      console.log('Opened a panorama viewer through API!', result[0]);
    }
  }
).catch(
  function(reason) {
    console.log('Error opening panorama viewer: ' + reason);
  }
)

Open a panorama viewer and oblique viewer by address:

StreetSmartApi.open('Van Voordenpark 1, Zaltbommel', {
  viewerType: [StreetSmartApi.ViewerType.PANORAMA, StreetSmartApi.ViewerType.OBLIQUE],
  srs: 'EPSG:28992',
}).then(
  function(result) {
    if (result && result[0] && result[1]) {
      console.log('Opened a panorama viewer and oblique viewer through API!', result[0], result[1]);
    }
  }
).catch(
  function(reason) {
    console.log('Error opening viewers: ' + reason);
  }
)

Open a aerial pointcloud viewer by coordinate:

StreetSmartApi.open(
{
  coordinate: [121692.34, 487812.37, 5.60],
},
{
  viewerType: [StreetSmartApi.ViewerType.POINTCLOUD],
  srs: 'EPSG:28992',
  pointcloudViewer: { pointCloudType: StreetSmartApi.PointCloudType.AERIAL }}).then(
  function(result) {
    if (result && result[0]) {
      console.log('Opened a pointcloud viewer through API!', result[0]);
    }
  }
).catch(
  function(reason) {
    console.log('Error opening pointcloud viewer: ' + reason);
  }
)

Open a panorama viewer and an aerial pointcloud viewer by coordinate:

StreetSmartApi.open(
{
  coordinate: [121692.34, 487812.37, 5.60],
},
{
  viewerType: [StreetSmartApi.ViewerType.PANORAMA, StreetSmartApi.ViewerType.POINTCLOUD],
  srs: 'EPSG:28992',
  panoramaViewer: { replace: false, },
  pointcloudViewer: { pointCloudType: StreetSmartApi.PointCloudType.AERIAL }}).then(
  function(result) {
    if (result) {
      console.log('Opened a pointcloud viewer and a panorama viewer through API!', result);
    }
  }
).catch(
  function(reason) {
    console.log('Error opening pointcloud viewer and panorama viewer: ' + reason);
  }
)

Open a meshviewer by coordinates:

StreetSmartApi.open(
{
  coordinate: [121293.08, 487400, 69],
},
{
  viewerType: StreetSmartApi.ViewerType.MESHVIEWER,
  srs: 'EPSG:28992',
  meshviewer: {
    fromViewer: StreetSmartApi.ViewerType.PANORAMA,
  }
 }).then(
  function(result) {
    if (result) {
      console.log('Opened a meshviewer through the API', result);
    }
  }
).catch(
  function(reason) {
    console.log('Error opening meshviewer: ' + reason);
  }
)

Open a meshviewer by imageID or address: (choose one)

StreetSmartApi.open("WE4UGIO7" || "Dam 3, Amsterdam",
{
  viewerType: StreetSmartApi.ViewerType.MESHVIEWER,
  srs: 'EPSG:28992',
  meshviewer: {
    fromViewer: StreetSmartApi.ViewerType.PANORAMA,
  }
 }).then(
  function(result) {
    if (result) {
      console.log('Opened a meshviewer through the API', result);
    }
  }
).catch(
  function(reason) {
    console.log('Error opening meshviewer: ' + reason);
  }
)

removeOverlay

Remove a GeoJSON overlay from the panorama viewer

Parameters
layerId (string) Id of the layer. Use the id that was returned by addOverlay
Example
var layer = StreetSmartApi.addOverlay("My GeoJSON", {}, "EPSG:28992");
StreetSmartApi.removeOverlay(layer.id)

setActiveMeasurement

** EXPERIMENTAL ** Set the active measurement.

Parameters
geojson (any)
measurement (object) A Geojson FeatureCollection including a crs object. see http://geojson.org/geojson-spec#coordinate-reference-system-objects
Example

Set the active measurement data

var measurement = StreetSmartApi.getActiveMeasurement();

measurement.features[0].properties.id = 'changed_measurement'

StreetSmartApi.setActiveMeasurement(measurement);

measurement:
{
type: String,
 features: [
  geometry: Object,
  properties: Object,
  type: String,
 ],
 crs: Object,
}

example crs:
{
 type: 'name',
 properties: {
     name: 'EPSG:28992',
     }
 }

setOverlayDrawDistance

set de overlay draw distance in

Parameters
overlayDrawDistance (string)
Example
var layer = StreetSmartApi.addOverlay("My GeoJSON", {}, "EPSG:28992");
StreetSmartApi.setOverlayDrawDistance(50);

setSnapping

Sets whether or not cursor movements will snap to nearby features while in measurement mode

Parameters
enabled (boolean) Whether or not to enable or disable snapping

startMeasurementMode

Start measurement mode for the given panorama viewer.

Parameters
viewer (object) An instance of PanoramaViewer or ObliqueViewer
options (object?) Object containing measurement options.
Name Description
options.geometry MeasurementGeometryTypes? Bypasses the measurement mode dialog and starts measurement in the given mode.
options.measureMethod MeasureMethods? Starts the measurement with a specified measurement method. MeasureSmart, SmartClick or Forward Intersection. only applicable to panorama measurements.
options.showSaveMeasurementButton Boolean? Show the 'Save measurement' button during the measurement. note: With the button toggle: 'SAVE_MEASUREMENT' you can also enable the measurement button. You need this toggle if you want to start the measurement from the panorama viewer.
options.recordingServiceType RecordingServiceType? Type of recordings which will be used to perform measurements on. Defaults to RecordingSerivceType.DCR
Example

Start measurement mode without passing a geometry type. The user can then choose the measurement mode.

StreetSmartApi.startMeasurementMode(panoramaViewer);

Start measurement mode as point measurement

StreetSmartApi.startMeasurementMode(panoramaViewer, {geometry:StreetSmartApi.MeasurementGeometryType.POINT});

Start measurement mode as distance measurement

StreetSmartApi.startMeasurementMode(panoramaViewer, {geometry:StreetSmartApi.MeasurementGeometryType.LINESTRING});

Start measurement mode as surface measurement

StreetSmartApi.startMeasurementMode(panoramaViewer, {geometry:StreetSmartApi.MeasurementGeometryType.POLYGON});

Start measurement mode as surface measurement, with as measure method Smart Click

StreetSmartApi.startMeasurementMode(panoramaViewer, {geometry:StreetSmartApi.MeasurementGeometryType.POLYGON, measureMethod: StreetSmartApi.MeasureMethods.SMART_CLICK });

Start measurement mode as surface measurement, with the show measurement button visible

StreetSmartApi.startMeasurementMode(panoramaViewer, {geometry:StreetSmartApi.MeasurementGeometryType.POLYGON, showSaveMeasurementButton: true });

Show the 'Save measurement' button during a measurement. The measurement can be started from the panorama viewer.

StreetSmartApi.open('5D4KX5SM', {
 viewerType: [StreetSmartApi.ViewerType.PANORAMA],
 srs: 'EPSG:28992',
 replace: false,
}).then(
  function(result) {
    if (result && result[0]) {
      const viewer = result[0];
      viewer.toggleButtonEnabled(StreetSmartApi.PanoramaViewerUi.SAVE_MEASUREMENT);
    }
  }).catch(
   function(reason) {
     console.log('Error opening panorama viewer: ' + reason);
   }
 )

stopMeasurementMode

Stop measurement mode

Example

Stop measurement mode

StreetSmartApi.stopMeasurementMode();

Events

Object which contains event type constants for all components.

Static Members
measurement
meshViewer
obliqueViewer
panoramaViewer
pointcloudViewer

OAuth

Static Members
Initialization
Login-redirect
Logout
Logout-redirect

Settings

Object which is an Interface for changing certain settings withing the api

Properties
setUnitPreference (function) : sets the units used to show measurement and other geological data.
getUnitPreference (function) : gets the units used to show measurement and other geological data.
UNIT_PREFERENCE (Object) : Enum containing a list of available unit preferences
Static Members
getUnitPreference
setUnitPreference
SettingsUnitPrefs

ShortCuts

Object which is an Interface for enabeling/disabeling shortcuts

Properties
enableShortcut (function) : enables the usage of a shortcut within the api.
disableShortcut (function) : disables the usage of a shortcut within the api.
ShortcutNames (Object) : Object containing a list of available shortcut names
Static Members
disableShortcut
enableShortcut
ShortcutNames

BackGround

Defines the Background

Type: Object

Properties
SKYBOX (string) : 'Skybox'
DARKBLUE (string) : 'DarkBlue'
LIGHTBLUE (string) : 'LightBlue'
BLACK (string) : 'Black'
DARKGRAY (string) : 'DarkGray'
GRAY (string) : 'Gray'
LIGHTGRAY (string) : 'LightGray'
WHITE (string) : 'White'

ColorizationMode

Defines the PointStyles

Type: Object

Properties
RGB (string) : 'RGB'
HEIGHT (string) : 'Height'
INTENSITY (string) : 'Intensity'
CLASSIFICATION (string) : 'Classification' (for aerial only)

Coordinate

Coordinate definition

Type: Array<Number>

Parameters
$0 (number) X value of the coordinate
$1 (number) Y value of the coordinate
$2 (number?) Z value of the coordinate

Layer

Type: Object

Properties
id (string) : id of the layer.
visible (boolean) : visibility to toggle to.
name (string?) : optional: name of the layer.

MeasurementGeometryTypes

Measurement Geometry types

Type: object

Parameters
POINT (string) Point
LINESTRING (string) LineString
POLYGON (string) Polygon
ORTHOGONAL (string) Orthogonal
HEIGHT (string) Height

MeshViewerOptions

Definition of options for (3DNL) Meshviewer

Type: Object

Properties
fromViewer (ViewerType) : determines how the camera is set (e.g. OBLIQUE -> bird's view, PANORAMA -> streetview, etc.)

ObliqueViewerOptions

Definition of options for ObliqueViewer

Type: Object

Properties
closable (boolean) : Show window close button. Default is true.
maximizable (boolean) : Show window maximize button. Default is true.
timeTravelVisible (boolean) : Enable viewing earlier oblique images.
navbarVisible (boolean) : Show viewer navigation bar.
sidebarVisible (boolean) : Show viewer navigation bar.

ObliqueViewerUi

Definition of oblique viewer UI elements

Type: Object

Properties
buttons (Object) : Buttons
  • buttons.OVERLAYS string

    Button for opening overlaypanel

  • buttons.CENTER_MAP string

    Button center map on current oblique location

  • buttons.IMAGE_INFORMATION string

    Button open image information panel

  • buttons.SWITCH_DIRECTION string

    Buttons for switching viewing direction

  • buttons.SAVE_IMAGE string

    Button for saving image

  • buttons.TOGGLE_NADIR string

    Button for toggling between Oblique and Nadir images

TIME_TRAVEL (string) : timetravel UI elements
NAVBAR (string) : toolbar
SAVE_MEASUREMENT (string) : Button in the measurement panel, for saving the oblique measurement

PanoramaViewerOptions

Definition of options for PanoramaViewer

Type: Object

Properties
closable (boolean) : Show window close button. Default is true.
maximizable (boolean) : Show window maximize button. Default is true.
replace (boolean) : Replace already opened panorama viewer.
recordingsVisible (boolean) : Show recording dots.
timeTravelVisible (boolean) : Enable viewing earlier recordings.
navbarVisible (boolean) : Show viewer navigation bar.
sidebarVisible (boolean) : Show viewer navigation bar.
measureTypeButtonVisible (boolean) : Show measurement type button in measurement the navigation bar. Default is true.
measureTypeButtonToggle (boolean) : Allow toggle of measurement type in measurement the navigation bar. Default is true.
measureTypeButtonStart (boolean) : Start new measurement when clicking on measurement type button in measurement the navigation bar. Default is true.

PanoramaViewerUi

Definition of panorama viewer UI elements

Type: object

Properties
buttons (string) : Buttons
  • buttons.ELEVATION string

    Button open elevation panel

  • buttons.OVERLAYS string

    Button open overlay panel

  • buttons.OPEN_OBLIQUE string

    Button open oblique on current panorama location

  • buttons.OPEN_POINTCLOUD string

    Button open point cloud on current panorama location

  • buttons.REPORT_BLURRING string

    Button report blurring issue

  • buttons.MEASURE string

    Button for measuring

  • buttons.IMAGE_INFORMATION string

    Button open image information panel

  • buttons.SAVE_IMAGE string

    Button for saving image

TIME_TRAVEL (string) : timetravel UI elements
NAVBAR (string) : toolbar
RECORDINGS (string) : recording dots
MEASUREMENTS (string) : measurements
ADDRESSES (string) : addresses
SEARCHLOCATION (string) : search location
SAVE_MEASUREMENT (string) : Button in the measurement panel, for saving the panorama measurement

PointCloudViewerUi

Definition of pointcloud viewer UI elements

Type: Object

Properties
buttons (Object) : Buttons
  • buttons.OVERLAYS string

    Button open overlay panel

  • buttons.DISPLAY string

    Button open display panel

NAVBAR (string) : toolbar
SAVE_MEASUREMENT (string) : Button in the measurement panel, for saving the point cloud measurement

PointSize

Defines the pointSize

Type: Object

Properties
SINGLE (string) : 'single'
DOUBLE (string) : 'double'
LARGE (string) : 'large'

PointcloudViewerOptions

Definition of options for Point cloud viewer

Type: Object

Properties
pointCloudType (PointCloudType) : type point cloud to open.

Quality

Defines the point amount

Type: Object

Properties
LOW (string) : 'low'
MEDIUM (string) : 'medium'
HIGH (string) : 'high'
ULTRA (string) : 'ultra'

RGBA

Array of length four with four elements. r, g, b, a, respectively.

Type: Array

Properties
$0 (number) : Value of Red in rgba, between 0 and 255
$1 (number) : Value of Green in rgba, between 0 and 255
$2 (number) : Value of Blue in rgba, between 0 and 255
$3 (number) : Value of Alpha in rgba, between 0 and 1

credentials

Type: Object

Properties
username (string) : Username user to access the layer.
password (string) : Password user to access the layer.