Skip to content

@siemens/maps-ng

Element Maps

Element maps library based on OpenLayers.

Usage

To use this library in other projects, add it to your dependencies using:

npm install --save @siemens/maps-ng

# Also install the needed peer dependencies
npm install --save ol@~10.2.0 ol-ext ol-mapbox-style

Add library assets and CommonJs dependencies in your angular.json under the build options

{
  "architect": {
    "build": {
      "options": {
        "assets": [
          // ... other assets
          {
            "glob": "**/*",
            "input": "./node_modules/@siemens/maps-ng/assets",
            "output": "/assets/"
          }
        ],
        // ... other options
        "allowedCommonJsDependencies": [
          "xml-utils/find-tags-by-name.js",
          "xml-utils/get-attribute.js",
          "web-worker",
          "pbf",
          "earcut",
          "rbush"
        ]
      }
    }
  }
}

Import openlayers styles into your main global stylesheet

@use 'ol/ol.css';

Add the library to the list of imports in your Angular AppModule like this:

// [...]

// Import this library and required dependencies
import { SiMapModule } from '@siemens/maps-ng';

@NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserModule,

    // Import this library
    SiMapModule
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

Or simply import the SiMapComponent in your standalone component.

@Component({
  selector: 'app-map',
  standalone: true,
  imports: [SiMapComponent],
  templateUrl: './sample.component.html',
  host: { class: 'h-100' }
})
export class SampleComponent {}

And lastly, add the map to your template and add a MapTiler key. Note, the map has not height per default and comes with a block display. Set the height or put it in a related container.

The demo key works on localhost. It will be renewed regularly to avoid missuses of the key. Contact the SiMPL team to receive a key for your SI BP product.

<si-map [maptilerKey]="'REPLACE_WITH_YOUR_MAPTILER_KEY'" style="height: 500px;"></si-map>

Testing

Do not load map data (tiles) from maptiler in automated tests, to reduce the number of payed requests to a minimum. E.g. during testing, you want to test your functions and not the tile data provided by maptiler.

  • Unit tests: Do simply not provide an API key during
  • Playwright tests: Stub the tiles.json request (and some others) using page.route(...).

Running Unit Tests

Run yarn maps:test to perform the unit tests via Karma. You can set a seed for running the tests in a specific using an environment variable: SEED=71384 yarn maps:test

License

The following applies for code and documentation of the git repository, unless explicitly mentioned.

Copyright (c) Siemens 2016 - 2025

MIT, see LICENSE.md.


Except where otherwise noted, content on this site is licensed under MIT License.