Version: 2025.3.1

Geographic Locations

Overview

inPoint.Web supports Geographic locations (as WGS84 like GPS systems) as properties to any Folder and/or Document. It also includes extensive tools to query and render the locations on a Map.

Location types

Any inPoint Field can be defined as a Geographic field (of type Text), either as:

  • a Point: exact coordinates e.g. "latitude,longitude" (comma separated)
  • an Area: a list of coordinates "latitude,longitude;latitude,longitude;latitude,longitude"... (note the maximum Text length of 2000 characters)
  • a Raster: pixel reference on a raster image, e.g. "rasterid:x,y"

Configuration

The default Map Provider leaflet-osm (open-source), using maps from OpenStreetMap; that is fine for short-time testing, BUT:
PLEASE DO NOT USE FOR PRODUCTION USE

  • instead talk to the customer to use MapBox or any other supported service.

Each Geo feature can be disabled or even use a different Map Provider.

For a full list of available options please see the Geo Configuration section.

Map Providers

The actual Maps are implemented as external providers called Map Providers (available under the /__map subfolder); inPoint.Web comes pre-packed with support for the following providers:

  • Google Maps (fully implemented - required Google API Key)
  • Leaflet (open-source fully implemented) using OpenStreetMaps
  • Bing Maps (requires Bing API Key)
  • OpenLayer (open-source with minimal implementation)

For Raster maps only one implementation is currently available:

  • Leaflet-raster

SDK

Any custom provider can be added as long as it conforms to the following interface (i.e. must implement following methods):

setCenterMarker((location: Location));
showLocations(
(locations: Array<MapLocationInfo>),
(useCenterMarker: boolean),
(callback: (location: Location) => void)
);
showMoreLocations((locations: Array<MapLocationInfo>));
searchRadius(
(location: searchRadius),
(radius: number),
(callback: (location: Location) => void)
);

Location is a Javascript object defined as:

  • latitude: number
  • longitude: number

MapLocationInfo is a Javascript object defined as:

  • latitude: number
  • longitude: number
  • label: string
  • icon?: string
  • area?: Array<Location>
  • allowEdit?: boolean

Custom Marker

img

For all geographic points custom markers, based on other field values, can be configured in the defaults section.

Attention: Configuration was moved in 2020.1 from Geo > Map > Markers to Defaults > VisualRules, to allow folder based configurations.

Example:

"defaults": [{
"visualRules": [{
"targetNames": ["location"],
"markerImage": "../lib/marker-{Status}.svg",
"markerAnchor": [25, 63],
"markerSize": [50, 78],
"rules": [{
"filters": [{ "name": "status", "value": "WIP" }],
"markerImage": "../lib/wip-{Type}.png"
}]
}]
}]

Raster Maps

Configure Raster per folder

In order for the Raster maps to work, inPoint.Web must be notified of where to find the Raster layers mappings - you can do that by using the General/Defaults/map configuration (e.g. for a specific FormatId) and setting the map options.

Sample:

{
"formatIds": [112136],

"map": {
"name": "leaflet-raster",
"isRaster": true,
"rasterMapIdSelector": "{itemUri}",
"onClick": {
"confirm": false,
"locationTargetFieldName": "GEORASTER_FIELD",
"commandAction": {
"name": "itemFlows",
"props": {
"direction": "in"
}
}
}
}
}

Manually install converter

We use GDAL for the Raster conversion and a customized script for the tiles split. You can find a GDAL.ZIP file in the installation directory, unzip it to your C:\Program Files\ and it should look like this:

  • C:\Program Files\GDAL
  • C:\Program Files\GDAL2TILES

NOTE: this is currently a manual step - we are evaluating options on integrating this directly into inPoint.Web.

appsettings.rastermaps.json

File holding all raster maps configurations (will be automatically managed but can also be manually adjusted).

raster_manage CommandAction

Add this CommandAction to whichever folder you wish to configure it's Raster Layers; by default only Admins will see/be able to use it.

{
"id": "rasterManage",
"name": "Manage Raster Layers",
"shouldBeVisible": [ "isFolder", "isAdmin" ],
"commandAction": {
"name": "raster_manage"
}
},