From e7fd26528d08d43cbd072bd9e7e47b43d8c55742 Mon Sep 17 00:00:00 2001 From: ludoholic Date: Tue, 20 Aug 2024 11:10:26 +0000 Subject: [PATCH] deploy: 722a4995722caf869e02d61d8749277bf59cdeec --- docs/afm/client-afm.html | 12 +++--- docs/afm/core.html | 38 +++++++++--------- docs/afm/plugin-address-search.html | 40 +++++++++---------- docs/afm/plugin-attributions.html | 10 ++--- docs/afm/plugin-draw.html | 26 ++++++------ docs/afm/plugin-export.html | 12 +++--- docs/afm/plugin-gfi.html | 20 +++++----- docs/afm/plugin-icon-menu.html | 8 ++-- docs/afm/plugin-layer-chooser.html | 10 ++--- docs/afm/plugin-legend.html | 4 +- docs/afm/plugin-loading-indicator.html | 12 +++--- docs/afm/plugin-pins.html | 18 ++++----- docs/afm/plugin-scale.html | 8 ++-- docs/afm/plugin-toast.html | 18 ++++----- docs/afm/plugin-zoom.html | 14 +++---- docs/generic/client-generic.html | 6 +-- docs/generic/core.html | 38 +++++++++--------- docs/generic/lib-custom-types.html | 2 +- docs/generic/plugin-address-search.html | 40 +++++++++---------- docs/generic/plugin-attributions.html | 10 ++--- docs/generic/plugin-draw.html | 26 ++++++------ docs/generic/plugin-export.html | 12 +++--- docs/generic/plugin-filter.html | 20 +++++----- docs/generic/plugin-fullscreen.html | 12 +++--- docs/generic/plugin-geo-location.html | 14 +++---- docs/generic/plugin-gfi.html | 20 +++++----- docs/generic/plugin-icon-menu.html | 8 ++-- docs/generic/plugin-layer-chooser.html | 10 ++--- docs/generic/plugin-legend.html | 4 +- docs/generic/plugin-loading-indicator.html | 12 +++--- docs/generic/plugin-pins.html | 18 ++++----- docs/generic/plugin-reverse-geocoder.html | 12 +++--- docs/generic/plugin-scale.html | 8 ++-- docs/generic/plugin-toast.html | 18 ++++----- docs/generic/plugin-zoom.html | 14 +++---- docs/meldemichel/client-meldemichel.html | 10 ++--- docs/meldemichel/core.html | 38 +++++++++--------- docs/meldemichel/lib-custom-types.html | 2 +- docs/meldemichel/lib-invisible-style.html | 2 +- docs/meldemichel/plugin-address-search.html | 40 +++++++++---------- docs/meldemichel/plugin-attributions.html | 10 ++--- docs/meldemichel/plugin-filter.html | 20 +++++----- docs/meldemichel/plugin-fullscreen.html | 12 +++--- docs/meldemichel/plugin-geo-location.html | 14 +++---- docs/meldemichel/plugin-gfi.html | 20 +++++----- docs/meldemichel/plugin-icon-menu.html | 8 ++-- docs/meldemichel/plugin-layer-chooser.html | 10 ++--- .../meldemichel/plugin-loading-indicator.html | 12 +++--- docs/meldemichel/plugin-pins.html | 18 ++++----- docs/meldemichel/plugin-reverse-geocoder.html | 12 +++--- docs/meldemichel/plugin-scale.html | 8 ++-- docs/meldemichel/plugin-toast.html | 18 ++++----- docs/meldemichel/plugin-zoom.html | 14 +++---- docs/snowbox/client-snowbox.html | 2 +- docs/snowbox/core.html | 38 +++++++++--------- docs/snowbox/lib-custom-types.html | 2 +- docs/snowbox/plugin-address-search.html | 40 +++++++++---------- docs/snowbox/plugin-attributions.html | 10 ++--- docs/snowbox/plugin-draw.html | 26 ++++++------ docs/snowbox/plugin-export.html | 12 +++--- docs/snowbox/plugin-fullscreen.html | 12 +++--- docs/snowbox/plugin-geo-location.html | 14 +++---- docs/snowbox/plugin-gfi.html | 20 +++++----- docs/snowbox/plugin-icon-menu.html | 8 ++-- docs/snowbox/plugin-layer-chooser.html | 10 ++--- docs/snowbox/plugin-legend.html | 4 +- docs/snowbox/plugin-loading-indicator.html | 12 +++--- docs/snowbox/plugin-pins.html | 18 ++++----- docs/snowbox/plugin-reverse-geocoder.html | 12 +++--- docs/snowbox/plugin-scale.html | 8 ++-- docs/snowbox/plugin-toast.html | 18 ++++----- docs/snowbox/plugin-zoom.html | 14 +++---- docs/textLocator/client-textLocator.html | 2 +- docs/textLocator/core.html | 38 +++++++++--------- docs/textLocator/lib-custom-types.html | 2 +- docs/textLocator/lib-tooltip.html | 2 +- docs/textLocator/plugin-address-search.html | 40 +++++++++---------- docs/textLocator/plugin-attributions.html | 10 ++--- docs/textLocator/plugin-draw.html | 26 ++++++------ docs/textLocator/plugin-icon-menu.html | 8 ++-- docs/textLocator/plugin-layer-chooser.html | 10 ++--- docs/textLocator/plugin-legend.html | 4 +- .../textLocator/plugin-loading-indicator.html | 12 +++--- docs/textLocator/plugin-scale.html | 8 ++-- docs/textLocator/plugin-toast.html | 18 ++++----- docs/textLocator/plugin-zoom.html | 14 +++---- .../node_modules/@polar/core/README.md | 2 +- 87 files changed, 649 insertions(+), 649 deletions(-) diff --git a/docs/afm/client-afm.html b/docs/afm/client-afm.html index 7213f453d..da95ac833 100644 --- a/docs/afm/client-afm.html +++ b/docs/afm/client-afm.html @@ -22,21 +22,21 @@
-

POLAR AfM map client

+

POLAR AfM map client

This is a default compilation of POLAR feature packages for online services. This document and its child documents describe the setup.

-

Requirements

+

Requirements

To understand this document, programming knowledge (preferably in JavaScript) are required. This is a technical document describing how to integrate the map client with its programmatic API.

-

Versioning

+

Versioning

The map client honors SemVer versioning. Breaking Changes without a change in leading version number are bugs.

-

Library integration

+

Library integration

You may either use the AfM client with import syntax or via HTML tags. In the following, the integration via HTML is shown.

<script src="<Path>/dist/polar-client.js"></script>
 

The global variable MapClient is now available. All other files in the dist folder are pulled on demand by relative pathing.

-

Configuration and creation

+

Configuration and creation

The map client can be controlled with a configuration object. An example file is supplied in the folder example. This file can be used as base for your own configuration.

-

Programmatic integration

+

Programmatic integration

The following is an abstract example.

In your HTML, a div with unique ID is required that holds the following style properties. Width and height can be changed as you need, but are required to be defined.

<div
diff --git a/docs/afm/core.html b/docs/afm/core.html
index 30ed9bbdf..aa70cc755 100644
--- a/docs/afm/core.html
+++ b/docs/afm/core.html
@@ -22,8 +22,8 @@
 
 
   
-

Core

-

Scope

+

Core

+

Scope

The client's core is the base package to create clients in the POLAR environment.

It offers this functionality:

    @@ -31,15 +31,15 @@

    Scope

  • @masterportal/masterportalapi functionality
  • Localization mechanism
-

Interaction

+

Interaction

If a client is rendered as part of another page, the zoom and drag-pan behaviour is different to if the client is rendered as complete page.
If it's part of another page, drag-panning on mobile devices is only usable if at least two fingers are being used while on desktop clients the user can only zoom if using the respective platform modifier key (e.g. CTRL).

It is important to note that the behaviour will be desktop-like on larger touchscreen devices (e.g. tablets).

-

Initialization / Configuration

+

Initialization / Configuration

It depends on the client how exactly the initialization will take place for the embedding programmer. However, the core mechanism remains the same.

The exported default object is an extended masterportalAPI, adding the addPlugins and extending the createMap functions. For masterportalAPI details, see their repository.

To be able to see the map in production mode, the imported stylesheet has to have the property data-polar. The value can be chosen arbitrarily. ⚠️ Deprecated. The new field 'stylePath' should be used instead.

-

addPlugins

+

addPlugins

Before instantiating the map, all required plugins have to be added. Depending on how you use POLAR, this may already have been done. Ready-made clients (that is, packages prefixed @polar/client-) come with plugins prepared. You may add further plugins or proceed with createMap.

In case you're integrating new plugins, call addPlugins with an array of instances.

client.addPlugins([Plugin({ pluginConfig })])
@@ -55,7 +55,7 @@ 

addPlugins

})

If the storeModule features a setupModule action, it will be executed automatically after initialization.

-

createMap

+

createMap

The map is created by calling the createMap method. Depending on how you use POLAR, this may already have been done, as some clients come as ready-made standalone HTML pages that do this for you.

MapClient.createMap({
   // arbitrary id, must point to a div
@@ -66,7 +66,7 @@ 

createMap

/* Your Code, e.g. for setting up callbacks. */ })
-

mapConfiguration

+

mapConfiguration

The mapConfiguration allows controlling many client instance details.

@@ -124,7 +124,7 @@

mapConfiguration

-
mapConfiguration.LanguageOption
+
mapConfiguration.LanguageOption

A language option is an object consisting of a type (its language key) and the i18next resource definition. You may e.g. decide that the texts offered in the LayerChooser do not fit the style of your client, or that they could be more precise in your situation since you're only using very specific overlays.

An example for a LanguageOption array usable in createMap is this array:

const languageOptions: LanguageOption[] = [
@@ -151,7 +151,7 @@ 
mapConfiguration.LanguageOption
]

To figure out the name of the locales to override, inspect the matching plugin in GitHub's file browser. In packages/plugins, open the plugin you desire to override. Each plugin's src folder contains a language.ts listing all used locale keys with appropriate nesting.

-
mapConfiguration.extendedMasterportalapiMarkers
+
mapConfiguration.extendedMasterportalapiMarkers
@@ -193,7 +193,7 @@
mapConfiguration.extendedMasterportalapiMarkers
-
mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
+
mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
@@ -281,7 +281,7 @@
mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
-
mapConfiguration.LayerConf
+
mapConfiguration.LayerConf

The layer configuration (or: service register) is read by the masterportalAPI. The full definition can be read here.

However, not all listed services have been implemented in the masterportalAPI yet, and no documentation regarding implemented properties exists there yet.

Whitelisted and confirmed parameters include:

