# Changelog

## Introduction <a href="#introduction" id="introduction"></a>

JMap Cloud NG is a fork of the first generation of JMap NG that was the official JMap Server/JMap Cloud web client up until JMap Server Kathmandu.

JMap Cloud NG is the official NG Client for JMap Cloud. JMap Cloud NG is **only** compatible with JMap Cloud. All JMap Server specific capabilities of JMap Cloud NG have been removed after the fork from JMap NG (first generation).

### v1.0.44 (2024-07-02) <a href="#v1.0.18-2024-03-18" id="v1.0.18-2024-03-18"></a>

#### Features and improvements ✨ <a href="#features-and-improvements" id="features-and-improvements"></a>

* Allow creating Thematics on-the-fly. It is now possible to add a custom Style Rule (Thematic) to an existing layer in NG for JMap Cloud. A detailed example is available [here](https://k2geospatial.github.io/jmapcloud-ng-types/latest/functions/JMap.Layer.Thematic.addThematic.html). This thematic is only available during the current session, it is not persisted.
  * Mew API methods:
    * &#x20;`JMap.Layer.Thematic.addThematic(params)`
    * `JMap.Layer.Thematic.deleteThematic(layerId, thematicId)` (delete any thematic, client-side, for the current session only)
* `JMap.Map.resetSelectionStyle()` , a new API method to reset the selection style of a layer that was previously modified with `JMap.Map.setSelectionStyle()`&#x20;
* New options for API method `JMap.Application.Print.takeCapture` : &#x20;
  * `(... ,customRatioWidth, customRatioHeight)`  lets specify a custom aspect ratio for the generated image

#### Bug fixes 🐞 <a href="#bug-fixes" id="bug-fixes"></a>

* Measurements panel; error when selecting Nautical Miles as the unit for an area measure
* Fix several problems with dynamic filters when working with Date or DateTime attributes

### v1.0.37 (2024-06-17) <a href="#v1.0.18-2024-03-18" id="v1.0.18-2024-03-18"></a>

#### Features and improvements ✨ <a href="#features-and-improvements" id="features-and-improvements"></a>

* Support snapping on layer elements in all draw environments (feature creation, measures, annotations)
  * New API methods:
    * `JMap.Feature.getByLayerId(layerId, bbox)` (retrieves features from a layer)
    * `JMap.Application.Annotation.setSnapEnabled(enabled)`
    * `JMap.Application.Annotation.setSnapLayerId(layerId)`
    * `JMap.Application.Geometry.setSnapEnabled(enabled)`
    * `JMap.Application.Geometry.setSnapLayerId(layerId)`
    * `JMap.Application.Measure.setSnapEnabled(enabled)`
    * `JMap.Application.Measure.setSnapLayerId(layerId)`
* make `JMap.Application.Print.takeCapture` return a data URL instead of triggering a browser download
  * modified API method: `JMap.Application.Print.takeCapture(returnAsDataUrl)`
* Added the `JMap.Map.setSelectionStyle()` method to set the selection style of a layer. Allows developer to change the selection style of a layer see [this page](https://k2geospatial.github.io/jmapcloud-ng-types/latest/functions/JMap.Map.setSelectionStyle.html) for details

#### Bug fixes 🐞 <a href="#bug-fixes" id="bug-fixes"></a>

* fix problem when calling `JMap.Feature.getByIds` with too many IDs
* fix problem when calling `JMap.Layer.Search.byAttribute` with too many attribute values
* Unable to use ''Ctrl+V'' with a numeric value in a dynamic filter on a layer
* `ngExtent` url startup param is not working anymore
* Measure panel doesn't scroll
* fix marker registration when creating a new point feature in geometry creation panel
* `JMap.Layer.attributeExists()` does not work
* Export selection as Excel file is broken
* Layer names in selection panel are visible when they overflow the panel's width
* "Recenter the Map" widget does not work properly
* The last character of the result of the substring function is missing in the mouseover.

#### Breaking changes ![:warning:](https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/standard/caa27a19-fc09-4452-b2b4-a301552fd69c/32x32/26a0.png) <a href="#breaking-changes" id="breaking-changes"></a>

* New CRS support refactoring:
  * Modified API methods:
    * `JMap.Projection.reprojectLocation()` is now asynchronous
    * `JMap.Projection.reprojectBoundaryBox()` is now asynchronous
  * Removed API methods:
    * `JMap.Map.isLayerRendered()` has been removed
    * `JMap.Map.getLayersVisibilityStatus()` has been removed
    * `JMap.Map.getLayersVisibilityStatusAsArray()` has been removed
    * `JMap.Map.getRenderedJMapLayerIds()` has been removed

### v1.0.18 (2024-03-18) <a href="#v1.0.18-2024-03-18" id="v1.0.18-2024-03-18"></a>

#### Features and improvements ✨ <a href="#features-and-improvements" id="features-and-improvements"></a>

* Improve mouseover display
* Add support for JMap Cloud Simple Search feature
  * JMap Cloud now supports a global search mechanism for finding information in any indexed patial data sources or in a whole project through all its indexed spatial data sources (`/rest/v1/organizations/{organization}/spatialdatasources/{spatialdatasource}/search` and `/rest/v1/organizations/{organization}/projects/{project}/search`)
  * Added API methods:
    * `JMap.SimpleSearch.setQueryString(queryString: string)`
    * `JMap.SimpleSearch.getMinimumQueryStringLength()`
    * `JMap.SimpleSearch.getInvalidQueryStringCharacters()`
  * New API events:
    * `JMap.Event.SimpleSearch.on.success`
    * `JMap.Event.SimpleSearch.on.error`
* Add support for 3D DEM
  * When opening a project that has an associated DEM file, the DEM is displayed on the map
  * New API methods:
    * `JMap.Map.isTerrainAvailable()`
    * `JMap.Map.isTerrainActive()`
    * `JMap.Map.setTerrainActive(active:boolean)`
* let the user choose between EPSG:4326 (Lat-Lon) and the project’s CRS for the mapInfo widget coordinates

#### Bug fixes 🐞 <a href="#bug-fixes" id="bug-fixes"></a>

* Error calculating extent for a WMTS service
* Mouseover horizontal scrollbar appears for nothing
* Modify UI to ask for current password when changing password
* Login page, problem entering Username and Password fields
* Problem downloading map captures from the Exportation / Print Tool section (with MapLibre)
* An hyperlink in an attribute doesn’t work in the mouseover
* JMap.Feature.getByIds() method doesn’t display retrieved features on the map
* Unable to sort columns in attribute table for selected features
* Problems interpreting dates in string (ISO)
* Removed Thematic Legend Title and Legend Subtitle from UI
* Open JMap Cloud NG with an URL using `ngSearch` query param does not work

#### Breaking changes ![:warning:](https://pf-emoji-service--cdn.us-east-1.prod.public.atl-paas.net/standard/caa27a19-fc09-4452-b2b4-a301552fd69c/32x32/26a0.png) <a href="#breaking-changes" id="breaking-changes"></a>

* Removed conditional logic in JMap Cloud NG for switching between JMap Cloud and JMap Server
  * Removed API methods:
    * `JMap.Server.getType()`
    * `JMap.Server.isSaas()`
    * `JMap.Server.isLegacy()`
    * `JMap.Server.getMinimumVersion()`
  * Modified API methods:
    * `JMap.Feature.deleteByIds()` now returns a `Promise<JId>` instead of a `Promise<GeoJSON.Feature>`
  * removed/renamed/modified types/enums/interfaces:
    * removed `JSERVER_TYPES`
    * renamed `JSERVER_SAAS_STATUS` to `JSERVER_STATUS`
    * renamed `JServerSaasService` to `JServerService`
    * renamed `JServerSaasServiceById` to `JServerServiceById`
    * `JJMapCloudPasswordPolicyCompliance`
    * removed `JMinimumServerVersion`
    * removed `title` and `subTitle` from `JLayerThematic`
    * `JJMapCloudPasswordPolicyCompliance` renamed to `JJMapPasswordPolicyCompliance`
    * removed `refreshToken` from `JTokenInfo`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.jmapcloud.io/en/jmap-ng/jmap-ng-developer-documentation/changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