@@ -289,7 +289,7 @@
mapConfiguration.LayerConf
  • WMS: id, name, url, typ, format, version, transparent, layers, STYLES
  • WFS: id, name, url, typ, outputFormat, version, featureType
  • -
    Example services register
    +
    Example services register
    [
       {
         "id": "my-wfs-id",
    @@ -313,7 +313,7 @@ 
    Example services register
    ]

    Since this is the base for many functions, the service ID set in this is used to reference map material in many places of the map client.

    -
    <...masterportalAPI.fields>
    +
    <...masterportalAPI.fields>

    The <...masterportalAPI.fields> means that any masterportalAPI field may also be used here directly. The most common fields are the following ones; for more, see masterportalAPI.

    @@ -356,10 +356,10 @@
    <...masterportalAPI.fields>
    -
    <plugin.fields>
    -

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    +
    <plugin.fields>
    +

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    On how to configure a plugin, see the respective plugin. The configuration is given in the mapConfiguration object by the plugin's name as specified in its respective documentation.

    -
    Global Plugin Parameters
    +
    Global Plugin Parameters

    Most plugins honor this additional field.

    @@ -377,7 +377,7 @@
    Global Plugin Parameters
    -
    Example Configuration
    +
    Example Configuration

    For example, a @polar/plugin-address-search plugin can be configured like this:

    {
       addressSearch: {
    @@ -387,7 +387,7 @@ 
    Example Configuration
    } }
    -
    mapConfiguration.vuetify
    +
    mapConfiguration.vuetify

    These fields let you e.g. specify a Vuetify-Theme. For more options, refer to the official vuetify documentation.

    Additionally to the regular fields, primaryContrast and secondaryContrast are interpreted. They serve as contrast colors to their respective fields and are used for e.g. button icons.

    {
    @@ -403,7 +403,7 @@ 
    mapConfiguration.vuetify
    } }
    -

    Store

    +

    Store

    The core module features a vuex root store that all plugin vuex modules are plugged into. However, the root contents are only relevant to plugins. It is accessible with map.$store, and can be used as a starting point for plugin access.

    To ease use, the map instance also features a subscribe method that will register a watcher to any state field. Please mind that only documented paths should be used, and all others are subject to change without notice.

    // state subscription – listening to data held by the map client
    diff --git a/docs/afm/plugin-address-search.html b/docs/afm/plugin-address-search.html
    index 0a0b045fd..c247a447a 100644
    --- a/docs/afm/plugin-address-search.html
    +++ b/docs/afm/plugin-address-search.html
    @@ -22,8 +22,8 @@
     
     
       
    -

    AddressSearch

    -

    Scope

    +

    AddressSearch

    +

    Scope

    The AddressSearch plugin allows users to search for an address. If multiple addresses are returned by services, the user is prompted to select a result.

    The plugin saves the chosen information as GeoJSON to the store so that following procedures may grab it or so that other plugins may use it.

    Currently supported services:

    @@ -32,8 +32,8 @@

    Scope

  • WFS
  • Some gazetteers/WFS-G (please request a check or try yourself, not 100% done)
  • -

    Configuration

    -

    addressSearch

    +

    Configuration

    +

    addressSearch

    The configuration allows defining and grouping services. Grouped services can be requested in a search at the same time, and one group of searches can be active at a time. When multiple searches are in a group, they may be extended with category information to make the results easier to browse.

    It is advised to either use one-search-per-group or all services in a singular group to avoid an overly complex UI. Mixed configurations may be required for more complex search requirements.

    In categoryProperties and groupProperties, id strings called groupId and categoryId are used. These are arbitrary strings you can introduce and reuse to group or categorize elements together. Regarding what groups and categories are, see further below.

    @@ -104,7 +104,7 @@

    addressSearch

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    addressSearch.searchMethodsObject

    +

    addressSearch.searchMethodsObject

    @@ -156,7 +156,7 @@

    addressSearch.searchMethodsObject

    -

    addressSearch.customSearchMethod

    +

    addressSearch.customSearchMethod

    This is a function with the following signature:

    (
       // should be used to actually abort request
    @@ -170,7 +170,7 @@ 

    addressSearch.customSearchMethod

    ) => Promise<FeatureCollection> | never

    With this, arbitrary services can be supported.

    -

    addressSearch.customSelectFunction

    +

    addressSearch.customSelectFunction

    This is a function with the following signature:

    ({
       // VueX context object
    @@ -182,7 +182,7 @@ 

    addressSearch.customSelectFunction

    }) => void

    With this, arbitrary click results can be supported. Please mind that undocumented mutations and actions fired in such a function are subject to change without further notice.

    -

    addressSearch.groupProperties

    +

    addressSearch.groupProperties

    @@ -219,7 +219,7 @@

    addressSearch.groupProperties

    -

    addressSearch.categoryProperties

    +

    addressSearch.categoryProperties

    @@ -236,7 +236,7 @@

    addressSearch.categoryProperties

    -
    addressSearch.searchMethodsObject.queryParameters (type:common)
    +
    addressSearch.searchMethodsObject.queryParameters (type:common)

    These fields are interpreted by all implemented services.

    @@ -254,7 +254,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:common)
    -
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    +
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    @@ -317,7 +317,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
  • WFS 2.0.0 {wildCard: "%", singleChar: "*", escapeChar: "\"}
  • WFS 1.0.0 {wildCard: "*", singleChar: "*", escape: "\"}
  • -
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    +
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)

    ⚠️ "gazetteer" is deprecated. Please use "mpapi" instead.

    @@ -362,7 +362,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    -
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)
    +
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    Please mind that this requires a configured backend. A WFS's Stored Query is requested with predefined parameters using the masterportalApi. This implementation is meant for e.g. https://geodienste.hamburg.de/HH_WFS_GAGES, but works with other WFS configured in the same manner.

    @@ -408,14 +408,14 @@
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    While all fields are optional, configuring none of them will yield undefined behaviour. At least one search instruction should be set to true.

    -
    addressSearch.searchMethodsObject.queryParameters (type:bkg)
    +
    addressSearch.searchMethodsObject.queryParameters (type:bkg)

    In BKG mode, queryParameter's key-value pairs are used in the service query. E.g. {filter: { bundesland: 'Bremen' }} results in the GET request URL having &filter=bundesland:Bremen as suffix.

    For more options, please check the official documentation regarding what query parameters are interpreted.

    Additionally, it is possible to configure the parameters accesstoken (Authorization) or apiKey (custom header X-Api-Key) to send the described headers to the search service for authentication purposes. Note that this changes the request to be non-simple. To be able to use the parameters, the request has to be sent in cors mode and has to support preflight request OPTIONS.

    -

    Store

    -

    Mutations

    -

    setSelectedGroupName

    +

    Store

    +

    Mutations

    +

    setSelectedGroupName

    This can be used to change the selected search group by name.

    map.$store.commit(
       'plugin/addressSearch/setSelectedGroupName',
    @@ -423,8 +423,8 @@ 

    setSelectedGroupName

    )

    Please mind that programmatically changing the search group will not trigger a search, unlike a search group change by the user. If you need a search after change, consider the search action.

    -

    Actions

    -

    search

    +

    Actions

    +

    This is a purely programmatical search method. It is not used by user input.

    map.$store.dispatch('plugin/addressSearch/search', {
       input: 'Bahnhofsstraße 12',
    @@ -453,7 +453,7 @@ 

    search

    -

    State

    +

    State

    map.subscribe('plugin/addressSearch/chosenAddress', (chosenAddress) => {
       /* Your code. */
     })
    diff --git a/docs/afm/plugin-attributions.html b/docs/afm/plugin-attributions.html
    index 3e1b41457..6490147ee 100644
    --- a/docs/afm/plugin-attributions.html
    +++ b/docs/afm/plugin-attributions.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Attributions

    -

    Scope

    +

    Attributions

    +

    Scope

    This plugin shows attributions (that is, legal information) regarding copyrights and sources of the currently visible layers.

    -

    Configuration

    -

    attributions

    +

    Configuration

    +

    attributions

    All parameters are optional. However, setting neither layerAttributions nor staticAttributions results in an empty window.

    @@ -70,7 +70,7 @@

    attributions

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    attributions.layerAttribution

    +

    attributions.layerAttribution

    diff --git a/docs/afm/plugin-draw.html b/docs/afm/plugin-draw.html index 7772b9ae3..8fc489d78 100644 --- a/docs/afm/plugin-draw.html +++ b/docs/afm/plugin-draw.html @@ -22,8 +22,8 @@
    -

    Draw

    -

    Scope

    +

    Draw

    +

    Scope

    The draw plugin allows users to draw features on the map. Drawn features may be edited and deleted.

    Currently supported OpenLayers geometry types:

      @@ -33,15 +33,15 @@

      Scope

    • 'Polygon'

    Also, 'Text' is supported which is modeled as an OpenLayers 'Point'. This is no default feature, so it must be specified in the configuration to use it.

    -

    User instructions for Text Mode

    +

    User instructions for Text Mode

    The interaction with text features is not intuitive, which is why the text feature should come with instructions for the users:

    -

    Edit

    +

    Edit

    To edit the text or the placement of the text feature, the user must click on the center of the text to select the point geometry below it. After selecting it, the user can move the point by keeping the left mouse button pressed, or edit the text in the input field that opens with selecting the feature. If more than one text size is specified in the configuration, the user can change the text size with a slider.

    -

    Delete

    +

    Delete

    To delete the text, the user must either click on the point at the center of the text or use CTRL + left mouse button to open a box over all features that he or she wants to delete.

    -

    Configuration

    +

    Configuration

    The styling of the drawn features can be configured to overwrite the default ol-style. Configuration is oriented around the OpenLayers styles.

    -

    draw

    +

    draw

    @@ -69,7 +69,7 @@

    draw

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    draw.textStyle
    +
    draw.textStyle
    @@ -91,7 +91,7 @@
    draw.textStyle
    -
    draw.textStyle.font
    +
    draw.textStyle.font
    @@ -113,7 +113,7 @@
    draw.textStyle.font
    -

    draw.style (by example)

    +

    draw.style (by example)

    The @masterportal/masterportalapi has vectorStyles in development. As soon as that's done, we shall use its styling syntax and methods.

    For the time being, please use this example as a rough reference as to what can currently be done.

    {
    @@ -141,14 +141,14 @@ 

    draw.style (by example)

    } }
    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/draw/featureCollection', (featureCollection) => {
       /* Your code. */
     })
     

    The returned featureCollection is a GeoJSON FeatureCollection. It includes all drawn features and updates on changes.

    -

    Actions

    +

    Actions

    map.$store.dispatch('plugin/draw/addFeatures', {
       geoJSON: {
         type: 'FeatureCollection',
    diff --git a/docs/afm/plugin-export.html b/docs/afm/plugin-export.html
    index ed22888a4..8bb458cf0 100644
    --- a/docs/afm/plugin-export.html
    +++ b/docs/afm/plugin-export.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Export

    -

    Scope

    +

    Export

    +

    Scope

    The Export plugin offers users to download the currently visible map canvas in a variety of file formats and by a variety of methods.

    -

    Configuration

    -

    export

    +

    Configuration

    +

    export

    @@ -60,12 +60,12 @@

    export

    To remove user control, add displayComponent: false to the configuration and use the following interactions.

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Actions

    +

    Actions

    To programmatically trigger a "screenshot", use this action.

    // type is 'Png', 'Jpg', or 'Pdf'
     map.$store.dispatch('plugin/export/exportAs', type)
     
    -

    State

    +

    State

    This shows how a callback can be used to show the exported data in a suitable html element. The value of the screenshot variable is a base64-encoded string.

    const someElement = // ... however you retrieve your html element
       map.subscribe('plugin/export/exportedMap', (screenshot) =>
    diff --git a/docs/afm/plugin-gfi.html b/docs/afm/plugin-gfi.html
    index e86380765..79b334df8 100644
    --- a/docs/afm/plugin-gfi.html
    +++ b/docs/afm/plugin-gfi.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    GFI

    -

    Scope

    +

    GFI

    +

    Scope

    The GFI plugin can be used to fetch and optionally display GFI (GetFeatureInfo) from WMS and WFS services as well as layers based on GeoJSON files. In a first step, the information is stored in the VueX store to allow for easy access. Display is optional and quite obstructive within the map client.

    ⚠️ The display feature is currently not meant for production. Please use data bindings for display to avoid obstructing the map client.

    -

    Configuration

    -

    gfi

    +

    Configuration

    +

    gfi

    @@ -92,7 +92,7 @@

    gfi

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    gfi.gfiLayerConfiguration
    +
    gfi.gfiLayerConfiguration
    @@ -156,7 +156,7 @@
    gfi.gfiLayerConfiguration
    -
    gfi.customHighlightStyle
    +
    gfi.customHighlightStyle
    @@ -178,7 +178,7 @@
    gfi.customHighlightStyle
    -
    gfi.featureList
    +
    gfi.featureList
    @@ -210,7 +210,7 @@
    gfi.featureList
    -

    Example configuration

    +

    Example configuration

    layers: {
       [serviceId]: {
         geometry: true,
    @@ -235,8 +235,8 @@ 

    Example configuration

    }, },
    -

    Store

    -

    State

    +

    Store

    +

    State

    If a successful query has been sent and a response has been received, the result will be saved in the store and can be subscribed through the path 'plugin/gfi/featureInformation'. If, however, a query for a layer fails, a Symbol containing the error will be saved in the store instead to indicate the error.

    The exact value of featureInformation may vary wildly depending on the service used, but is always given as json representation here.

    map.subscribe('plugin/gfi/featureInformation', (featureInformation) => {
    diff --git a/docs/afm/plugin-icon-menu.html b/docs/afm/plugin-icon-menu.html
    index 81eabdbd4..7e69484f9 100644
    --- a/docs/afm/plugin-icon-menu.html
    +++ b/docs/afm/plugin-icon-menu.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    IconMenu

    +

    IconMenu

    The IconMenu offers an icon-button based menu to open various functionality as cards. This way, obstructive UI can be hidden until the user desires to open it. Please use carefully – users may have issues finding process-relevant buttons/interactions if you hide them here.
    Currently, the IconMenu should only be rendered with layoutTag set to NineLayoutTag.TOP_RIGHT.

    -

    Scope

    +

    Scope

    It is meant for additional information/functionality (legend, other layers) or power users in non-public clients.

    Please note that the average user has never seen the client before and just wants to get done with it, not learn a map client.

    -

    Configuration

    +

    Configuration

    ⚠️ This plugin can't be configured with the mapConfiguration, but is configured during client construction. Currently, no way exists to add plugins to it after the build took place.

    @@ -60,7 +60,7 @@

    Configuration

    ], }
    -

    menus

    +

    When landscape mode is active the IconMenu is oriented horizontally. Currently, the IconMenu works fine only if there is not more than one row of Icons in landscape mode.

    diff --git a/docs/afm/plugin-layer-chooser.html b/docs/afm/plugin-layer-chooser.html index 9aa84a2d3..3709de5e4 100644 --- a/docs/afm/plugin-layer-chooser.html +++ b/docs/afm/plugin-layer-chooser.html @@ -22,12 +22,12 @@
    -

    LayerChooser

    +

    LayerChooser

    The tool offers layer selection to the user.

    -

    Scope

    +

    Scope

    The LayerChooser offers an additive (usually Overlays, technically named with type: 'mask') and an exclusive (usually background maps, type: 'background') selection of layers to the users.

    Order of layers within a layer is currently always as initially configured.

    -

    Configuration

    +

    Configuration

    The tool does not require any configuration for itself, but is based on the mapConfiguration.layers array. It will infer its options from there, and change layer visibility and availability depending on minZoom and maxZoom.

    Each object in mapConfiguration.layers array fits this definition:

    @@ -82,7 +82,7 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    mapConfiguration.layers.options

    +

    mapConfiguration.layers.options

    An option wheel will appear in the layer chooser that allows opening a sub-menu with configured configuration options for the end user.

    @@ -100,7 +100,7 @@

    mapConfiguration.layers.options

    -

    mapConfiguration.layers.options.layers

    +

    mapConfiguration.layers.options.layers

    This field is named like this to match the OGC specification for their name; that is, layers have layers that may have layers that may have layers, and so on. However, only the first level (a layer's layers) is currently implemented.

    diff --git a/docs/afm/plugin-legend.html b/docs/afm/plugin-legend.html index f21114f33..3789318d3 100644 --- a/docs/afm/plugin-legend.html +++ b/docs/afm/plugin-legend.html @@ -22,9 +22,9 @@
    -

    Legend

    +

    Legend

    The Legend module offers legend images as supplied by OGC services.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    diff --git a/docs/afm/plugin-loading-indicator.html b/docs/afm/plugin-loading-indicator.html index 7d51f3256..f86342668 100644 --- a/docs/afm/plugin-loading-indicator.html +++ b/docs/afm/plugin-loading-indicator.html @@ -22,13 +22,13 @@
    -

    LoadingIndicator

    -

    Scope

    +

    LoadingIndicator

    +

    Scope

    A generic loading indicator that may be used by any plugin or outside procedure to indicate loading.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    Mutations

    +

    Store

    +

    Mutations

    // show loading indicator
     map.$store.commit('plugin/loadingIndicator/addLoadingKey', key)
     // hide loading indicator
    @@ -37,7 +37,7 @@ 

    Mutations

    Loading indicator example

    The key must be unique and is kept track of via a Set. It can't be added multiple times, and removing it once always removes it altogether. It is advised to use a key like {my-plugin-or-application-name}-{procedure-name} to avoid name conflicts. The LoadingIndicator will usually be used for asynchronous code.

    As such, always call removeLoadingKey in the finally section of your code to prevent hanging loading indicators.

    -

    Getters

    +

    Getters

    You may desire to listen to whether the loader is currently being shown.

    diff --git a/docs/afm/plugin-pins.html b/docs/afm/plugin-pins.html index 1985b16de..2c36045af 100644 --- a/docs/afm/plugin-pins.html +++ b/docs/afm/plugin-pins.html @@ -22,12 +22,12 @@
    -

    Pins

    -

    Scope

    +

    Pins

    +

    Scope

    The pins plugin handles marking locations. Embedding processes can then use that coordinate for further steps. The plugin may react to other plugins, especially address searches.

    -

    Configuration

    +

    Configuration

    The usage of displayComponent has no influence on the creation of Pins on the Map if this plugin is being used.

    -

    pins

    +

    pins

    @@ -84,7 +84,7 @@

    pins

    -

    pins.appearOnClick

    +

    pins.appearOnClick

    @@ -106,7 +106,7 @@

    pins.appearOnClick

    -

    pins.initial

    +

    pins.initial

    @@ -133,7 +133,7 @@

    pins.initial

    -

    pins.style

    +

    pins.style

    @@ -155,8 +155,8 @@

    pins.style

    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/pins/transformedCoordinate', (pinCoordinate) => {
       /* Your Code. */
     })
    diff --git a/docs/afm/plugin-scale.html b/docs/afm/plugin-scale.html
    index a0ce3dad2..28eaeeea7 100644
    --- a/docs/afm/plugin-scale.html
    +++ b/docs/afm/plugin-scale.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    Scale

    +

    Scale

    ⚠ The Scale plugin is currently meant for passive usage only. It's API has not yet been finally defined, and is subject to change without further notice.

    -

    Scope

    +

    Scope

    The scale plugin shows the current map resolution as relative scale (1:x) and/or absolute scale (a drawn line has length x units).

    -

    Configuration

    -

    scale

    +

    Configuration

    +

    scale

    diff --git a/docs/afm/plugin-toast.html b/docs/afm/plugin-toast.html index b552a70c4..05b3dfff4 100644 --- a/docs/afm/plugin-toast.html +++ b/docs/afm/plugin-toast.html @@ -22,12 +22,12 @@
    -

    Toast

    -

    Scope

    +

    Toast

    +

    Scope

    The toast plugin offers global functionality to display text messages to the user. These are the classic success, warning, info, and error messages, helping to understand what's going on or why something happened.

    -

    Configuration

    +

    Configuration

    Please check the vuetify documentation to override the success, warning, info, or errors colors in general. To affect only this plugin, the following configuration parameters can be added to either the plugin instantiation or the mapConfiguration:

    -

    toast

    +

    toast

    @@ -60,7 +60,7 @@

    toast

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    toast.toastStyle

    +

    toast.toastStyle

    @@ -82,12 +82,12 @@

    toast.toastStyle

    -

    Store

    -

    Actions

    +

    Store

    +

    Actions

    New entries are made via action. They are either dismissed after a timeout or by user interaction.

    map.$store.dispatch('plugin/toast/addToast', payload)
     
    -

    Payload structure

    +

    Payload structure

    @@ -124,7 +124,7 @@

    Payload structure

    -

    Usage example

    +

    Usage example

    map.$store.dispatch('plugin/toast/addToast', {
       type: 'warning',
       text: 'Wrong hammer for screw.',
    diff --git a/docs/afm/plugin-zoom.html b/docs/afm/plugin-zoom.html
    index 7c39c3d72..e8bc270a5 100644
    --- a/docs/afm/plugin-zoom.html
    +++ b/docs/afm/plugin-zoom.html
    @@ -22,10 +22,10 @@
     
     
       
    -

    Zoom

    -

    Scope

    +

    Zoom

    +

    Scope

    The Zoom plugin offers functionality regarding map zooming.

    -

    Configuration

    +

    Configuration

    The Zoom plugin offers a plus/minus button, and will adjust itself to the map's zoom settings on initialization.
    It can be configured as followed.

    @@ -55,8 +55,8 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    The map's zoom level can be listened to.

    @@ -88,7 +88,7 @@

    State

    /* This code is called on any zoomLevel update. */ }) -

    Getters

    +

    Getters

    @@ -117,7 +117,7 @@

    Getters

    } ) -

    Actions

    +

    Actions

    The zoomLevel can be set programmatically.

    map.$store.dispatch('plugin/zoom/setZoomLevel', zoomLevelNumber)
     map.$store.dispatch('plugin/zoom/increaseZoomLevel')
    diff --git a/docs/generic/client-generic.html b/docs/generic/client-generic.html
    index dd3d17656..29285defd 100644
    --- a/docs/generic/client-generic.html
    +++ b/docs/generic/client-generic.html
    @@ -22,12 +22,12 @@
     
     
       
    -

    Generic MapClient API 🗺️ @polar/client-generic

    +

    Generic MapClient API 🗺️ @polar/client-generic

    This client is based on POLAR and subsequently the masterportalAPI. The following documentation only contains how this specific client can be used, and the minimal information required to get it running.

    For the development test deployments and example configurations, see here.

    For a minimum working example, see here.

    -

    Basic usage

    +

    Basic usage

    The NPM package @polar/client-generic can be installed via NPM or downloaded from the release page. When using import mapClient from '@polar/client-generic', the object mapClient contains a method createMap. This is the main method required to get the client up and running. Should you use another import method, check the package's dist folder for available files.

    The method expects a single object with the following parameters.

    @@ -87,7 +87,7 @@

    Basic usage

    }

    The value to stylePath is the same as as a link tag would have in its href.

    -

    Destroy instance

    +

    Destroy instance

    The mapInstance returned by the createMap call can be destroyed by calling mapInstance.$destroy. This will not remove the rendered HTML, but unlink all internal creations and effects. This should be called before re-navigating, usual lifecycle hooks are beforeDestroy or beforeUnmount, depending on the framework in use.

    After this, createMap can be used again when the DOM is restored. That is, the original div with its id must be recreated, since POLAR changes the DOM in the div. Normally, an SPA will take care of this by itself since it will render the outlying component anew.

    Should this not be the case in your framework, the following snippet restores the DOM:

    diff --git a/docs/generic/core.html b/docs/generic/core.html index 30ed9bbdf..aa70cc755 100644 --- a/docs/generic/core.html +++ b/docs/generic/core.html @@ -22,8 +22,8 @@
    -

    Core

    -

    Scope

    +

    Core

    +

    Scope

    The client's core is the base package to create clients in the POLAR environment.

    It offers this functionality:

      @@ -31,15 +31,15 @@

      Scope

    • @masterportal/masterportalapi functionality
    • Localization mechanism
    -

    Interaction

    +

    Interaction

    If a client is rendered as part of another page, the zoom and drag-pan behaviour is different to if the client is rendered as complete page.
    If it's part of another page, drag-panning on mobile devices is only usable if at least two fingers are being used while on desktop clients the user can only zoom if using the respective platform modifier key (e.g. CTRL).

    It is important to note that the behaviour will be desktop-like on larger touchscreen devices (e.g. tablets).

    -

    Initialization / Configuration

    +

    Initialization / Configuration

    It depends on the client how exactly the initialization will take place for the embedding programmer. However, the core mechanism remains the same.

    The exported default object is an extended masterportalAPI, adding the addPlugins and extending the createMap functions. For masterportalAPI details, see their repository.

    To be able to see the map in production mode, the imported stylesheet has to have the property data-polar. The value can be chosen arbitrarily. ⚠️ Deprecated. The new field 'stylePath' should be used instead.

    -

    addPlugins

    +

    addPlugins

    Before instantiating the map, all required plugins have to be added. Depending on how you use POLAR, this may already have been done. Ready-made clients (that is, packages prefixed @polar/client-) come with plugins prepared. You may add further plugins or proceed with createMap.

    In case you're integrating new plugins, call addPlugins with an array of instances.

    client.addPlugins([Plugin({ pluginConfig })])
    @@ -55,7 +55,7 @@ 

    addPlugins

    })

    If the storeModule features a setupModule action, it will be executed automatically after initialization.

    -

    createMap

    +

    createMap

    The map is created by calling the createMap method. Depending on how you use POLAR, this may already have been done, as some clients come as ready-made standalone HTML pages that do this for you.

    MapClient.createMap({
       // arbitrary id, must point to a div
    @@ -66,7 +66,7 @@ 

    createMap

    /* Your Code, e.g. for setting up callbacks. */ })
    -

    mapConfiguration

    +

    mapConfiguration

    The mapConfiguration allows controlling many client instance details.

    @@ -124,7 +124,7 @@

    mapConfiguration

    -
    mapConfiguration.LanguageOption
    +
    mapConfiguration.LanguageOption

    A language option is an object consisting of a type (its language key) and the i18next resource definition. You may e.g. decide that the texts offered in the LayerChooser do not fit the style of your client, or that they could be more precise in your situation since you're only using very specific overlays.

    An example for a LanguageOption array usable in createMap is this array:

    const languageOptions: LanguageOption[] = [
    @@ -151,7 +151,7 @@ 
    mapConfiguration.LanguageOption
    ]

    To figure out the name of the locales to override, inspect the matching plugin in GitHub's file browser. In packages/plugins, open the plugin you desire to override. Each plugin's src folder contains a language.ts listing all used locale keys with appropriate nesting.

    -
    mapConfiguration.extendedMasterportalapiMarkers
    +
    mapConfiguration.extendedMasterportalapiMarkers
    @@ -193,7 +193,7 @@
    mapConfiguration.extendedMasterportalapiMarkers
    -
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    +
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    @@ -281,7 +281,7 @@
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    -
    mapConfiguration.LayerConf
    +
    mapConfiguration.LayerConf

    The layer configuration (or: service register) is read by the masterportalAPI. The full definition can be read here.

    However, not all listed services have been implemented in the masterportalAPI yet, and no documentation regarding implemented properties exists there yet.

    Whitelisted and confirmed parameters include:

    @@ -289,7 +289,7 @@
    mapConfiguration.LayerConf
  • WMS: id, name, url, typ, format, version, transparent, layers, STYLES
  • WFS: id, name, url, typ, outputFormat, version, featureType
  • -
    Example services register
    +
    Example services register
    [
       {
         "id": "my-wfs-id",
    @@ -313,7 +313,7 @@ 
    Example services register
    ]

    Since this is the base for many functions, the service ID set in this is used to reference map material in many places of the map client.

    -
    <...masterportalAPI.fields>
    +
    <...masterportalAPI.fields>

    The <...masterportalAPI.fields> means that any masterportalAPI field may also be used here directly. The most common fields are the following ones; for more, see masterportalAPI.

    @@ -356,10 +356,10 @@
    <...masterportalAPI.fields>
    -
    <plugin.fields>
    -

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    +
    <plugin.fields>
    +

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    On how to configure a plugin, see the respective plugin. The configuration is given in the mapConfiguration object by the plugin's name as specified in its respective documentation.

    -
    Global Plugin Parameters
    +
    Global Plugin Parameters

    Most plugins honor this additional field.

    @@ -377,7 +377,7 @@
    Global Plugin Parameters
    -
    Example Configuration
    +
    Example Configuration

    For example, a @polar/plugin-address-search plugin can be configured like this:

    {
       addressSearch: {
    @@ -387,7 +387,7 @@ 
    Example Configuration
    } }
    -
    mapConfiguration.vuetify
    +
    mapConfiguration.vuetify

    These fields let you e.g. specify a Vuetify-Theme. For more options, refer to the official vuetify documentation.

    Additionally to the regular fields, primaryContrast and secondaryContrast are interpreted. They serve as contrast colors to their respective fields and are used for e.g. button icons.

    {
    @@ -403,7 +403,7 @@ 
    mapConfiguration.vuetify
    } }
    -

    Store

    +

    Store

    The core module features a vuex root store that all plugin vuex modules are plugged into. However, the root contents are only relevant to plugins. It is accessible with map.$store, and can be used as a starting point for plugin access.

    To ease use, the map instance also features a subscribe method that will register a watcher to any state field. Please mind that only documented paths should be used, and all others are subject to change without notice.

    // state subscription – listening to data held by the map client
    diff --git a/docs/generic/lib-custom-types.html b/docs/generic/lib-custom-types.html
    index fc8188e5f..775c6e0a3 100644
    --- a/docs/generic/lib-custom-types.html
    +++ b/docs/generic/lib-custom-types.html
    @@ -22,7 +22,7 @@
     
     
       
    -

    Custom Types

    +

    Custom Types

    This is a custom type library for overarching types. They can be used both in core, plugin, and lib packages to develop a common custom package-global type system.

    Keep it as small as possible and sort types where they belong, whenever possible.

    diff --git a/docs/generic/plugin-address-search.html b/docs/generic/plugin-address-search.html index e665cdef6..99d9a0da0 100644 --- a/docs/generic/plugin-address-search.html +++ b/docs/generic/plugin-address-search.html @@ -22,8 +22,8 @@
    -

    AddressSearch

    -

    Scope

    +

    AddressSearch

    +

    Scope

    The AddressSearch plugin allows users to search for an address. If multiple addresses are returned by services, the user is prompted to select a result.

    The plugin saves the chosen information as GeoJSON to the store so that following procedures may grab it or so that other plugins may use it.

    Currently supported services:

    @@ -32,8 +32,8 @@

    Scope

  • WFS
  • Some gazetteers/WFS-G (please request a check or try yourself, not 100% done)
  • -

    Configuration

    -

    addressSearch

    +

    Configuration

    +

    addressSearch

    The configuration allows defining and grouping services. Grouped services can be requested in a search at the same time, and one group of searches can be active at a time. When multiple searches are in a group, they may be extended with category information to make the results easier to browse.

    It is advised to either use one-search-per-group or all services in a singular group to avoid an overly complex UI. Mixed configurations may be required for more complex search requirements.

    In categoryProperties and groupProperties, id strings called groupId and categoryId are used. These are arbitrary strings you can introduce and reuse to group or categorize elements together. Regarding what groups and categories are, see further below.

    @@ -104,7 +104,7 @@

    addressSearch

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    addressSearch.searchMethodsObject

    +

    addressSearch.searchMethodsObject

    @@ -156,7 +156,7 @@

    addressSearch.searchMethodsObject

    -

    addressSearch.customSearchMethod

    +

    addressSearch.customSearchMethod

    This is a function with the following signature:

    (
       // should be used to actually abort request
    @@ -170,7 +170,7 @@ 

    addressSearch.customSearchMethod

    ) => Promise<FeatureCollection> | never

    With this, arbitrary services can be supported.

    -

    addressSearch.customSelectFunction

    +

    addressSearch.customSelectFunction

    This is a function with the following signature:

    ({
       // VueX context object
    @@ -182,7 +182,7 @@ 

    addressSearch.customSelectFunction

    }) => void

    With this, arbitrary click results can be supported. Please mind that undocumented mutations and actions fired in such a function are subject to change without further notice.

    -

    addressSearch.groupProperties

    +

    addressSearch.groupProperties

    @@ -219,7 +219,7 @@

    addressSearch.groupProperties

    -

    addressSearch.categoryProperties

    +

    addressSearch.categoryProperties

    @@ -236,7 +236,7 @@

    addressSearch.categoryProperties

    -
    addressSearch.searchMethodsObject.queryParameters (type:common)
    +
    addressSearch.searchMethodsObject.queryParameters (type:common)

    These fields are interpreted by all implemented services.

    @@ -254,7 +254,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:common)
    -
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    +
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    @@ -317,7 +317,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
  • WFS 2.0.0 {wildCard: "%", singleChar: "*", escapeChar: "\"}
  • WFS 1.0.0 {wildCard: "*", singleChar: "*", escape: "\"}
  • -
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    +
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)

    ⚠️ "gazetteer" is deprecated. Please use "mpapi" instead.

    @@ -362,7 +362,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    -
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)
    +
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    Please mind that this requires a configured backend. A WFS's Stored Query is requested with predefined parameters using the masterportalApi. This implementation is meant for e.g. https://geodienste.hamburg.de/HH_WFS_GAGES, but works with other WFS configured in the same manner.

    @@ -408,14 +408,14 @@
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    While all fields are optional, configuring none of them will yield undefined behaviour. At least one search instruction should be set to true.

    -
    addressSearch.searchMethodsObject.queryParameters (type:bkg)
    +
    addressSearch.searchMethodsObject.queryParameters (type:bkg)

    In BKG mode, queryParameter's key-value pairs are used in the service query. E.g. {filter: { bundesland: 'Bremen' }} results in the GET request URL having &filter=bundesland:Bremen as suffix.

    For more options, please check the official documentation regarding what query parameters are interpreted.

    Additionally, it is possible to configure the parameters accesstoken (Authorization) or apiKey (custom header X-Api-Key) to send the described headers to the search service for authentication purposes. Note that this changes the request to be non-simple. To be able to use the parameters, the request has to be sent in cors mode and has to support preflight request OPTIONS.

    -

    Store

    -

    Mutations

    -

    setSelectedGroupName

    +

    Store

    +

    Mutations

    +

    setSelectedGroupName

    This can be used to change the selected search group by name.

    map.$store.commit(
       'plugin/addressSearch/setSelectedGroupName',
    @@ -423,8 +423,8 @@ 

    setSelectedGroupName

    )

    Please mind that programmatically changing the search group will not trigger a search, unlike a search group change by the user. If you need a search after change, consider the search action.

    -

    Actions

    -

    search

    +

    Actions

    +

    This is a purely programmatical search method. It is not used by user input.

    map.$store.dispatch('plugin/addressSearch/search', {
       input: 'Bahnhofsstraße 12',
    @@ -453,7 +453,7 @@ 

    search

    -

    State

    +

    State

    map.subscribe('plugin/addressSearch/chosenAddress', (chosenAddress) => {
       /* Your code. */
     })
    diff --git a/docs/generic/plugin-attributions.html b/docs/generic/plugin-attributions.html
    index 6070f2c20..3cad0ede3 100644
    --- a/docs/generic/plugin-attributions.html
    +++ b/docs/generic/plugin-attributions.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Attributions

    -

    Scope

    +

    Attributions

    +

    Scope

    This plugin shows attributions (that is, legal information) regarding copyrights and sources of the currently visible layers.

    -

    Configuration

    -

    attributions

    +

    Configuration

    +

    attributions

    All parameters are optional. However, setting neither layerAttributions nor staticAttributions results in an empty window.

    @@ -70,7 +70,7 @@

    attributions

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    attributions.layerAttribution

    +

    attributions.layerAttribution

    diff --git a/docs/generic/plugin-draw.html b/docs/generic/plugin-draw.html index 7ebe889ab..45454a98a 100644 --- a/docs/generic/plugin-draw.html +++ b/docs/generic/plugin-draw.html @@ -22,8 +22,8 @@
    -

    Draw

    -

    Scope

    +

    Draw

    +

    Scope

    The draw plugin allows users to draw features on the map. Drawn features may be edited and deleted.

    Currently supported OpenLayers geometry types:

      @@ -33,15 +33,15 @@

      Scope

    • 'Polygon'

    Also, 'Text' is supported which is modeled as an OpenLayers 'Point'. This is no default feature, so it must be specified in the configuration to use it.

    -

    User instructions for Text Mode

    +

    User instructions for Text Mode

    The interaction with text features is not intuitive, which is why the text feature should come with instructions for the users:

    -

    Edit

    +

    Edit

    To edit the text or the placement of the text feature, the user must click on the center of the text to select the point geometry below it. After selecting it, the user can move the point by keeping the left mouse button pressed, or edit the text in the input field that opens with selecting the feature. If more than one text size is specified in the configuration, the user can change the text size with a slider.

    -

    Delete

    +

    Delete

    To delete the text, the user must either click on the point at the center of the text or use CTRL + left mouse button to open a box over all features that he or she wants to delete.

    -

    Configuration

    +

    Configuration

    The styling of the drawn features can be configured to overwrite the default ol-style. Configuration is oriented around the OpenLayers styles.

    -

    draw

    +

    draw

    @@ -69,7 +69,7 @@

    draw

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    draw.textStyle
    +
    draw.textStyle
    @@ -91,7 +91,7 @@
    draw.textStyle
    -
    draw.textStyle.font
    +
    draw.textStyle.font
    @@ -113,7 +113,7 @@
    draw.textStyle.font
    -

    draw.style (by example)

    +

    draw.style (by example)

    The @masterportal/masterportalapi has vectorStyles in development. As soon as that's done, we shall use its styling syntax and methods.

    For the time being, please use this example as a rough reference as to what can currently be done.

    {
    @@ -141,14 +141,14 @@ 

    draw.style (by example)

    } }
    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/draw/featureCollection', (featureCollection) => {
       /* Your code. */
     })
     

    The returned featureCollection is a GeoJSON FeatureCollection. It includes all drawn features and updates on changes.

    -

    Actions

    +

    Actions

    map.$store.dispatch('plugin/draw/addFeatures', {
       geoJSON: {
         type: 'FeatureCollection',
    diff --git a/docs/generic/plugin-export.html b/docs/generic/plugin-export.html
    index 26d494526..f512fc051 100644
    --- a/docs/generic/plugin-export.html
    +++ b/docs/generic/plugin-export.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Export

    -

    Scope

    +

    Export

    +

    Scope

    The Export plugin offers users to download the currently visible map canvas in a variety of file formats and by a variety of methods.

    -

    Configuration

    -

    export

    +

    Configuration

    +

    export

    @@ -60,12 +60,12 @@

    export

    To remove user control, add displayComponent: false to the configuration and use the following interactions.

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Actions

    +

    Actions

    To programmatically trigger a "screenshot", use this action.

    // type is 'Png', 'Jpg', or 'Pdf'
     map.$store.dispatch('plugin/export/exportAs', type)
     
    -

    State

    +

    State

    This shows how a callback can be used to show the exported data in a suitable html element. The value of the screenshot variable is a base64-encoded string.

    const someElement = // ... however you retrieve your html element
       map.subscribe('plugin/export/exportedMap', (screenshot) =>
    diff --git a/docs/generic/plugin-filter.html b/docs/generic/plugin-filter.html
    index 9139955d1..377fbc359 100644
    --- a/docs/generic/plugin-filter.html
    +++ b/docs/generic/plugin-filter.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Filter

    -

    Scope

    +

    Filter

    +

    Scope

    The Filter plugin can be used to filter arbitrary configurable vector layers by their properties.

    -

    Configuration

    -

    filter

    +

    Configuration

    +

    filter

    @@ -46,7 +46,7 @@

    filter

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    The following chapters contain drafts in this format. Please mind that they neither represent UI nor localisation, but are merely there to communicate the idea with an example.
     
    -
    filter.filterConfiguration
    +
    filter.filterConfiguration
    @@ -68,7 +68,7 @@
    filter.filterConfiguration
    -
    filter.filterConfiguration.category
    +
    filter.filterConfiguration.category
    @@ -101,7 +101,7 @@
    filter.filterConfiguration.category
    ▢ Vanilla ▢ Strawberry -
    filter.filterConfiguration.time
    +
    filter.filterConfiguration.time
    @@ -139,7 +139,7 @@
    filter.filterConfiguration.time

    Of all time restrictions, at most one can be selected at any time. The produced options are selectable by radio buttons.

    -
    filter.filterConfiguration.time.options
    +
    filter.filterConfiguration.time.options
    @@ -166,7 +166,7 @@
    filter.filterConfiguration.time.options
    ◯ Last 7 days

    In 'days' mode, the selections will always include full days, and additionally the current day. Due to this, the time frame of "last 7 days" is actually 8*24h long. This seems unexpected at first, but follows intuition – if it's Monday and a user filters to the "last seven days", they would expect to fully see last week's Monday, but also features from that day's morning.

    -
    filter.filterConfiguration.time.freeSelection
    +
    filter.filterConfiguration.time.freeSelection
    @@ -193,7 +193,7 @@
    filter.filterConfiguration.time.freeSelection
    From ▒▒▒▒▒▒▒▒▒▒▒ // clicking input opens a selector restricted *until* today To ▇▇▇▇▇▇▇▇▇▇▇ // clicking input opens a selector restricted *until* today -

    Example configuration

    +

    Example configuration

    {
       filter: {
         layers: {
    diff --git a/docs/generic/plugin-fullscreen.html b/docs/generic/plugin-fullscreen.html
    index 85ee34a52..3b6942d11 100644
    --- a/docs/generic/plugin-fullscreen.html
    +++ b/docs/generic/plugin-fullscreen.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Fullscreen

    -

    Scope

    +

    Fullscreen

    +

    Scope

    The fullscreen plugin allows viewing the map in fullscreen mode. It relies solely on the HTML Fullscreen API, where you can also find more about browser support.

    -

    Configuration

    -

    fullscreen

    +

    Configuration

    +

    fullscreen

    @@ -49,8 +49,8 @@

    fullscreen

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/fullscreen/isInFullscreen', (isInFullscreen) => {
       /* Your code. */
     })
    diff --git a/docs/generic/plugin-geo-location.html b/docs/generic/plugin-geo-location.html
    index 2772a21c3..145f3e1b3 100644
    --- a/docs/generic/plugin-geo-location.html
    +++ b/docs/generic/plugin-geo-location.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    GeoLocation

    -

    Scope

    +

    GeoLocation

    +

    Scope

    The GeoLocation plugin is responsible for collecting and displaying a user's GPS location. It is shown as a crosshair mark on the map. The tracking can be triggered initially on startup or via a button. This behavior can be controlled by setting checkLocationInitially to either true or false. When a users denies the location tracking, the button for this plugin gets disabled.

    -

    Configuration

    -

    geoLocation

    +

    Configuration

    +

    geoLocation

    @@ -81,7 +81,7 @@

    geoLocation

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Example configuration

    +

    Example configuration

    {
       "geoLocation": {
         "checkLocationInitially": true,
    @@ -89,8 +89,8 @@ 

    Example configuration

    } }
    -

    Store

    -

    State

    +

    Store

    +

    State

    If the access to an users location has been granted, the coordinates get stored in the position state value. This value can be subscribed through the path 'plugin/geoLocation/position'.

    map.subscribe('plugin/geoLocation/position', (position) => {
       /* Your code here */
    diff --git a/docs/generic/plugin-gfi.html b/docs/generic/plugin-gfi.html
    index 9af21eb24..279c9cba8 100644
    --- a/docs/generic/plugin-gfi.html
    +++ b/docs/generic/plugin-gfi.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    GFI

    -

    Scope

    +

    GFI

    +

    Scope

    The GFI plugin can be used to fetch and optionally display GFI (GetFeatureInfo) from WMS and WFS services as well as layers based on GeoJSON files. In a first step, the information is stored in the VueX store to allow for easy access. Display is optional and quite obstructive within the map client.

    ⚠️ The display feature is currently not meant for production. Please use data bindings for display to avoid obstructing the map client.

    -

    Configuration

    -

    gfi

    +

    Configuration

    +

    gfi

    @@ -92,7 +92,7 @@

    gfi

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    gfi.gfiLayerConfiguration
    +
    gfi.gfiLayerConfiguration
    @@ -156,7 +156,7 @@
    gfi.gfiLayerConfiguration
    -
    gfi.customHighlightStyle
    +
    gfi.customHighlightStyle
    @@ -178,7 +178,7 @@
    gfi.customHighlightStyle
    -
    gfi.featureList
    +
    gfi.featureList
    @@ -210,7 +210,7 @@
    gfi.featureList
    -

    Example configuration

    +

    Example configuration

    layers: {
       [serviceId]: {
         geometry: true,
    @@ -235,8 +235,8 @@ 

    Example configuration

    }, },
    -

    Store

    -

    State

    +

    Store

    +

    State

    If a successful query has been sent and a response has been received, the result will be saved in the store and can be subscribed through the path 'plugin/gfi/featureInformation'. If, however, a query for a layer fails, a Symbol containing the error will be saved in the store instead to indicate the error.

    The exact value of featureInformation may vary wildly depending on the service used, but is always given as json representation here.

    map.subscribe('plugin/gfi/featureInformation', (featureInformation) => {
    diff --git a/docs/generic/plugin-icon-menu.html b/docs/generic/plugin-icon-menu.html
    index 48d26d425..70ddaa121 100644
    --- a/docs/generic/plugin-icon-menu.html
    +++ b/docs/generic/plugin-icon-menu.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    IconMenu

    +

    IconMenu

    The IconMenu offers an icon-button based menu to open various functionality as cards. This way, obstructive UI can be hidden until the user desires to open it. Please use carefully – users may have issues finding process-relevant buttons/interactions if you hide them here.
    Currently, the IconMenu should only be rendered with layoutTag set to NineLayoutTag.TOP_RIGHT.

    -

    Scope

    +

    Scope

    It is meant for additional information/functionality (legend, other layers) or power users in non-public clients.

    Please note that the average user has never seen the client before and just wants to get done with it, not learn a map client.

    -

    Configuration

    +

    Configuration

    ⚠️ This plugin can't be configured with the mapConfiguration, but is configured during client construction. Currently, no way exists to add plugins to it after the build took place.

    @@ -60,7 +60,7 @@

    Configuration

    ], }
    -

    menus

    +

    When landscape mode is active the IconMenu is oriented horizontally. Currently, the IconMenu works fine only if there is not more than one row of Icons in landscape mode.

    diff --git a/docs/generic/plugin-layer-chooser.html b/docs/generic/plugin-layer-chooser.html index c4f4d3f85..b1ab07470 100644 --- a/docs/generic/plugin-layer-chooser.html +++ b/docs/generic/plugin-layer-chooser.html @@ -22,12 +22,12 @@
    -

    LayerChooser

    +

    LayerChooser

    The tool offers layer selection to the user.

    -

    Scope

    +

    Scope

    The LayerChooser offers an additive (usually Overlays, technically named with type: 'mask') and an exclusive (usually background maps, type: 'background') selection of layers to the users.

    Order of layers within a layer is currently always as initially configured.

    -

    Configuration

    +

    Configuration

    The tool does not require any configuration for itself, but is based on the mapConfiguration.layers array. It will infer its options from there, and change layer visibility and availability depending on minZoom and maxZoom.

    Each object in mapConfiguration.layers array fits this definition:

    @@ -82,7 +82,7 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    mapConfiguration.layers.options

    +

    mapConfiguration.layers.options

    An option wheel will appear in the layer chooser that allows opening a sub-menu with configured configuration options for the end user.

    @@ -100,7 +100,7 @@

    mapConfiguration.layers.options

    -

    mapConfiguration.layers.options.layers

    +

    mapConfiguration.layers.options.layers

    This field is named like this to match the OGC specification for their name; that is, layers have layers that may have layers that may have layers, and so on. However, only the first level (a layer's layers) is currently implemented.

    diff --git a/docs/generic/plugin-legend.html b/docs/generic/plugin-legend.html index f4511efae..9af96bdc1 100644 --- a/docs/generic/plugin-legend.html +++ b/docs/generic/plugin-legend.html @@ -22,9 +22,9 @@
    -

    Legend

    +

    Legend

    The Legend module offers legend images as supplied by OGC services.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    diff --git a/docs/generic/plugin-loading-indicator.html b/docs/generic/plugin-loading-indicator.html index eb0396786..a0d432e67 100644 --- a/docs/generic/plugin-loading-indicator.html +++ b/docs/generic/plugin-loading-indicator.html @@ -22,13 +22,13 @@
    -

    LoadingIndicator

    -

    Scope

    +

    LoadingIndicator

    +

    Scope

    A generic loading indicator that may be used by any plugin or outside procedure to indicate loading.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    Mutations

    +

    Store

    +

    Mutations

    // show loading indicator
     map.$store.commit('plugin/loadingIndicator/addLoadingKey', key)
     // hide loading indicator
    @@ -37,7 +37,7 @@ 

    Mutations

    Loading indicator example

    The key must be unique and is kept track of via a Set. It can't be added multiple times, and removing it once always removes it altogether. It is advised to use a key like {my-plugin-or-application-name}-{procedure-name} to avoid name conflicts. The LoadingIndicator will usually be used for asynchronous code.

    As such, always call removeLoadingKey in the finally section of your code to prevent hanging loading indicators.

    -

    Getters

    +

    Getters

    You may desire to listen to whether the loader is currently being shown.

    diff --git a/docs/generic/plugin-pins.html b/docs/generic/plugin-pins.html index 1985b16de..2c36045af 100644 --- a/docs/generic/plugin-pins.html +++ b/docs/generic/plugin-pins.html @@ -22,12 +22,12 @@
    -

    Pins

    -

    Scope

    +

    Pins

    +

    Scope

    The pins plugin handles marking locations. Embedding processes can then use that coordinate for further steps. The plugin may react to other plugins, especially address searches.

    -

    Configuration

    +

    Configuration

    The usage of displayComponent has no influence on the creation of Pins on the Map if this plugin is being used.

    -

    pins

    +

    pins

    @@ -84,7 +84,7 @@

    pins

    -

    pins.appearOnClick

    +

    pins.appearOnClick

    @@ -106,7 +106,7 @@

    pins.appearOnClick

    -

    pins.initial

    +

    pins.initial

    @@ -133,7 +133,7 @@

    pins.initial

    -

    pins.style

    +

    pins.style

    @@ -155,8 +155,8 @@

    pins.style

    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/pins/transformedCoordinate', (pinCoordinate) => {
       /* Your Code. */
     })
    diff --git a/docs/generic/plugin-reverse-geocoder.html b/docs/generic/plugin-reverse-geocoder.html
    index ba1db2ce2..855c2e77a 100644
    --- a/docs/generic/plugin-reverse-geocoder.html
    +++ b/docs/generic/plugin-reverse-geocoder.html
    @@ -22,12 +22,12 @@
     
     
       
    -

    Reverse Geocoder

    -

    Scope

    +

    Reverse Geocoder

    +

    Scope

    Reverse Geocoder Plugin that turns coordinates into addresses via a WPS. It does not offer any UI by itself.

    This module has been written for the HH WPS service. The return format is custom and no other WPS are currently supported. Please mind this when trying to use this plugin with any other WPS. For usage with other WPS, those must either fit the HH WPS, or a generalization of this plugin is required.

    -

    Configuration

    -

    reverseGeocoder

    +

    Configuration

    +

    reverseGeocoder

    @@ -69,9 +69,9 @@

    reverseGeocoder

    -

    Store

    +

    Store

    The ReverseGeocoder plugin does not hold any state.

    -

    Actions

    +

    Actions

    // result contains the resolved address (exact format depends on WPS)
     const result = await map.$store.dispatch(
       'plugin/reverseGeocoder/reverseGeocode',
    diff --git a/docs/generic/plugin-scale.html b/docs/generic/plugin-scale.html
    index e671f8429..f5ac165df 100644
    --- a/docs/generic/plugin-scale.html
    +++ b/docs/generic/plugin-scale.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    Scale

    +

    Scale

    ⚠ The Scale plugin is currently meant for passive usage only. It's API has not yet been finally defined, and is subject to change without further notice.

    -

    Scope

    +

    Scope

    The scale plugin shows the current map resolution as relative scale (1:x) and/or absolute scale (a drawn line has length x units).

    -

    Configuration

    -

    scale

    +

    Configuration

    +

    scale

    diff --git a/docs/generic/plugin-toast.html b/docs/generic/plugin-toast.html index b3dcc0732..135b35011 100644 --- a/docs/generic/plugin-toast.html +++ b/docs/generic/plugin-toast.html @@ -22,12 +22,12 @@
    -

    Toast

    -

    Scope

    +

    Toast

    +

    Scope

    The toast plugin offers global functionality to display text messages to the user. These are the classic success, warning, info, and error messages, helping to understand what's going on or why something happened.

    -

    Configuration

    +

    Configuration

    Please check the vuetify documentation to override the success, warning, info, or errors colors in general. To affect only this plugin, the following configuration parameters can be added to either the plugin instantiation or the mapConfiguration:

    -

    toast

    +

    toast

    @@ -60,7 +60,7 @@

    toast

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    toast.toastStyle

    +

    toast.toastStyle

    @@ -82,12 +82,12 @@

    toast.toastStyle

    -

    Store

    -

    Actions

    +

    Store

    +

    Actions

    New entries are made via action. They are either dismissed after a timeout or by user interaction.

    map.$store.dispatch('plugin/toast/addToast', payload)
     
    -

    Payload structure

    +

    Payload structure

    @@ -124,7 +124,7 @@

    Payload structure

    -

    Usage example

    +

    Usage example

    map.$store.dispatch('plugin/toast/addToast', {
       type: 'warning',
       text: 'Wrong hammer for screw.',
    diff --git a/docs/generic/plugin-zoom.html b/docs/generic/plugin-zoom.html
    index 31a453618..28eaf436d 100644
    --- a/docs/generic/plugin-zoom.html
    +++ b/docs/generic/plugin-zoom.html
    @@ -22,10 +22,10 @@
     
     
       
    -

    Zoom

    -

    Scope

    +

    Zoom

    +

    Scope

    The Zoom plugin offers functionality regarding map zooming.

    -

    Configuration

    +

    Configuration

    The Zoom plugin offers a plus/minus button, and will adjust itself to the map's zoom settings on initialization.
    It can be configured as followed.

    @@ -55,8 +55,8 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    The map's zoom level can be listened to.

    @@ -88,7 +88,7 @@

    State

    /* This code is called on any zoomLevel update. */ }) -

    Getters

    +

    Getters

    @@ -117,7 +117,7 @@

    Getters

    } ) -

    Actions

    +

    Actions

    The zoomLevel can be set programmatically.

    map.$store.dispatch('plugin/zoom/setZoomLevel', zoomLevelNumber)
     map.$store.dispatch('plugin/zoom/increaseZoomLevel')
    diff --git a/docs/meldemichel/client-meldemichel.html b/docs/meldemichel/client-meldemichel.html
    index 8eec41625..e96ddc4d2 100644
    --- a/docs/meldemichel/client-meldemichel.html
    +++ b/docs/meldemichel/client-meldemichel.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Meldemichel MapClient API 🗺️ @polar/client-meldemichel

    +

    Meldemichel MapClient API 🗺️ @polar/client-meldemichel

    This client is based on POLAR and subsequently the masterportalAPI. The following documentation only contains how this specific client can be used, and the minimal information required to get it running.

    For the development test deployments, see here.

    -

    Basic usage

    +

    Basic usage

    The NPM package @polar/client-meldemichel can be installed via NPM or downloaded from the release page. When using import mapClient from '@polar/client-meldemichel', the object mapClient contains a method createMap. This is the main method required to get the client up and running. Should you use another import method, check the package's dist folder for available files.

    The method expects a single object with the following parameters.

    @@ -76,11 +76,11 @@

    Basic usage

    The value to stylePath is the same as as a link tag would have in its href.

    The index.html is used in COMPLETE mode, which is not run in the AfM. You may, however, use it for testing or inspecting an example.

    -

    Instance reuse

    +

    Instance reuse

    The mapInstance and its HTML environment are kept in the client; it is returned and rerendered on subsequent createMap calls to a div with the given id. Due to this, everything will appear to the user as it was previously left, including opened menus.

    Since in SINGLE mode, changes to the pins are required between renders, hence the parameters in configOverride.pins are used to update the client. Should additional updates be required, please let us know.

    Calling watch/subscribe on the client will return an unwatch/unsubscribe method. It should be called on leaving the map's page; depending on framework/library in e.g. the beforeDestroy or beforeUnmount method.

    -

    Rendering in SINGLE or REPORT mode

    +

    Rendering in SINGLE or REPORT mode

    A document rendering the map client could e.g. look like this:

    <!DOCTYPE html>
     <html>
    @@ -167,7 +167,7 @@ 

    Rendering in SINGLE or REPORT mode

    </body> </html>
    -

    Rendering COMPLETE mode

    +

    Rendering COMPLETE mode

    The index.html included in the package's dist folder has been prepared for this mode and must merely be hosted.

    Please see the table in chapter Basic usage about configuration options.

    diff --git a/docs/meldemichel/core.html b/docs/meldemichel/core.html index 30ed9bbdf..aa70cc755 100644 --- a/docs/meldemichel/core.html +++ b/docs/meldemichel/core.html @@ -22,8 +22,8 @@
    -

    Core

    -

    Scope

    +

    Core

    +

    Scope

    The client's core is the base package to create clients in the POLAR environment.

    It offers this functionality:

      @@ -31,15 +31,15 @@

      Scope

    • @masterportal/masterportalapi functionality
    • Localization mechanism
    -

    Interaction

    +

    Interaction

    If a client is rendered as part of another page, the zoom and drag-pan behaviour is different to if the client is rendered as complete page.
    If it's part of another page, drag-panning on mobile devices is only usable if at least two fingers are being used while on desktop clients the user can only zoom if using the respective platform modifier key (e.g. CTRL).

    It is important to note that the behaviour will be desktop-like on larger touchscreen devices (e.g. tablets).

    -

    Initialization / Configuration

    +

    Initialization / Configuration

    It depends on the client how exactly the initialization will take place for the embedding programmer. However, the core mechanism remains the same.

    The exported default object is an extended masterportalAPI, adding the addPlugins and extending the createMap functions. For masterportalAPI details, see their repository.

    To be able to see the map in production mode, the imported stylesheet has to have the property data-polar. The value can be chosen arbitrarily. ⚠️ Deprecated. The new field 'stylePath' should be used instead.

    -

    addPlugins

    +

    addPlugins

    Before instantiating the map, all required plugins have to be added. Depending on how you use POLAR, this may already have been done. Ready-made clients (that is, packages prefixed @polar/client-) come with plugins prepared. You may add further plugins or proceed with createMap.

    In case you're integrating new plugins, call addPlugins with an array of instances.

    client.addPlugins([Plugin({ pluginConfig })])
    @@ -55,7 +55,7 @@ 

    addPlugins

    })

    If the storeModule features a setupModule action, it will be executed automatically after initialization.

    -

    createMap

    +

    createMap

    The map is created by calling the createMap method. Depending on how you use POLAR, this may already have been done, as some clients come as ready-made standalone HTML pages that do this for you.

    MapClient.createMap({
       // arbitrary id, must point to a div
    @@ -66,7 +66,7 @@ 

    createMap

    /* Your Code, e.g. for setting up callbacks. */ })
    -

    mapConfiguration

    +

    mapConfiguration

    The mapConfiguration allows controlling many client instance details.

    @@ -124,7 +124,7 @@

    mapConfiguration

    -
    mapConfiguration.LanguageOption
    +
    mapConfiguration.LanguageOption

    A language option is an object consisting of a type (its language key) and the i18next resource definition. You may e.g. decide that the texts offered in the LayerChooser do not fit the style of your client, or that they could be more precise in your situation since you're only using very specific overlays.

    An example for a LanguageOption array usable in createMap is this array:

    const languageOptions: LanguageOption[] = [
    @@ -151,7 +151,7 @@ 
    mapConfiguration.LanguageOption
    ]

    To figure out the name of the locales to override, inspect the matching plugin in GitHub's file browser. In packages/plugins, open the plugin you desire to override. Each plugin's src folder contains a language.ts listing all used locale keys with appropriate nesting.

    -
    mapConfiguration.extendedMasterportalapiMarkers
    +
    mapConfiguration.extendedMasterportalapiMarkers
    @@ -193,7 +193,7 @@
    mapConfiguration.extendedMasterportalapiMarkers
    -
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    +
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    @@ -281,7 +281,7 @@
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    -
    mapConfiguration.LayerConf
    +
    mapConfiguration.LayerConf

    The layer configuration (or: service register) is read by the masterportalAPI. The full definition can be read here.

    However, not all listed services have been implemented in the masterportalAPI yet, and no documentation regarding implemented properties exists there yet.

    Whitelisted and confirmed parameters include:

    @@ -289,7 +289,7 @@
    mapConfiguration.LayerConf
  • WMS: id, name, url, typ, format, version, transparent, layers, STYLES
  • WFS: id, name, url, typ, outputFormat, version, featureType
  • -
    Example services register
    +
    Example services register
    [
       {
         "id": "my-wfs-id",
    @@ -313,7 +313,7 @@ 
    Example services register
    ]

    Since this is the base for many functions, the service ID set in this is used to reference map material in many places of the map client.

    -
    <...masterportalAPI.fields>
    +
    <...masterportalAPI.fields>

    The <...masterportalAPI.fields> means that any masterportalAPI field may also be used here directly. The most common fields are the following ones; for more, see masterportalAPI.

    @@ -356,10 +356,10 @@
    <...masterportalAPI.fields>
    -
    <plugin.fields>
    -

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    +
    <plugin.fields>
    +

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    On how to configure a plugin, see the respective plugin. The configuration is given in the mapConfiguration object by the plugin's name as specified in its respective documentation.

    -
    Global Plugin Parameters
    +
    Global Plugin Parameters

    Most plugins honor this additional field.

    @@ -377,7 +377,7 @@
    Global Plugin Parameters
    -
    Example Configuration
    +
    Example Configuration

    For example, a @polar/plugin-address-search plugin can be configured like this:

    {
       addressSearch: {
    @@ -387,7 +387,7 @@ 
    Example Configuration
    } }
    -
    mapConfiguration.vuetify
    +
    mapConfiguration.vuetify

    These fields let you e.g. specify a Vuetify-Theme. For more options, refer to the official vuetify documentation.

    Additionally to the regular fields, primaryContrast and secondaryContrast are interpreted. They serve as contrast colors to their respective fields and are used for e.g. button icons.

    {
    @@ -403,7 +403,7 @@ 
    mapConfiguration.vuetify
    } }
    -

    Store

    +

    Store

    The core module features a vuex root store that all plugin vuex modules are plugged into. However, the root contents are only relevant to plugins. It is accessible with map.$store, and can be used as a starting point for plugin access.

    To ease use, the map instance also features a subscribe method that will register a watcher to any state field. Please mind that only documented paths should be used, and all others are subject to change without notice.

    // state subscription – listening to data held by the map client
    diff --git a/docs/meldemichel/lib-custom-types.html b/docs/meldemichel/lib-custom-types.html
    index fc8188e5f..775c6e0a3 100644
    --- a/docs/meldemichel/lib-custom-types.html
    +++ b/docs/meldemichel/lib-custom-types.html
    @@ -22,7 +22,7 @@
     
     
       
    -

    Custom Types

    +

    Custom Types

    This is a custom type library for overarching types. They can be used both in core, plugin, and lib packages to develop a common custom package-global type system.

    Keep it as small as possible and sort types where they belong, whenever possible.

    diff --git a/docs/meldemichel/lib-invisible-style.html b/docs/meldemichel/lib-invisible-style.html index a82796a9e..9f2713f2e 100644 --- a/docs/meldemichel/lib-invisible-style.html +++ b/docs/meldemichel/lib-invisible-style.html @@ -22,7 +22,7 @@
    -

    invisibleStyle

    +

    invisibleStyle

    Exports a style for vector layer features that results in invisibility. Plugins that work with feature visibility ought to use this package to keep them interoperable.

    import { InvisibleStyle, isInvisible, isVisible } from '@polar/lib-invisible-style'
     
    diff --git a/docs/meldemichel/plugin-address-search.html b/docs/meldemichel/plugin-address-search.html
    index 089a333e5..4376accb0 100644
    --- a/docs/meldemichel/plugin-address-search.html
    +++ b/docs/meldemichel/plugin-address-search.html
    @@ -22,8 +22,8 @@
     
     
       
    -

    AddressSearch

    -

    Scope

    +

    AddressSearch

    +

    Scope

    The AddressSearch plugin allows users to search for an address. If multiple addresses are returned by services, the user is prompted to select a result.

    The plugin saves the chosen information as GeoJSON to the store so that following procedures may grab it or so that other plugins may use it.

    Currently supported services:

    @@ -32,8 +32,8 @@

    Scope

  • WFS
  • Some gazetteers/WFS-G (please request a check or try yourself, not 100% done)
  • -

    Configuration

    -

    addressSearch

    +

    Configuration

    +

    addressSearch

    The configuration allows defining and grouping services. Grouped services can be requested in a search at the same time, and one group of searches can be active at a time. When multiple searches are in a group, they may be extended with category information to make the results easier to browse.

    It is advised to either use one-search-per-group or all services in a singular group to avoid an overly complex UI. Mixed configurations may be required for more complex search requirements.

    In categoryProperties and groupProperties, id strings called groupId and categoryId are used. These are arbitrary strings you can introduce and reuse to group or categorize elements together. Regarding what groups and categories are, see further below.

    @@ -104,7 +104,7 @@

    addressSearch

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    addressSearch.searchMethodsObject

    +

    addressSearch.searchMethodsObject

    @@ -156,7 +156,7 @@

    addressSearch.searchMethodsObject

    -

    addressSearch.customSearchMethod

    +

    addressSearch.customSearchMethod

    This is a function with the following signature:

    (
       // should be used to actually abort request
    @@ -170,7 +170,7 @@ 

    addressSearch.customSearchMethod

    ) => Promise<FeatureCollection> | never

    With this, arbitrary services can be supported.

    -

    addressSearch.customSelectFunction

    +

    addressSearch.customSelectFunction

    This is a function with the following signature:

    ({
       // VueX context object
    @@ -182,7 +182,7 @@ 

    addressSearch.customSelectFunction

    }) => void

    With this, arbitrary click results can be supported. Please mind that undocumented mutations and actions fired in such a function are subject to change without further notice.

    -

    addressSearch.groupProperties

    +

    addressSearch.groupProperties

    @@ -219,7 +219,7 @@

    addressSearch.groupProperties

    -

    addressSearch.categoryProperties

    +

    addressSearch.categoryProperties

    @@ -236,7 +236,7 @@

    addressSearch.categoryProperties

    -
    addressSearch.searchMethodsObject.queryParameters (type:common)
    +
    addressSearch.searchMethodsObject.queryParameters (type:common)

    These fields are interpreted by all implemented services.

    @@ -254,7 +254,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:common)
    -
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    +
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    @@ -317,7 +317,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
  • WFS 2.0.0 {wildCard: "%", singleChar: "*", escapeChar: "\"}
  • WFS 1.0.0 {wildCard: "*", singleChar: "*", escape: "\"}
  • -
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    +
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)

    ⚠️ "gazetteer" is deprecated. Please use "mpapi" instead.

    @@ -362,7 +362,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    -
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)
    +
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    Please mind that this requires a configured backend. A WFS's Stored Query is requested with predefined parameters using the masterportalApi. This implementation is meant for e.g. https://geodienste.hamburg.de/HH_WFS_GAGES, but works with other WFS configured in the same manner.

    @@ -408,14 +408,14 @@
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    While all fields are optional, configuring none of them will yield undefined behaviour. At least one search instruction should be set to true.

    -
    addressSearch.searchMethodsObject.queryParameters (type:bkg)
    +
    addressSearch.searchMethodsObject.queryParameters (type:bkg)

    In BKG mode, queryParameter's key-value pairs are used in the service query. E.g. {filter: { bundesland: 'Bremen' }} results in the GET request URL having &filter=bundesland:Bremen as suffix.

    For more options, please check the official documentation regarding what query parameters are interpreted.

    Additionally, it is possible to configure the parameters accesstoken (Authorization) or apiKey (custom header X-Api-Key) to send the described headers to the search service for authentication purposes. Note that this changes the request to be non-simple. To be able to use the parameters, the request has to be sent in cors mode and has to support preflight request OPTIONS.

    -

    Store

    -

    Mutations

    -

    setSelectedGroupName

    +

    Store

    +

    Mutations

    +

    setSelectedGroupName

    This can be used to change the selected search group by name.

    map.$store.commit(
       'plugin/addressSearch/setSelectedGroupName',
    @@ -423,8 +423,8 @@ 

    setSelectedGroupName

    )

    Please mind that programmatically changing the search group will not trigger a search, unlike a search group change by the user. If you need a search after change, consider the search action.

    -

    Actions

    -

    search

    +

    Actions

    +

    This is a purely programmatical search method. It is not used by user input.

    map.$store.dispatch('plugin/addressSearch/search', {
       input: 'Bahnhofsstraße 12',
    @@ -453,7 +453,7 @@ 

    search

    -

    State

    +

    State

    map.subscribe('plugin/addressSearch/chosenAddress', (chosenAddress) => {
       /* Your code. */
     })
    diff --git a/docs/meldemichel/plugin-attributions.html b/docs/meldemichel/plugin-attributions.html
    index 370a4eddb..489f7f883 100644
    --- a/docs/meldemichel/plugin-attributions.html
    +++ b/docs/meldemichel/plugin-attributions.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Attributions

    -

    Scope

    +

    Attributions

    +

    Scope

    This plugin shows attributions (that is, legal information) regarding copyrights and sources of the currently visible layers.

    -

    Configuration

    -

    attributions

    +

    Configuration

    +

    attributions

    All parameters are optional. However, setting neither layerAttributions nor staticAttributions results in an empty window.

    @@ -70,7 +70,7 @@

    attributions

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    attributions.layerAttribution

    +

    attributions.layerAttribution

    diff --git a/docs/meldemichel/plugin-filter.html b/docs/meldemichel/plugin-filter.html index 72a748b60..4541cc9d5 100644 --- a/docs/meldemichel/plugin-filter.html +++ b/docs/meldemichel/plugin-filter.html @@ -22,11 +22,11 @@
    -

    Filter

    -

    Scope

    +

    Filter

    +

    Scope

    The Filter plugin can be used to filter arbitrary configurable vector layers by their properties.

    -

    Configuration

    -

    filter

    +

    Configuration

    +

    filter

    @@ -46,7 +46,7 @@

    filter

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    The following chapters contain drafts in this format. Please mind that they neither represent UI nor localisation, but are merely there to communicate the idea with an example.
     
    -
    filter.filterConfiguration
    +
    filter.filterConfiguration
    @@ -68,7 +68,7 @@
    filter.filterConfiguration
    -
    filter.filterConfiguration.category
    +
    filter.filterConfiguration.category
    @@ -101,7 +101,7 @@
    filter.filterConfiguration.category
    ▢ Vanilla ▢ Strawberry -
    filter.filterConfiguration.time
    +
    filter.filterConfiguration.time
    @@ -139,7 +139,7 @@
    filter.filterConfiguration.time

    Of all time restrictions, at most one can be selected at any time. The produced options are selectable by radio buttons.

    -
    filter.filterConfiguration.time.options
    +
    filter.filterConfiguration.time.options
    @@ -166,7 +166,7 @@
    filter.filterConfiguration.time.options
    ◯ Last 7 days

    In 'days' mode, the selections will always include full days, and additionally the current day. Due to this, the time frame of "last 7 days" is actually 8*24h long. This seems unexpected at first, but follows intuition – if it's Monday and a user filters to the "last seven days", they would expect to fully see last week's Monday, but also features from that day's morning.

    -
    filter.filterConfiguration.time.freeSelection
    +
    filter.filterConfiguration.time.freeSelection
    @@ -193,7 +193,7 @@
    filter.filterConfiguration.time.freeSelection
    From ▒▒▒▒▒▒▒▒▒▒▒ // clicking input opens a selector restricted *until* today To ▇▇▇▇▇▇▇▇▇▇▇ // clicking input opens a selector restricted *until* today -

    Example configuration

    +

    Example configuration

    {
       filter: {
         layers: {
    diff --git a/docs/meldemichel/plugin-fullscreen.html b/docs/meldemichel/plugin-fullscreen.html
    index 870c17b34..99bed0368 100644
    --- a/docs/meldemichel/plugin-fullscreen.html
    +++ b/docs/meldemichel/plugin-fullscreen.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Fullscreen

    -

    Scope

    +

    Fullscreen

    +

    Scope

    The fullscreen plugin allows viewing the map in fullscreen mode. It relies solely on the HTML Fullscreen API, where you can also find more about browser support.

    -

    Configuration

    -

    fullscreen

    +

    Configuration

    +

    fullscreen

    @@ -49,8 +49,8 @@

    fullscreen

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/fullscreen/isInFullscreen', (isInFullscreen) => {
       /* Your code. */
     })
    diff --git a/docs/meldemichel/plugin-geo-location.html b/docs/meldemichel/plugin-geo-location.html
    index 6bd06c344..7fb526ce3 100644
    --- a/docs/meldemichel/plugin-geo-location.html
    +++ b/docs/meldemichel/plugin-geo-location.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    GeoLocation

    -

    Scope

    +

    GeoLocation

    +

    Scope

    The GeoLocation plugin is responsible for collecting and displaying a user's GPS location. It is shown as a crosshair mark on the map. The tracking can be triggered initially on startup or via a button. This behavior can be controlled by setting checkLocationInitially to either true or false. When a users denies the location tracking, the button for this plugin gets disabled.

    -

    Configuration

    -

    geoLocation

    +

    Configuration

    +

    geoLocation

    @@ -81,7 +81,7 @@

    geoLocation

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Example configuration

    +

    Example configuration

    {
       "geoLocation": {
         "checkLocationInitially": true,
    @@ -89,8 +89,8 @@ 

    Example configuration

    } }
    -

    Store

    -

    State

    +

    Store

    +

    State

    If the access to an users location has been granted, the coordinates get stored in the position state value. This value can be subscribed through the path 'plugin/geoLocation/position'.

    map.subscribe('plugin/geoLocation/position', (position) => {
       /* Your code here */
    diff --git a/docs/meldemichel/plugin-gfi.html b/docs/meldemichel/plugin-gfi.html
    index 1f3f4586c..99823b974 100644
    --- a/docs/meldemichel/plugin-gfi.html
    +++ b/docs/meldemichel/plugin-gfi.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    GFI

    -

    Scope

    +

    GFI

    +

    Scope

    The GFI plugin can be used to fetch and optionally display GFI (GetFeatureInfo) from WMS and WFS services as well as layers based on GeoJSON files. In a first step, the information is stored in the VueX store to allow for easy access. Display is optional and quite obstructive within the map client.

    ⚠️ The display feature is currently not meant for production. Please use data bindings for display to avoid obstructing the map client.

    -

    Configuration

    -

    gfi

    +

    Configuration

    +

    gfi

    @@ -92,7 +92,7 @@

    gfi

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    gfi.gfiLayerConfiguration
    +
    gfi.gfiLayerConfiguration
    @@ -156,7 +156,7 @@
    gfi.gfiLayerConfiguration
    -
    gfi.customHighlightStyle
    +
    gfi.customHighlightStyle
    @@ -178,7 +178,7 @@
    gfi.customHighlightStyle
    -
    gfi.featureList
    +
    gfi.featureList
    @@ -210,7 +210,7 @@
    gfi.featureList
    -

    Example configuration

    +

    Example configuration

    layers: {
       [serviceId]: {
         geometry: true,
    @@ -235,8 +235,8 @@ 

    Example configuration

    }, },
    -

    Store

    -

    State

    +

    Store

    +

    State

    If a successful query has been sent and a response has been received, the result will be saved in the store and can be subscribed through the path 'plugin/gfi/featureInformation'. If, however, a query for a layer fails, a Symbol containing the error will be saved in the store instead to indicate the error.

    The exact value of featureInformation may vary wildly depending on the service used, but is always given as json representation here.

    map.subscribe('plugin/gfi/featureInformation', (featureInformation) => {
    diff --git a/docs/meldemichel/plugin-icon-menu.html b/docs/meldemichel/plugin-icon-menu.html
    index aa7616687..c376bb04b 100644
    --- a/docs/meldemichel/plugin-icon-menu.html
    +++ b/docs/meldemichel/plugin-icon-menu.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    IconMenu

    +

    IconMenu

    The IconMenu offers an icon-button based menu to open various functionality as cards. This way, obstructive UI can be hidden until the user desires to open it. Please use carefully – users may have issues finding process-relevant buttons/interactions if you hide them here.
    Currently, the IconMenu should only be rendered with layoutTag set to NineLayoutTag.TOP_RIGHT.

    -

    Scope

    +

    Scope

    It is meant for additional information/functionality (legend, other layers) or power users in non-public clients.

    Please note that the average user has never seen the client before and just wants to get done with it, not learn a map client.

    -

    Configuration

    +

    Configuration

    ⚠️ This plugin can't be configured with the mapConfiguration, but is configured during client construction. Currently, no way exists to add plugins to it after the build took place.

    @@ -60,7 +60,7 @@

    Configuration

    ], }
    -

    menus

    +

    When landscape mode is active the IconMenu is oriented horizontally. Currently, the IconMenu works fine only if there is not more than one row of Icons in landscape mode.

    diff --git a/docs/meldemichel/plugin-layer-chooser.html b/docs/meldemichel/plugin-layer-chooser.html index 3fbf04a0f..4d6453bfc 100644 --- a/docs/meldemichel/plugin-layer-chooser.html +++ b/docs/meldemichel/plugin-layer-chooser.html @@ -22,12 +22,12 @@
    -

    LayerChooser

    +

    LayerChooser

    The tool offers layer selection to the user.

    -

    Scope

    +

    Scope

    The LayerChooser offers an additive (usually Overlays, technically named with type: 'mask') and an exclusive (usually background maps, type: 'background') selection of layers to the users.

    Order of layers within a layer is currently always as initially configured.

    -

    Configuration

    +

    Configuration

    The tool does not require any configuration for itself, but is based on the mapConfiguration.layers array. It will infer its options from there, and change layer visibility and availability depending on minZoom and maxZoom.

    Each object in mapConfiguration.layers array fits this definition:

    @@ -82,7 +82,7 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    mapConfiguration.layers.options

    +

    mapConfiguration.layers.options

    An option wheel will appear in the layer chooser that allows opening a sub-menu with configured configuration options for the end user.

    @@ -100,7 +100,7 @@

    mapConfiguration.layers.options

    -

    mapConfiguration.layers.options.layers

    +

    mapConfiguration.layers.options.layers

    This field is named like this to match the OGC specification for their name; that is, layers have layers that may have layers that may have layers, and so on. However, only the first level (a layer's layers) is currently implemented.

    diff --git a/docs/meldemichel/plugin-loading-indicator.html b/docs/meldemichel/plugin-loading-indicator.html index 3e12ffc31..10ae7ff9f 100644 --- a/docs/meldemichel/plugin-loading-indicator.html +++ b/docs/meldemichel/plugin-loading-indicator.html @@ -22,13 +22,13 @@
    -

    LoadingIndicator

    -

    Scope

    +

    LoadingIndicator

    +

    Scope

    A generic loading indicator that may be used by any plugin or outside procedure to indicate loading.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    Mutations

    +

    Store

    +

    Mutations

    // show loading indicator
     map.$store.commit('plugin/loadingIndicator/addLoadingKey', key)
     // hide loading indicator
    @@ -37,7 +37,7 @@ 

    Mutations

    Loading indicator example

    The key must be unique and is kept track of via a Set. It can't be added multiple times, and removing it once always removes it altogether. It is advised to use a key like {my-plugin-or-application-name}-{procedure-name} to avoid name conflicts. The LoadingIndicator will usually be used for asynchronous code.

    As such, always call removeLoadingKey in the finally section of your code to prevent hanging loading indicators.

    -

    Getters

    +

    Getters

    You may desire to listen to whether the loader is currently being shown.

    diff --git a/docs/meldemichel/plugin-pins.html b/docs/meldemichel/plugin-pins.html index 1985b16de..2c36045af 100644 --- a/docs/meldemichel/plugin-pins.html +++ b/docs/meldemichel/plugin-pins.html @@ -22,12 +22,12 @@
    -

    Pins

    -

    Scope

    +

    Pins

    +

    Scope

    The pins plugin handles marking locations. Embedding processes can then use that coordinate for further steps. The plugin may react to other plugins, especially address searches.

    -

    Configuration

    +

    Configuration

    The usage of displayComponent has no influence on the creation of Pins on the Map if this plugin is being used.

    -

    pins

    +

    pins

    @@ -84,7 +84,7 @@

    pins

    -

    pins.appearOnClick

    +

    pins.appearOnClick

    @@ -106,7 +106,7 @@

    pins.appearOnClick

    -

    pins.initial

    +

    pins.initial

    @@ -133,7 +133,7 @@

    pins.initial

    -

    pins.style

    +

    pins.style

    @@ -155,8 +155,8 @@

    pins.style

    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/pins/transformedCoordinate', (pinCoordinate) => {
       /* Your Code. */
     })
    diff --git a/docs/meldemichel/plugin-reverse-geocoder.html b/docs/meldemichel/plugin-reverse-geocoder.html
    index ba1db2ce2..855c2e77a 100644
    --- a/docs/meldemichel/plugin-reverse-geocoder.html
    +++ b/docs/meldemichel/plugin-reverse-geocoder.html
    @@ -22,12 +22,12 @@
     
     
       
    -

    Reverse Geocoder

    -

    Scope

    +

    Reverse Geocoder

    +

    Scope

    Reverse Geocoder Plugin that turns coordinates into addresses via a WPS. It does not offer any UI by itself.

    This module has been written for the HH WPS service. The return format is custom and no other WPS are currently supported. Please mind this when trying to use this plugin with any other WPS. For usage with other WPS, those must either fit the HH WPS, or a generalization of this plugin is required.

    -

    Configuration

    -

    reverseGeocoder

    +

    Configuration

    +

    reverseGeocoder

    @@ -69,9 +69,9 @@

    reverseGeocoder

    -

    Store

    +

    Store

    The ReverseGeocoder plugin does not hold any state.

    -

    Actions

    +

    Actions

    // result contains the resolved address (exact format depends on WPS)
     const result = await map.$store.dispatch(
       'plugin/reverseGeocoder/reverseGeocode',
    diff --git a/docs/meldemichel/plugin-scale.html b/docs/meldemichel/plugin-scale.html
    index bd3861294..55070bb6e 100644
    --- a/docs/meldemichel/plugin-scale.html
    +++ b/docs/meldemichel/plugin-scale.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    Scale

    +

    Scale

    ⚠ The Scale plugin is currently meant for passive usage only. It's API has not yet been finally defined, and is subject to change without further notice.

    -

    Scope

    +

    Scope

    The scale plugin shows the current map resolution as relative scale (1:x) and/or absolute scale (a drawn line has length x units).

    -

    Configuration

    -

    scale

    +

    Configuration

    +

    scale

    diff --git a/docs/meldemichel/plugin-toast.html b/docs/meldemichel/plugin-toast.html index a85b9e5a5..2b3505c04 100644 --- a/docs/meldemichel/plugin-toast.html +++ b/docs/meldemichel/plugin-toast.html @@ -22,12 +22,12 @@
    -

    Toast

    -

    Scope

    +

    Toast

    +

    Scope

    The toast plugin offers global functionality to display text messages to the user. These are the classic success, warning, info, and error messages, helping to understand what's going on or why something happened.

    -

    Configuration

    +

    Configuration

    Please check the vuetify documentation to override the success, warning, info, or errors colors in general. To affect only this plugin, the following configuration parameters can be added to either the plugin instantiation or the mapConfiguration:

    -

    toast

    +

    toast

    @@ -60,7 +60,7 @@

    toast

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    toast.toastStyle

    +

    toast.toastStyle

    @@ -82,12 +82,12 @@

    toast.toastStyle

    -

    Store

    -

    Actions

    +

    Store

    +

    Actions

    New entries are made via action. They are either dismissed after a timeout or by user interaction.

    map.$store.dispatch('plugin/toast/addToast', payload)
     
    -

    Payload structure

    +

    Payload structure

    @@ -124,7 +124,7 @@

    Payload structure

    -

    Usage example

    +

    Usage example

    map.$store.dispatch('plugin/toast/addToast', {
       type: 'warning',
       text: 'Wrong hammer for screw.',
    diff --git a/docs/meldemichel/plugin-zoom.html b/docs/meldemichel/plugin-zoom.html
    index 2a9da01bd..42aaab204 100644
    --- a/docs/meldemichel/plugin-zoom.html
    +++ b/docs/meldemichel/plugin-zoom.html
    @@ -22,10 +22,10 @@
     
     
       
    -

    Zoom

    -

    Scope

    +

    Zoom

    +

    Scope

    The Zoom plugin offers functionality regarding map zooming.

    -

    Configuration

    +

    Configuration

    The Zoom plugin offers a plus/minus button, and will adjust itself to the map's zoom settings on initialization.
    It can be configured as followed.

    @@ -55,8 +55,8 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    The map's zoom level can be listened to.

    @@ -88,7 +88,7 @@

    State

    /* This code is called on any zoomLevel update. */ }) -

    Getters

    +

    Getters

    @@ -117,7 +117,7 @@

    Getters

    } ) -

    Actions

    +

    Actions

    The zoomLevel can be set programmatically.

    map.$store.dispatch('plugin/zoom/setZoomLevel', zoomLevelNumber)
     map.$store.dispatch('plugin/zoom/increaseZoomLevel')
    diff --git a/docs/snowbox/client-snowbox.html b/docs/snowbox/client-snowbox.html
    index d6e83fb8c..d15bc2513 100644
    --- a/docs/snowbox/client-snowbox.html
    +++ b/docs/snowbox/client-snowbox.html
    @@ -22,7 +22,7 @@
     
     
       
    -

    Snowbox API Documentation

    +

    Snowbox API Documentation

    This is an API file that is used as part of the generated documentation. It will appear as main document in the snowbox's documentation.

    If the snowbox implemented any own features that are not derived from either core of plugins, this would be the place to document them. However, since that's not the case, it only features this introduction text and the link list below.

    diff --git a/docs/snowbox/core.html b/docs/snowbox/core.html index 30ed9bbdf..aa70cc755 100644 --- a/docs/snowbox/core.html +++ b/docs/snowbox/core.html @@ -22,8 +22,8 @@
    -

    Core

    -

    Scope

    +

    Core

    +

    Scope

    The client's core is the base package to create clients in the POLAR environment.

    It offers this functionality:

      @@ -31,15 +31,15 @@

      Scope

    • @masterportal/masterportalapi functionality
    • Localization mechanism
    -

    Interaction

    +

    Interaction

    If a client is rendered as part of another page, the zoom and drag-pan behaviour is different to if the client is rendered as complete page.
    If it's part of another page, drag-panning on mobile devices is only usable if at least two fingers are being used while on desktop clients the user can only zoom if using the respective platform modifier key (e.g. CTRL).

    It is important to note that the behaviour will be desktop-like on larger touchscreen devices (e.g. tablets).

    -

    Initialization / Configuration

    +

    Initialization / Configuration

    It depends on the client how exactly the initialization will take place for the embedding programmer. However, the core mechanism remains the same.

    The exported default object is an extended masterportalAPI, adding the addPlugins and extending the createMap functions. For masterportalAPI details, see their repository.

    To be able to see the map in production mode, the imported stylesheet has to have the property data-polar. The value can be chosen arbitrarily. ⚠️ Deprecated. The new field 'stylePath' should be used instead.

    -

    addPlugins

    +

    addPlugins

    Before instantiating the map, all required plugins have to be added. Depending on how you use POLAR, this may already have been done. Ready-made clients (that is, packages prefixed @polar/client-) come with plugins prepared. You may add further plugins or proceed with createMap.

    In case you're integrating new plugins, call addPlugins with an array of instances.

    client.addPlugins([Plugin({ pluginConfig })])
    @@ -55,7 +55,7 @@ 

    addPlugins

    })

    If the storeModule features a setupModule action, it will be executed automatically after initialization.

    -

    createMap

    +

    createMap

    The map is created by calling the createMap method. Depending on how you use POLAR, this may already have been done, as some clients come as ready-made standalone HTML pages that do this for you.

    MapClient.createMap({
       // arbitrary id, must point to a div
    @@ -66,7 +66,7 @@ 

    createMap

    /* Your Code, e.g. for setting up callbacks. */ })
    -

    mapConfiguration

    +

    mapConfiguration

    The mapConfiguration allows controlling many client instance details.

    @@ -124,7 +124,7 @@

    mapConfiguration

    -
    mapConfiguration.LanguageOption
    +
    mapConfiguration.LanguageOption

    A language option is an object consisting of a type (its language key) and the i18next resource definition. You may e.g. decide that the texts offered in the LayerChooser do not fit the style of your client, or that they could be more precise in your situation since you're only using very specific overlays.

    An example for a LanguageOption array usable in createMap is this array:

    const languageOptions: LanguageOption[] = [
    @@ -151,7 +151,7 @@ 
    mapConfiguration.LanguageOption
    ]

    To figure out the name of the locales to override, inspect the matching plugin in GitHub's file browser. In packages/plugins, open the plugin you desire to override. Each plugin's src folder contains a language.ts listing all used locale keys with appropriate nesting.

    -
    mapConfiguration.extendedMasterportalapiMarkers
    +
    mapConfiguration.extendedMasterportalapiMarkers
    @@ -193,7 +193,7 @@
    mapConfiguration.extendedMasterportalapiMarkers
    -
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    +
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    @@ -281,7 +281,7 @@
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    -
    mapConfiguration.LayerConf
    +
    mapConfiguration.LayerConf

    The layer configuration (or: service register) is read by the masterportalAPI. The full definition can be read here.

    However, not all listed services have been implemented in the masterportalAPI yet, and no documentation regarding implemented properties exists there yet.

    Whitelisted and confirmed parameters include:

    @@ -289,7 +289,7 @@
    mapConfiguration.LayerConf
  • WMS: id, name, url, typ, format, version, transparent, layers, STYLES
  • WFS: id, name, url, typ, outputFormat, version, featureType
  • -
    Example services register
    +
    Example services register
    [
       {
         "id": "my-wfs-id",
    @@ -313,7 +313,7 @@ 
    Example services register
    ]

    Since this is the base for many functions, the service ID set in this is used to reference map material in many places of the map client.

    -
    <...masterportalAPI.fields>
    +
    <...masterportalAPI.fields>

    The <...masterportalAPI.fields> means that any masterportalAPI field may also be used here directly. The most common fields are the following ones; for more, see masterportalAPI.

    @@ -356,10 +356,10 @@
    <...masterportalAPI.fields>
    -
    <plugin.fields>
    -

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    +
    <plugin.fields>
    +

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    On how to configure a plugin, see the respective plugin. The configuration is given in the mapConfiguration object by the plugin's name as specified in its respective documentation.

    -
    Global Plugin Parameters
    +
    Global Plugin Parameters

    Most plugins honor this additional field.

    @@ -377,7 +377,7 @@
    Global Plugin Parameters
    -
    Example Configuration
    +
    Example Configuration

    For example, a @polar/plugin-address-search plugin can be configured like this:

    {
       addressSearch: {
    @@ -387,7 +387,7 @@ 
    Example Configuration
    } }
    -
    mapConfiguration.vuetify
    +
    mapConfiguration.vuetify

    These fields let you e.g. specify a Vuetify-Theme. For more options, refer to the official vuetify documentation.

    Additionally to the regular fields, primaryContrast and secondaryContrast are interpreted. They serve as contrast colors to their respective fields and are used for e.g. button icons.

    {
    @@ -403,7 +403,7 @@ 
    mapConfiguration.vuetify
    } }
    -

    Store

    +

    Store

    The core module features a vuex root store that all plugin vuex modules are plugged into. However, the root contents are only relevant to plugins. It is accessible with map.$store, and can be used as a starting point for plugin access.

    To ease use, the map instance also features a subscribe method that will register a watcher to any state field. Please mind that only documented paths should be used, and all others are subject to change without notice.

    // state subscription – listening to data held by the map client
    diff --git a/docs/snowbox/lib-custom-types.html b/docs/snowbox/lib-custom-types.html
    index fc8188e5f..775c6e0a3 100644
    --- a/docs/snowbox/lib-custom-types.html
    +++ b/docs/snowbox/lib-custom-types.html
    @@ -22,7 +22,7 @@
     
     
       
    -

    Custom Types

    +

    Custom Types

    This is a custom type library for overarching types. They can be used both in core, plugin, and lib packages to develop a common custom package-global type system.

    Keep it as small as possible and sort types where they belong, whenever possible.

    diff --git a/docs/snowbox/plugin-address-search.html b/docs/snowbox/plugin-address-search.html index 8526727fd..91b3975a9 100644 --- a/docs/snowbox/plugin-address-search.html +++ b/docs/snowbox/plugin-address-search.html @@ -22,8 +22,8 @@
    -

    AddressSearch

    -

    Scope

    +

    AddressSearch

    +

    Scope

    The AddressSearch plugin allows users to search for an address. If multiple addresses are returned by services, the user is prompted to select a result.

    The plugin saves the chosen information as GeoJSON to the store so that following procedures may grab it or so that other plugins may use it.

    Currently supported services:

    @@ -32,8 +32,8 @@

    Scope

  • WFS
  • Some gazetteers/WFS-G (please request a check or try yourself, not 100% done)
  • -

    Configuration

    -

    addressSearch

    +

    Configuration

    +

    addressSearch

    The configuration allows defining and grouping services. Grouped services can be requested in a search at the same time, and one group of searches can be active at a time. When multiple searches are in a group, they may be extended with category information to make the results easier to browse.

    It is advised to either use one-search-per-group or all services in a singular group to avoid an overly complex UI. Mixed configurations may be required for more complex search requirements.

    In categoryProperties and groupProperties, id strings called groupId and categoryId are used. These are arbitrary strings you can introduce and reuse to group or categorize elements together. Regarding what groups and categories are, see further below.

    @@ -104,7 +104,7 @@

    addressSearch

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    addressSearch.searchMethodsObject

    +

    addressSearch.searchMethodsObject

    @@ -156,7 +156,7 @@

    addressSearch.searchMethodsObject

    -

    addressSearch.customSearchMethod

    +

    addressSearch.customSearchMethod

    This is a function with the following signature:

    (
       // should be used to actually abort request
    @@ -170,7 +170,7 @@ 

    addressSearch.customSearchMethod

    ) => Promise<FeatureCollection> | never

    With this, arbitrary services can be supported.

    -

    addressSearch.customSelectFunction

    +

    addressSearch.customSelectFunction

    This is a function with the following signature:

    ({
       // VueX context object
    @@ -182,7 +182,7 @@ 

    addressSearch.customSelectFunction

    }) => void

    With this, arbitrary click results can be supported. Please mind that undocumented mutations and actions fired in such a function are subject to change without further notice.

    -

    addressSearch.groupProperties

    +

    addressSearch.groupProperties

    @@ -219,7 +219,7 @@

    addressSearch.groupProperties

    -

    addressSearch.categoryProperties

    +

    addressSearch.categoryProperties

    @@ -236,7 +236,7 @@

    addressSearch.categoryProperties

    -
    addressSearch.searchMethodsObject.queryParameters (type:common)
    +
    addressSearch.searchMethodsObject.queryParameters (type:common)

    These fields are interpreted by all implemented services.

    @@ -254,7 +254,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:common)
    -
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    +
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    @@ -317,7 +317,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
  • WFS 2.0.0 {wildCard: "%", singleChar: "*", escapeChar: "\"}
  • WFS 1.0.0 {wildCard: "*", singleChar: "*", escape: "\"}
  • -
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    +
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)

    ⚠️ "gazetteer" is deprecated. Please use "mpapi" instead.

    @@ -362,7 +362,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    -
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)
    +
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    Please mind that this requires a configured backend. A WFS's Stored Query is requested with predefined parameters using the masterportalApi. This implementation is meant for e.g. https://geodienste.hamburg.de/HH_WFS_GAGES, but works with other WFS configured in the same manner.

    @@ -408,14 +408,14 @@
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    While all fields are optional, configuring none of them will yield undefined behaviour. At least one search instruction should be set to true.

    -
    addressSearch.searchMethodsObject.queryParameters (type:bkg)
    +
    addressSearch.searchMethodsObject.queryParameters (type:bkg)

    In BKG mode, queryParameter's key-value pairs are used in the service query. E.g. {filter: { bundesland: 'Bremen' }} results in the GET request URL having &filter=bundesland:Bremen as suffix.

    For more options, please check the official documentation regarding what query parameters are interpreted.

    Additionally, it is possible to configure the parameters accesstoken (Authorization) or apiKey (custom header X-Api-Key) to send the described headers to the search service for authentication purposes. Note that this changes the request to be non-simple. To be able to use the parameters, the request has to be sent in cors mode and has to support preflight request OPTIONS.

    -

    Store

    -

    Mutations

    -

    setSelectedGroupName

    +

    Store

    +

    Mutations

    +

    setSelectedGroupName

    This can be used to change the selected search group by name.

    map.$store.commit(
       'plugin/addressSearch/setSelectedGroupName',
    @@ -423,8 +423,8 @@ 

    setSelectedGroupName

    )

    Please mind that programmatically changing the search group will not trigger a search, unlike a search group change by the user. If you need a search after change, consider the search action.

    -

    Actions

    -

    search

    +

    Actions

    +

    This is a purely programmatical search method. It is not used by user input.

    map.$store.dispatch('plugin/addressSearch/search', {
       input: 'Bahnhofsstraße 12',
    @@ -453,7 +453,7 @@ 

    search

    -

    State

    +

    State

    map.subscribe('plugin/addressSearch/chosenAddress', (chosenAddress) => {
       /* Your code. */
     })
    diff --git a/docs/snowbox/plugin-attributions.html b/docs/snowbox/plugin-attributions.html
    index 10f911467..10c1b500a 100644
    --- a/docs/snowbox/plugin-attributions.html
    +++ b/docs/snowbox/plugin-attributions.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Attributions

    -

    Scope

    +

    Attributions

    +

    Scope

    This plugin shows attributions (that is, legal information) regarding copyrights and sources of the currently visible layers.

    -

    Configuration

    -

    attributions

    +

    Configuration

    +

    attributions

    All parameters are optional. However, setting neither layerAttributions nor staticAttributions results in an empty window.

    @@ -70,7 +70,7 @@

    attributions

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    attributions.layerAttribution

    +

    attributions.layerAttribution

    diff --git a/docs/snowbox/plugin-draw.html b/docs/snowbox/plugin-draw.html index df188e8ef..c3c25c62c 100644 --- a/docs/snowbox/plugin-draw.html +++ b/docs/snowbox/plugin-draw.html @@ -22,8 +22,8 @@
    -

    Draw

    -

    Scope

    +

    Draw

    +

    Scope

    The draw plugin allows users to draw features on the map. Drawn features may be edited and deleted.

    Currently supported OpenLayers geometry types:

      @@ -33,15 +33,15 @@

      Scope

    • 'Polygon'

    Also, 'Text' is supported which is modeled as an OpenLayers 'Point'. This is no default feature, so it must be specified in the configuration to use it.

    -

    User instructions for Text Mode

    +

    User instructions for Text Mode

    The interaction with text features is not intuitive, which is why the text feature should come with instructions for the users:

    -

    Edit

    +

    Edit

    To edit the text or the placement of the text feature, the user must click on the center of the text to select the point geometry below it. After selecting it, the user can move the point by keeping the left mouse button pressed, or edit the text in the input field that opens with selecting the feature. If more than one text size is specified in the configuration, the user can change the text size with a slider.

    -

    Delete

    +

    Delete

    To delete the text, the user must either click on the point at the center of the text or use CTRL + left mouse button to open a box over all features that he or she wants to delete.

    -

    Configuration

    +

    Configuration

    The styling of the drawn features can be configured to overwrite the default ol-style. Configuration is oriented around the OpenLayers styles.

    -

    draw

    +

    draw

    @@ -69,7 +69,7 @@

    draw

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    draw.textStyle
    +
    draw.textStyle
    @@ -91,7 +91,7 @@
    draw.textStyle
    -
    draw.textStyle.font
    +
    draw.textStyle.font
    @@ -113,7 +113,7 @@
    draw.textStyle.font
    -

    draw.style (by example)

    +

    draw.style (by example)

    The @masterportal/masterportalapi has vectorStyles in development. As soon as that's done, we shall use its styling syntax and methods.

    For the time being, please use this example as a rough reference as to what can currently be done.

    {
    @@ -141,14 +141,14 @@ 

    draw.style (by example)

    } }
    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/draw/featureCollection', (featureCollection) => {
       /* Your code. */
     })
     

    The returned featureCollection is a GeoJSON FeatureCollection. It includes all drawn features and updates on changes.

    -

    Actions

    +

    Actions

    map.$store.dispatch('plugin/draw/addFeatures', {
       geoJSON: {
         type: 'FeatureCollection',
    diff --git a/docs/snowbox/plugin-export.html b/docs/snowbox/plugin-export.html
    index 544acedcb..5c16361ef 100644
    --- a/docs/snowbox/plugin-export.html
    +++ b/docs/snowbox/plugin-export.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Export

    -

    Scope

    +

    Export

    +

    Scope

    The Export plugin offers users to download the currently visible map canvas in a variety of file formats and by a variety of methods.

    -

    Configuration

    -

    export

    +

    Configuration

    +

    export

    @@ -60,12 +60,12 @@

    export

    To remove user control, add displayComponent: false to the configuration and use the following interactions.

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Actions

    +

    Actions

    To programmatically trigger a "screenshot", use this action.

    // type is 'Png', 'Jpg', or 'Pdf'
     map.$store.dispatch('plugin/export/exportAs', type)
     
    -

    State

    +

    State

    This shows how a callback can be used to show the exported data in a suitable html element. The value of the screenshot variable is a base64-encoded string.

    const someElement = // ... however you retrieve your html element
       map.subscribe('plugin/export/exportedMap', (screenshot) =>
    diff --git a/docs/snowbox/plugin-fullscreen.html b/docs/snowbox/plugin-fullscreen.html
    index ef67a60a5..0d00873d8 100644
    --- a/docs/snowbox/plugin-fullscreen.html
    +++ b/docs/snowbox/plugin-fullscreen.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Fullscreen

    -

    Scope

    +

    Fullscreen

    +

    Scope

    The fullscreen plugin allows viewing the map in fullscreen mode. It relies solely on the HTML Fullscreen API, where you can also find more about browser support.

    -

    Configuration

    -

    fullscreen

    +

    Configuration

    +

    fullscreen

    @@ -49,8 +49,8 @@

    fullscreen

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/fullscreen/isInFullscreen', (isInFullscreen) => {
       /* Your code. */
     })
    diff --git a/docs/snowbox/plugin-geo-location.html b/docs/snowbox/plugin-geo-location.html
    index 6a482b2ab..c5cad3201 100644
    --- a/docs/snowbox/plugin-geo-location.html
    +++ b/docs/snowbox/plugin-geo-location.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    GeoLocation

    -

    Scope

    +

    GeoLocation

    +

    Scope

    The GeoLocation plugin is responsible for collecting and displaying a user's GPS location. It is shown as a crosshair mark on the map. The tracking can be triggered initially on startup or via a button. This behavior can be controlled by setting checkLocationInitially to either true or false. When a users denies the location tracking, the button for this plugin gets disabled.

    -

    Configuration

    -

    geoLocation

    +

    Configuration

    +

    geoLocation

    @@ -81,7 +81,7 @@

    geoLocation

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Example configuration

    +

    Example configuration

    {
       "geoLocation": {
         "checkLocationInitially": true,
    @@ -89,8 +89,8 @@ 

    Example configuration

    } }
    -

    Store

    -

    State

    +

    Store

    +

    State

    If the access to an users location has been granted, the coordinates get stored in the position state value. This value can be subscribed through the path 'plugin/geoLocation/position'.

    map.subscribe('plugin/geoLocation/position', (position) => {
       /* Your code here */
    diff --git a/docs/snowbox/plugin-gfi.html b/docs/snowbox/plugin-gfi.html
    index 542ea566e..21d0d5030 100644
    --- a/docs/snowbox/plugin-gfi.html
    +++ b/docs/snowbox/plugin-gfi.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    GFI

    -

    Scope

    +

    GFI

    +

    Scope

    The GFI plugin can be used to fetch and optionally display GFI (GetFeatureInfo) from WMS and WFS services as well as layers based on GeoJSON files. In a first step, the information is stored in the VueX store to allow for easy access. Display is optional and quite obstructive within the map client.

    ⚠️ The display feature is currently not meant for production. Please use data bindings for display to avoid obstructing the map client.

    -

    Configuration

    -

    gfi

    +

    Configuration

    +

    gfi

    @@ -92,7 +92,7 @@

    gfi

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    gfi.gfiLayerConfiguration
    +
    gfi.gfiLayerConfiguration
    @@ -156,7 +156,7 @@
    gfi.gfiLayerConfiguration
    -
    gfi.customHighlightStyle
    +
    gfi.customHighlightStyle
    @@ -178,7 +178,7 @@
    gfi.customHighlightStyle
    -
    gfi.featureList
    +
    gfi.featureList
    @@ -210,7 +210,7 @@
    gfi.featureList
    -

    Example configuration

    +

    Example configuration

    layers: {
       [serviceId]: {
         geometry: true,
    @@ -235,8 +235,8 @@ 

    Example configuration

    }, },
    -

    Store

    -

    State

    +

    Store

    +

    State

    If a successful query has been sent and a response has been received, the result will be saved in the store and can be subscribed through the path 'plugin/gfi/featureInformation'. If, however, a query for a layer fails, a Symbol containing the error will be saved in the store instead to indicate the error.

    The exact value of featureInformation may vary wildly depending on the service used, but is always given as json representation here.

    map.subscribe('plugin/gfi/featureInformation', (featureInformation) => {
    diff --git a/docs/snowbox/plugin-icon-menu.html b/docs/snowbox/plugin-icon-menu.html
    index dccf342ed..510295a08 100644
    --- a/docs/snowbox/plugin-icon-menu.html
    +++ b/docs/snowbox/plugin-icon-menu.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    IconMenu

    +

    IconMenu

    The IconMenu offers an icon-button based menu to open various functionality as cards. This way, obstructive UI can be hidden until the user desires to open it. Please use carefully – users may have issues finding process-relevant buttons/interactions if you hide them here.
    Currently, the IconMenu should only be rendered with layoutTag set to NineLayoutTag.TOP_RIGHT.

    -

    Scope

    +

    Scope

    It is meant for additional information/functionality (legend, other layers) or power users in non-public clients.

    Please note that the average user has never seen the client before and just wants to get done with it, not learn a map client.

    -

    Configuration

    +

    Configuration

    ⚠️ This plugin can't be configured with the mapConfiguration, but is configured during client construction. Currently, no way exists to add plugins to it after the build took place.

    @@ -60,7 +60,7 @@

    Configuration

    ], }
    -

    menus

    +

    When landscape mode is active the IconMenu is oriented horizontally. Currently, the IconMenu works fine only if there is not more than one row of Icons in landscape mode.

    diff --git a/docs/snowbox/plugin-layer-chooser.html b/docs/snowbox/plugin-layer-chooser.html index 9566e0385..130cccbbf 100644 --- a/docs/snowbox/plugin-layer-chooser.html +++ b/docs/snowbox/plugin-layer-chooser.html @@ -22,12 +22,12 @@
    -

    LayerChooser

    +

    LayerChooser

    The tool offers layer selection to the user.

    -

    Scope

    +

    Scope

    The LayerChooser offers an additive (usually Overlays, technically named with type: 'mask') and an exclusive (usually background maps, type: 'background') selection of layers to the users.

    Order of layers within a layer is currently always as initially configured.

    -

    Configuration

    +

    Configuration

    The tool does not require any configuration for itself, but is based on the mapConfiguration.layers array. It will infer its options from there, and change layer visibility and availability depending on minZoom and maxZoom.

    Each object in mapConfiguration.layers array fits this definition:

    @@ -82,7 +82,7 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    mapConfiguration.layers.options

    +

    mapConfiguration.layers.options

    An option wheel will appear in the layer chooser that allows opening a sub-menu with configured configuration options for the end user.

    @@ -100,7 +100,7 @@

    mapConfiguration.layers.options

    -

    mapConfiguration.layers.options.layers

    +

    mapConfiguration.layers.options.layers

    This field is named like this to match the OGC specification for their name; that is, layers have layers that may have layers that may have layers, and so on. However, only the first level (a layer's layers) is currently implemented.

    diff --git a/docs/snowbox/plugin-legend.html b/docs/snowbox/plugin-legend.html index 1b092f6dd..e51935467 100644 --- a/docs/snowbox/plugin-legend.html +++ b/docs/snowbox/plugin-legend.html @@ -22,9 +22,9 @@
    -

    Legend

    +

    Legend

    The Legend module offers legend images as supplied by OGC services.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    diff --git a/docs/snowbox/plugin-loading-indicator.html b/docs/snowbox/plugin-loading-indicator.html index 703a713fa..ee598c231 100644 --- a/docs/snowbox/plugin-loading-indicator.html +++ b/docs/snowbox/plugin-loading-indicator.html @@ -22,13 +22,13 @@
    -

    LoadingIndicator

    -

    Scope

    +

    LoadingIndicator

    +

    Scope

    A generic loading indicator that may be used by any plugin or outside procedure to indicate loading.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    Mutations

    +

    Store

    +

    Mutations

    // show loading indicator
     map.$store.commit('plugin/loadingIndicator/addLoadingKey', key)
     // hide loading indicator
    @@ -37,7 +37,7 @@ 

    Mutations

    Loading indicator example

    The key must be unique and is kept track of via a Set. It can't be added multiple times, and removing it once always removes it altogether. It is advised to use a key like {my-plugin-or-application-name}-{procedure-name} to avoid name conflicts. The LoadingIndicator will usually be used for asynchronous code.

    As such, always call removeLoadingKey in the finally section of your code to prevent hanging loading indicators.

    -

    Getters

    +

    Getters

    You may desire to listen to whether the loader is currently being shown.

    diff --git a/docs/snowbox/plugin-pins.html b/docs/snowbox/plugin-pins.html index 1985b16de..2c36045af 100644 --- a/docs/snowbox/plugin-pins.html +++ b/docs/snowbox/plugin-pins.html @@ -22,12 +22,12 @@
    -

    Pins

    -

    Scope

    +

    Pins

    +

    Scope

    The pins plugin handles marking locations. Embedding processes can then use that coordinate for further steps. The plugin may react to other plugins, especially address searches.

    -

    Configuration

    +

    Configuration

    The usage of displayComponent has no influence on the creation of Pins on the Map if this plugin is being used.

    -

    pins

    +

    pins

    @@ -84,7 +84,7 @@

    pins

    -

    pins.appearOnClick

    +

    pins.appearOnClick

    @@ -106,7 +106,7 @@

    pins.appearOnClick

    -

    pins.initial

    +

    pins.initial

    @@ -133,7 +133,7 @@

    pins.initial

    -

    pins.style

    +

    pins.style

    @@ -155,8 +155,8 @@

    pins.style

    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/pins/transformedCoordinate', (pinCoordinate) => {
       /* Your Code. */
     })
    diff --git a/docs/snowbox/plugin-reverse-geocoder.html b/docs/snowbox/plugin-reverse-geocoder.html
    index ba1db2ce2..855c2e77a 100644
    --- a/docs/snowbox/plugin-reverse-geocoder.html
    +++ b/docs/snowbox/plugin-reverse-geocoder.html
    @@ -22,12 +22,12 @@
     
     
       
    -

    Reverse Geocoder

    -

    Scope

    +

    Reverse Geocoder

    +

    Scope

    Reverse Geocoder Plugin that turns coordinates into addresses via a WPS. It does not offer any UI by itself.

    This module has been written for the HH WPS service. The return format is custom and no other WPS are currently supported. Please mind this when trying to use this plugin with any other WPS. For usage with other WPS, those must either fit the HH WPS, or a generalization of this plugin is required.

    -

    Configuration

    -

    reverseGeocoder

    +

    Configuration

    +

    reverseGeocoder

    @@ -69,9 +69,9 @@

    reverseGeocoder

    -

    Store

    +

    Store

    The ReverseGeocoder plugin does not hold any state.

    -

    Actions

    +

    Actions

    // result contains the resolved address (exact format depends on WPS)
     const result = await map.$store.dispatch(
       'plugin/reverseGeocoder/reverseGeocode',
    diff --git a/docs/snowbox/plugin-scale.html b/docs/snowbox/plugin-scale.html
    index a818a819a..8f74cbf29 100644
    --- a/docs/snowbox/plugin-scale.html
    +++ b/docs/snowbox/plugin-scale.html
    @@ -22,14 +22,14 @@
     
     
       
    -

    Scale

    +

    Scale

    ⚠ The Scale plugin is currently meant for passive usage only. It's API has not yet been finally defined, and is subject to change without further notice.

    -

    Scope

    +

    Scope

    The scale plugin shows the current map resolution as relative scale (1:x) and/or absolute scale (a drawn line has length x units).

    -

    Configuration

    -

    scale

    +

    Configuration

    +

    scale

    diff --git a/docs/snowbox/plugin-toast.html b/docs/snowbox/plugin-toast.html index e65f74762..8575fb2ce 100644 --- a/docs/snowbox/plugin-toast.html +++ b/docs/snowbox/plugin-toast.html @@ -22,12 +22,12 @@
    -

    Toast

    -

    Scope

    +

    Toast

    +

    Scope

    The toast plugin offers global functionality to display text messages to the user. These are the classic success, warning, info, and error messages, helping to understand what's going on or why something happened.

    -

    Configuration

    +

    Configuration

    Please check the vuetify documentation to override the success, warning, info, or errors colors in general. To affect only this plugin, the following configuration parameters can be added to either the plugin instantiation or the mapConfiguration:

    -

    toast

    +

    toast

    @@ -60,7 +60,7 @@

    toast

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    toast.toastStyle

    +

    toast.toastStyle

    @@ -82,12 +82,12 @@

    toast.toastStyle

    -

    Store

    -

    Actions

    +

    Store

    +

    Actions

    New entries are made via action. They are either dismissed after a timeout or by user interaction.

    map.$store.dispatch('plugin/toast/addToast', payload)
     
    -

    Payload structure

    +

    Payload structure

    @@ -124,7 +124,7 @@

    Payload structure

    -

    Usage example

    +

    Usage example

    map.$store.dispatch('plugin/toast/addToast', {
       type: 'warning',
       text: 'Wrong hammer for screw.',
    diff --git a/docs/snowbox/plugin-zoom.html b/docs/snowbox/plugin-zoom.html
    index 6566d72c5..ce5b642ac 100644
    --- a/docs/snowbox/plugin-zoom.html
    +++ b/docs/snowbox/plugin-zoom.html
    @@ -22,10 +22,10 @@
     
     
       
    -

    Zoom

    -

    Scope

    +

    Zoom

    +

    Scope

    The Zoom plugin offers functionality regarding map zooming.

    -

    Configuration

    +

    Configuration

    The Zoom plugin offers a plus/minus button, and will adjust itself to the map's zoom settings on initialization.
    It can be configured as followed.

    @@ -55,8 +55,8 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    The map's zoom level can be listened to.

    @@ -88,7 +88,7 @@

    State

    /* This code is called on any zoomLevel update. */ }) -

    Getters

    +

    Getters

    @@ -117,7 +117,7 @@

    Getters

    } ) -

    Actions

    +

    Actions

    The zoomLevel can be set programmatically.

    map.$store.dispatch('plugin/zoom/setZoomLevel', zoomLevelNumber)
     map.$store.dispatch('plugin/zoom/increaseZoomLevel')
    diff --git a/docs/textLocator/client-textLocator.html b/docs/textLocator/client-textLocator.html
    index 9a353daa2..f04d7e859 100644
    --- a/docs/textLocator/client-textLocator.html
    +++ b/docs/textLocator/client-textLocator.html
    @@ -22,7 +22,7 @@
     
     
       
    -

    TextLocator MapClient API 🗺️ @polar/client-text-locator

    +

    TextLocator MapClient API 🗺️ @polar/client-text-locator

    There is no API to this package; it is not configurable, but delivers a hostable website containing the client in question. All reconfiguration must be done in the source code and requires a new build.

    When configuring before building, please mind that the index.html in the source folder contains configuration parameters that are later bundled.

    diff --git a/docs/textLocator/core.html b/docs/textLocator/core.html index 30ed9bbdf..aa70cc755 100644 --- a/docs/textLocator/core.html +++ b/docs/textLocator/core.html @@ -22,8 +22,8 @@
    -

    Core

    -

    Scope

    +

    Core

    +

    Scope

    The client's core is the base package to create clients in the POLAR environment.

    It offers this functionality:

      @@ -31,15 +31,15 @@

      Scope

    • @masterportal/masterportalapi functionality
    • Localization mechanism
    -

    Interaction

    +

    Interaction

    If a client is rendered as part of another page, the zoom and drag-pan behaviour is different to if the client is rendered as complete page.
    If it's part of another page, drag-panning on mobile devices is only usable if at least two fingers are being used while on desktop clients the user can only zoom if using the respective platform modifier key (e.g. CTRL).

    It is important to note that the behaviour will be desktop-like on larger touchscreen devices (e.g. tablets).

    -

    Initialization / Configuration

    +

    Initialization / Configuration

    It depends on the client how exactly the initialization will take place for the embedding programmer. However, the core mechanism remains the same.

    The exported default object is an extended masterportalAPI, adding the addPlugins and extending the createMap functions. For masterportalAPI details, see their repository.

    To be able to see the map in production mode, the imported stylesheet has to have the property data-polar. The value can be chosen arbitrarily. ⚠️ Deprecated. The new field 'stylePath' should be used instead.

    -

    addPlugins

    +

    addPlugins

    Before instantiating the map, all required plugins have to be added. Depending on how you use POLAR, this may already have been done. Ready-made clients (that is, packages prefixed @polar/client-) come with plugins prepared. You may add further plugins or proceed with createMap.

    In case you're integrating new plugins, call addPlugins with an array of instances.

    client.addPlugins([Plugin({ pluginConfig })])
    @@ -55,7 +55,7 @@ 

    addPlugins

    })

    If the storeModule features a setupModule action, it will be executed automatically after initialization.

    -

    createMap

    +

    createMap

    The map is created by calling the createMap method. Depending on how you use POLAR, this may already have been done, as some clients come as ready-made standalone HTML pages that do this for you.

    MapClient.createMap({
       // arbitrary id, must point to a div
    @@ -66,7 +66,7 @@ 

    createMap

    /* Your Code, e.g. for setting up callbacks. */ })
    -

    mapConfiguration

    +

    mapConfiguration

    The mapConfiguration allows controlling many client instance details.

    @@ -124,7 +124,7 @@

    mapConfiguration

    -
    mapConfiguration.LanguageOption
    +
    mapConfiguration.LanguageOption

    A language option is an object consisting of a type (its language key) and the i18next resource definition. You may e.g. decide that the texts offered in the LayerChooser do not fit the style of your client, or that they could be more precise in your situation since you're only using very specific overlays.

    An example for a LanguageOption array usable in createMap is this array:

    const languageOptions: LanguageOption[] = [
    @@ -151,7 +151,7 @@ 
    mapConfiguration.LanguageOption
    ]

    To figure out the name of the locales to override, inspect the matching plugin in GitHub's file browser. In packages/plugins, open the plugin you desire to override. Each plugin's src folder contains a language.ts listing all used locale keys with appropriate nesting.

    -
    mapConfiguration.extendedMasterportalapiMarkers
    +
    mapConfiguration.extendedMasterportalapiMarkers
    @@ -193,7 +193,7 @@
    mapConfiguration.extendedMasterportalapiMarkers
    -
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    +
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    @@ -281,7 +281,7 @@
    mapConfiguration.extendedMasterportalapiMarkers.MarkerStyle
    -
    mapConfiguration.LayerConf
    +
    mapConfiguration.LayerConf

    The layer configuration (or: service register) is read by the masterportalAPI. The full definition can be read here.

    However, not all listed services have been implemented in the masterportalAPI yet, and no documentation regarding implemented properties exists there yet.

    Whitelisted and confirmed parameters include:

    @@ -289,7 +289,7 @@
    mapConfiguration.LayerConf
  • WMS: id, name, url, typ, format, version, transparent, layers, STYLES
  • WFS: id, name, url, typ, outputFormat, version, featureType
  • -
    Example services register
    +
    Example services register
    [
       {
         "id": "my-wfs-id",
    @@ -313,7 +313,7 @@ 
    Example services register
    ]

    Since this is the base for many functions, the service ID set in this is used to reference map material in many places of the map client.

    -
    <...masterportalAPI.fields>
    +
    <...masterportalAPI.fields>

    The <...masterportalAPI.fields> means that any masterportalAPI field may also be used here directly. The most common fields are the following ones; for more, see masterportalAPI.

    @@ -356,10 +356,10 @@
    <...masterportalAPI.fields>
    -
    <plugin.fields>
    -

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    +
    <plugin.fields>
    +

    Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the addPlugins method and configured through the mapConfiguration object. Each plugin has its own set of fields and options that can be customized.

    On how to configure a plugin, see the respective plugin. The configuration is given in the mapConfiguration object by the plugin's name as specified in its respective documentation.

    -
    Global Plugin Parameters
    +
    Global Plugin Parameters

    Most plugins honor this additional field.

    @@ -377,7 +377,7 @@
    Global Plugin Parameters
    -
    Example Configuration
    +
    Example Configuration

    For example, a @polar/plugin-address-search plugin can be configured like this:

    {
       addressSearch: {
    @@ -387,7 +387,7 @@ 
    Example Configuration
    } }
    -
    mapConfiguration.vuetify
    +
    mapConfiguration.vuetify

    These fields let you e.g. specify a Vuetify-Theme. For more options, refer to the official vuetify documentation.

    Additionally to the regular fields, primaryContrast and secondaryContrast are interpreted. They serve as contrast colors to their respective fields and are used for e.g. button icons.

    {
    @@ -403,7 +403,7 @@ 
    mapConfiguration.vuetify
    } }
    -

    Store

    +

    Store

    The core module features a vuex root store that all plugin vuex modules are plugged into. However, the root contents are only relevant to plugins. It is accessible with map.$store, and can be used as a starting point for plugin access.

    To ease use, the map instance also features a subscribe method that will register a watcher to any state field. Please mind that only documented paths should be used, and all others are subject to change without notice.

    // state subscription – listening to data held by the map client
    diff --git a/docs/textLocator/lib-custom-types.html b/docs/textLocator/lib-custom-types.html
    index fc8188e5f..775c6e0a3 100644
    --- a/docs/textLocator/lib-custom-types.html
    +++ b/docs/textLocator/lib-custom-types.html
    @@ -22,7 +22,7 @@
     
     
       
    -

    Custom Types

    +

    Custom Types

    This is a custom type library for overarching types. They can be used both in core, plugin, and lib packages to develop a common custom package-global type system.

    Keep it as small as possible and sort types where they belong, whenever possible.

    diff --git a/docs/textLocator/lib-tooltip.html b/docs/textLocator/lib-tooltip.html index 48128c3c1..b93940163 100644 --- a/docs/textLocator/lib-tooltip.html +++ b/docs/textLocator/lib-tooltip.html @@ -22,7 +22,7 @@
    -

    tooltip

    +

    tooltip

    Minimal package that provides a div element factory bound to i18next translations. The element can e.g. be used in ol/Overlay.

    import { getTooltip } from '@polar/lib-tooltip'
     
    diff --git a/docs/textLocator/plugin-address-search.html b/docs/textLocator/plugin-address-search.html
    index 8c2074fe9..0d85ba3a2 100644
    --- a/docs/textLocator/plugin-address-search.html
    +++ b/docs/textLocator/plugin-address-search.html
    @@ -22,8 +22,8 @@
     
     
       
    -

    AddressSearch

    -

    Scope

    +

    AddressSearch

    +

    Scope

    The AddressSearch plugin allows users to search for an address. If multiple addresses are returned by services, the user is prompted to select a result.

    The plugin saves the chosen information as GeoJSON to the store so that following procedures may grab it or so that other plugins may use it.

    Currently supported services:

    @@ -32,8 +32,8 @@

    Scope

  • WFS
  • Some gazetteers/WFS-G (please request a check or try yourself, not 100% done)
  • -

    Configuration

    -

    addressSearch

    +

    Configuration

    +

    addressSearch

    The configuration allows defining and grouping services. Grouped services can be requested in a search at the same time, and one group of searches can be active at a time. When multiple searches are in a group, they may be extended with category information to make the results easier to browse.

    It is advised to either use one-search-per-group or all services in a singular group to avoid an overly complex UI. Mixed configurations may be required for more complex search requirements.

    In categoryProperties and groupProperties, id strings called groupId and categoryId are used. These are arbitrary strings you can introduce and reuse to group or categorize elements together. Regarding what groups and categories are, see further below.

    @@ -104,7 +104,7 @@

    addressSearch

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    addressSearch.searchMethodsObject

    +

    addressSearch.searchMethodsObject

    @@ -156,7 +156,7 @@

    addressSearch.searchMethodsObject

    -

    addressSearch.customSearchMethod

    +

    addressSearch.customSearchMethod

    This is a function with the following signature:

    (
       // should be used to actually abort request
    @@ -170,7 +170,7 @@ 

    addressSearch.customSearchMethod

    ) => Promise<FeatureCollection> | never

    With this, arbitrary services can be supported.

    -

    addressSearch.customSelectFunction

    +

    addressSearch.customSelectFunction

    This is a function with the following signature:

    ({
       // VueX context object
    @@ -182,7 +182,7 @@ 

    addressSearch.customSelectFunction

    }) => void

    With this, arbitrary click results can be supported. Please mind that undocumented mutations and actions fired in such a function are subject to change without further notice.

    -

    addressSearch.groupProperties

    +

    addressSearch.groupProperties

    @@ -219,7 +219,7 @@

    addressSearch.groupProperties

    -

    addressSearch.categoryProperties

    +

    addressSearch.categoryProperties

    @@ -236,7 +236,7 @@

    addressSearch.categoryProperties

    -
    addressSearch.searchMethodsObject.queryParameters (type:common)
    +
    addressSearch.searchMethodsObject.queryParameters (type:common)

    These fields are interpreted by all implemented services.

    @@ -254,7 +254,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:common)
    -
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    +
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
    @@ -317,7 +317,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:wfs)
  • WFS 2.0.0 {wildCard: "%", singleChar: "*", escapeChar: "\"}
  • WFS 1.0.0 {wildCard: "*", singleChar: "*", escape: "\"}
  • -
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    +
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)

    ⚠️ "gazetteer" is deprecated. Please use "mpapi" instead.

    @@ -362,7 +362,7 @@
    addressSearch.searchMethodsObject.queryParameters (type:gazetteer)
    -
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)
    +
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    Please mind that this requires a configured backend. A WFS's Stored Query is requested with predefined parameters using the masterportalApi. This implementation is meant for e.g. https://geodienste.hamburg.de/HH_WFS_GAGES, but works with other WFS configured in the same manner.

    @@ -408,14 +408,14 @@
    addressSearch.searchMethodsObject.queryParameters (type:mpapi)

    While all fields are optional, configuring none of them will yield undefined behaviour. At least one search instruction should be set to true.

    -
    addressSearch.searchMethodsObject.queryParameters (type:bkg)
    +
    addressSearch.searchMethodsObject.queryParameters (type:bkg)

    In BKG mode, queryParameter's key-value pairs are used in the service query. E.g. {filter: { bundesland: 'Bremen' }} results in the GET request URL having &filter=bundesland:Bremen as suffix.

    For more options, please check the official documentation regarding what query parameters are interpreted.

    Additionally, it is possible to configure the parameters accesstoken (Authorization) or apiKey (custom header X-Api-Key) to send the described headers to the search service for authentication purposes. Note that this changes the request to be non-simple. To be able to use the parameters, the request has to be sent in cors mode and has to support preflight request OPTIONS.

    -

    Store

    -

    Mutations

    -

    setSelectedGroupName

    +

    Store

    +

    Mutations

    +

    setSelectedGroupName

    This can be used to change the selected search group by name.

    map.$store.commit(
       'plugin/addressSearch/setSelectedGroupName',
    @@ -423,8 +423,8 @@ 

    setSelectedGroupName

    )

    Please mind that programmatically changing the search group will not trigger a search, unlike a search group change by the user. If you need a search after change, consider the search action.

    -

    Actions

    -

    search

    +

    Actions

    +

    This is a purely programmatical search method. It is not used by user input.

    map.$store.dispatch('plugin/addressSearch/search', {
       input: 'Bahnhofsstraße 12',
    @@ -453,7 +453,7 @@ 

    search

    -

    State

    +

    State

    map.subscribe('plugin/addressSearch/chosenAddress', (chosenAddress) => {
       /* Your code. */
     })
    diff --git a/docs/textLocator/plugin-attributions.html b/docs/textLocator/plugin-attributions.html
    index 983694ad8..e23317394 100644
    --- a/docs/textLocator/plugin-attributions.html
    +++ b/docs/textLocator/plugin-attributions.html
    @@ -22,11 +22,11 @@
     
     
       
    -

    Attributions

    -

    Scope

    +

    Attributions

    +

    Scope

    This plugin shows attributions (that is, legal information) regarding copyrights and sources of the currently visible layers.

    -

    Configuration

    -

    attributions

    +

    Configuration

    +

    attributions

    All parameters are optional. However, setting neither layerAttributions nor staticAttributions results in an empty window.

    @@ -70,7 +70,7 @@

    attributions

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    attributions.layerAttribution

    +

    attributions.layerAttribution

    diff --git a/docs/textLocator/plugin-draw.html b/docs/textLocator/plugin-draw.html index 0174a8b52..0974c1f62 100644 --- a/docs/textLocator/plugin-draw.html +++ b/docs/textLocator/plugin-draw.html @@ -22,8 +22,8 @@
    -

    Draw

    -

    Scope

    +

    Draw

    +

    Scope

    The draw plugin allows users to draw features on the map. Drawn features may be edited and deleted.

    Currently supported OpenLayers geometry types:

      @@ -33,15 +33,15 @@

      Scope

    • 'Polygon'

    Also, 'Text' is supported which is modeled as an OpenLayers 'Point'. This is no default feature, so it must be specified in the configuration to use it.

    -

    User instructions for Text Mode

    +

    User instructions for Text Mode

    The interaction with text features is not intuitive, which is why the text feature should come with instructions for the users:

    -

    Edit

    +

    Edit

    To edit the text or the placement of the text feature, the user must click on the center of the text to select the point geometry below it. After selecting it, the user can move the point by keeping the left mouse button pressed, or edit the text in the input field that opens with selecting the feature. If more than one text size is specified in the configuration, the user can change the text size with a slider.

    -

    Delete

    +

    Delete

    To delete the text, the user must either click on the point at the center of the text or use CTRL + left mouse button to open a box over all features that he or she wants to delete.

    -

    Configuration

    +

    Configuration

    The styling of the drawn features can be configured to overwrite the default ol-style. Configuration is oriented around the OpenLayers styles.

    -

    draw

    +

    draw

    @@ -69,7 +69,7 @@

    draw

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -
    draw.textStyle
    +
    draw.textStyle
    @@ -91,7 +91,7 @@
    draw.textStyle
    -
    draw.textStyle.font
    +
    draw.textStyle.font
    @@ -113,7 +113,7 @@
    draw.textStyle.font
    -

    draw.style (by example)

    +

    draw.style (by example)

    The @masterportal/masterportalapi has vectorStyles in development. As soon as that's done, we shall use its styling syntax and methods.

    For the time being, please use this example as a rough reference as to what can currently be done.

    {
    @@ -141,14 +141,14 @@ 

    draw.style (by example)

    } }
    -

    Store

    -

    State

    +

    Store

    +

    State

    map.subscribe('plugin/draw/featureCollection', (featureCollection) => {
       /* Your code. */
     })
     

    The returned featureCollection is a GeoJSON FeatureCollection. It includes all drawn features and updates on changes.

    -

    Actions

    +

    Actions

    map.$store.dispatch('plugin/draw/addFeatures', {
       geoJSON: {
         type: 'FeatureCollection',
    diff --git a/docs/textLocator/plugin-icon-menu.html b/docs/textLocator/plugin-icon-menu.html
    index 06423227a..bdb149cf6 100644
    --- a/docs/textLocator/plugin-icon-menu.html
    +++ b/docs/textLocator/plugin-icon-menu.html
    @@ -22,13 +22,13 @@
     
     
       
    -

    IconMenu

    +

    IconMenu

    The IconMenu offers an icon-button based menu to open various functionality as cards. This way, obstructive UI can be hidden until the user desires to open it. Please use carefully – users may have issues finding process-relevant buttons/interactions if you hide them here.
    Currently, the IconMenu should only be rendered with layoutTag set to NineLayoutTag.TOP_RIGHT.

    -

    Scope

    +

    Scope

    It is meant for additional information/functionality (legend, other layers) or power users in non-public clients.

    Please note that the average user has never seen the client before and just wants to get done with it, not learn a map client.

    -

    Configuration

    +

    Configuration

    ⚠️ This plugin can't be configured with the mapConfiguration, but is configured during client construction. Currently, no way exists to add plugins to it after the build took place.

    @@ -60,7 +60,7 @@

    Configuration

    ], }
    -

    menus

    +

    When landscape mode is active the IconMenu is oriented horizontally. Currently, the IconMenu works fine only if there is not more than one row of Icons in landscape mode.

    diff --git a/docs/textLocator/plugin-layer-chooser.html b/docs/textLocator/plugin-layer-chooser.html index 2c9501586..f5b3d0571 100644 --- a/docs/textLocator/plugin-layer-chooser.html +++ b/docs/textLocator/plugin-layer-chooser.html @@ -22,12 +22,12 @@
    -

    LayerChooser

    +

    LayerChooser

    The tool offers layer selection to the user.

    -

    Scope

    +

    Scope

    The LayerChooser offers an additive (usually Overlays, technically named with type: 'mask') and an exclusive (usually background maps, type: 'background') selection of layers to the users.

    Order of layers within a layer is currently always as initially configured.

    -

    Configuration

    +

    Configuration

    The tool does not require any configuration for itself, but is based on the mapConfiguration.layers array. It will infer its options from there, and change layer visibility and availability depending on minZoom and maxZoom.

    Each object in mapConfiguration.layers array fits this definition:

    @@ -82,7 +82,7 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    mapConfiguration.layers.options

    +

    mapConfiguration.layers.options

    An option wheel will appear in the layer chooser that allows opening a sub-menu with configured configuration options for the end user.

    @@ -100,7 +100,7 @@

    mapConfiguration.layers.options

    -

    mapConfiguration.layers.options.layers

    +

    mapConfiguration.layers.options.layers

    This field is named like this to match the OGC specification for their name; that is, layers have layers that may have layers that may have layers, and so on. However, only the first level (a layer's layers) is currently implemented.

    diff --git a/docs/textLocator/plugin-legend.html b/docs/textLocator/plugin-legend.html index 263fdcff9..380ad57b4 100644 --- a/docs/textLocator/plugin-legend.html +++ b/docs/textLocator/plugin-legend.html @@ -22,9 +22,9 @@
    -

    Legend

    +

    Legend

    The Legend module offers legend images as supplied by OGC services.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    diff --git a/docs/textLocator/plugin-loading-indicator.html b/docs/textLocator/plugin-loading-indicator.html index 862fbd11f..d802cd44e 100644 --- a/docs/textLocator/plugin-loading-indicator.html +++ b/docs/textLocator/plugin-loading-indicator.html @@ -22,13 +22,13 @@
    -

    LoadingIndicator

    -

    Scope

    +

    LoadingIndicator

    +

    Scope

    A generic loading indicator that may be used by any plugin or outside procedure to indicate loading.

    -

    Configuration

    +

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    Mutations

    +

    Store

    +

    Mutations

    // show loading indicator
     map.$store.commit('plugin/loadingIndicator/addLoadingKey', key)
     // hide loading indicator
    @@ -37,7 +37,7 @@ 

    Mutations

    Loading indicator example

    The key must be unique and is kept track of via a Set. It can't be added multiple times, and removing it once always removes it altogether. It is advised to use a key like {my-plugin-or-application-name}-{procedure-name} to avoid name conflicts. The LoadingIndicator will usually be used for asynchronous code.

    As such, always call removeLoadingKey in the finally section of your code to prevent hanging loading indicators.

    -

    Getters

    +

    Getters

    You may desire to listen to whether the loader is currently being shown.

    diff --git a/docs/textLocator/plugin-scale.html b/docs/textLocator/plugin-scale.html index c19292d05..c4ab93a96 100644 --- a/docs/textLocator/plugin-scale.html +++ b/docs/textLocator/plugin-scale.html @@ -22,14 +22,14 @@
    -

    Scale

    +

    Scale

    ⚠ The Scale plugin is currently meant for passive usage only. It's API has not yet been finally defined, and is subject to change without further notice.

    -

    Scope

    +

    Scope

    The scale plugin shows the current map resolution as relative scale (1:x) and/or absolute scale (a drawn line has length x units).

    -

    Configuration

    -

    scale

    +

    Configuration

    +

    scale

    diff --git a/docs/textLocator/plugin-toast.html b/docs/textLocator/plugin-toast.html index 5fc55d07e..ee07bfa3a 100644 --- a/docs/textLocator/plugin-toast.html +++ b/docs/textLocator/plugin-toast.html @@ -22,12 +22,12 @@
    -

    Toast

    -

    Scope

    +

    Toast

    +

    Scope

    The toast plugin offers global functionality to display text messages to the user. These are the classic success, warning, info, and error messages, helping to understand what's going on or why something happened.

    -

    Configuration

    +

    Configuration

    Please check the vuetify documentation to override the success, warning, info, or errors colors in general. To affect only this plugin, the following configuration parameters can be added to either the plugin instantiation or the mapConfiguration:

    -

    toast

    +

    toast

    @@ -60,7 +60,7 @@

    toast

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    toast.toastStyle

    +

    toast.toastStyle

    @@ -82,12 +82,12 @@

    toast.toastStyle

    -

    Store

    -

    Actions

    +

    Store

    +

    Actions

    New entries are made via action. They are either dismissed after a timeout or by user interaction.

    map.$store.dispatch('plugin/toast/addToast', payload)
     
    -

    Payload structure

    +

    Payload structure

    @@ -124,7 +124,7 @@

    Payload structure

    -

    Usage example

    +

    Usage example

    map.$store.dispatch('plugin/toast/addToast', {
       type: 'warning',
       text: 'Wrong hammer for screw.',
    diff --git a/docs/textLocator/plugin-zoom.html b/docs/textLocator/plugin-zoom.html
    index 75c2686f0..05cae62e0 100644
    --- a/docs/textLocator/plugin-zoom.html
    +++ b/docs/textLocator/plugin-zoom.html
    @@ -22,10 +22,10 @@
     
     
       
    -

    Zoom

    -

    Scope

    +

    Zoom

    +

    Scope

    The Zoom plugin offers functionality regarding map zooming.

    -

    Configuration

    +

    Configuration

    The Zoom plugin offers a plus/minus button, and will adjust itself to the map's zoom settings on initialization.
    It can be configured as followed.

    @@ -55,8 +55,8 @@

    Configuration

    For details on the displayComponent attribute, refer to the Global Plugin Parameters section of @polar/core.

    -

    Store

    -

    State

    +

    Store

    +

    State

    The map's zoom level can be listened to.

    @@ -88,7 +88,7 @@

    State

    /* This code is called on any zoomLevel update. */ }) -

    Getters

    +

    Getters

    @@ -117,7 +117,7 @@

    Getters

    } ) -

    Actions

    +

    Actions

    The zoomLevel can be set programmatically.

    map.$store.dispatch('plugin/zoom/setZoomLevel', zoomLevelNumber)
     map.$store.dispatch('plugin/zoom/increaseZoomLevel')
    diff --git a/node_modules/@polar/client-generic/node_modules/@polar/core/README.md b/node_modules/@polar/client-generic/node_modules/@polar/core/README.md
    index e18f71ef6..b78e1e62b 100644
    --- a/node_modules/@polar/client-generic/node_modules/@polar/core/README.md
    +++ b/node_modules/@polar/client-generic/node_modules/@polar/core/README.md
    @@ -199,7 +199,7 @@ The `<...masterportalAPI.fields>` means that any masterportalAPI field may also
     
     ##### 
     
    -Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the [addPlugins](#addPlugins) method and configured through the `mapConfiguration` object. Each plugin has its own set of fields and options that can be customized.
    +Plugins in POLAR are modular components that extend the functionality of the map client. They can be added using the [addPlugins](#addplugins) method and configured through the `mapConfiguration` object. Each plugin has its own set of fields and options that can be customized.
     
     On how to configure a plugin, see the respective plugin. The configuration is given in the `mapConfiguration` object by the plugin's name as specified in its respective documentation.