diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6dd9443f5c5674f3efd020d322635c9539899994..1456f1850733a6f9f9d5d286634ee32d4639b504 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Changed (for changes in existing functionality)
 
+* Version bump of caosdb_map module (0.5.0):
+  * Added configurable entityLayers
+  * Changed name of the icon option to icon_options, because that name better
+    distiguished the options from the result icon object.
+
 ### Deprecated
 
 ### Removed
diff --git a/src/core/js/ext_map.js b/src/core/js/ext_map.js
index bac14e71f68561df6982f94fca9c5e9f02e8c90e..6dd9b963d4caa2887f4e680285e7b61a47e97b20 100644
--- a/src/core/js/ext_map.js
+++ b/src/core/js/ext_map.js
@@ -25,7 +25,7 @@
 
 /**
  * @module caosdb_map
- * @version 0.4.1
+ * @version 0.5.0
  *
  * For displaying a geographical map which shows entities at their associated
  * geolocation.
@@ -43,7 +43,7 @@
 var caosdb_map = new function () {
 
     var logger = log.getLogger("caosdb_map");
-    this.version = "0.4.1";
+    this.version = "0.5.0";
     this.dependencies = ["log", {
         "L": ["latlngGraticule", "Proj"]
     }, "navbar", "caosdb_utils"];
@@ -76,6 +76,8 @@ var caosdb_map = new function () {
      * @property {DataModelConfig} datamodel - the data model for the
      *     display of entities in the map (also used by the query generator).
      * @property {SelectConfig} select - config for the query generator.
+     * @property {Object.<string, EntityLayerConfig>} entityLayers -
+     *     configuration for the entity layer which are to be shown on the map.
      */
 
     /**
@@ -382,14 +384,23 @@ var caosdb_map = new function () {
      */
 
     /**
+     * Configuration of the entity layers which are to be shown on the map.
+     *
      * @typedef {object} EntityLayerConfig
-     * @property {string} id
-     * @property {string} name
-     * @property {string} description
-     * @property {DivIcon_options} icon_options
+     * @property {string} id - the id of the entity layer which is used
+     *     internally.
+     * @property {string} name - a short name which is shown in the entity
+     *     layers menu.
+     * @property {string} description - a short description which is shown as
+     *     hover-over text in the entity layers menu.
+     * @property {DivIcon_options} icon_tions - leaflet options for the icon
+     *     (aka the marker) which is shown on the map. These options are
+     *     espcially useful to style the icons (color etc).
      * @property {number} zIndexOffset
-     * @property {mapEntityGetter} get_entities
-     * @property {mapEntityPopupGenerator} make_popup
+     * @property {mapEntityGetter} get_entities - returns the entities which
+     *     are to be shown on the map.
+     * @property {mapEntityPopupGenerator} make_popup - returns the popup which
+     *     is to be shown when a user clicks on the map marker.
      */
 
     /**
@@ -647,13 +658,13 @@ var caosdb_map = new function () {
      * "all_map_entities" which shows all entities in the database with
      * coordinates.
      *
-     * @type {EntityLayerConfig[]}
+     * @type {Object.<string, EntityLayerConfig>}
      */
     this._default_entity_layer_config = {
         "current_page_entities": {
             "name": "Entities on the current page.",
             "description": "Show all entities on the current page.",
-            "icon": {
+            "icon_options": {
                 html: '<i class="bi-geo-alt-fill"  style="font-size: 20px; color: #00F;"></i>',
                 iconAnchor: [10, 19],
                 className: "",
@@ -675,7 +686,7 @@ var caosdb_map = new function () {
         "all_map_entities": {
             "name": "All entities",
             "description": "Show all entities with coordinates.",
-            "icon": {
+            "icon_options": {
                 html: '<i class="bi-geo-alt-fill"  style="font-size: 20px; color: #F00;"></i>',
                 iconAnchor: [10, 19],
                 className: "",
@@ -973,9 +984,10 @@ var caosdb_map = new function () {
         this._reload_layers = function () {
             caosdb_map._show_load_info()
             const promises = []
+            const entity_layer_config = $.extend(true, {}, caosdb_map._default_entity_layer_config, caosdb_map.config["entityLayers"]);
             for (const layer of caosdb_map.layers) {
                 promises.push(caosdb_map._fill_layer(layer.layer_group,
-                    caosdb_map._default_entity_layer_config[layer.id]));
+                    entity_layer_config[layer.id]));
             }
             Promise.all(promises).then((val) => {
                 caosdb_map._hide_load_info()
@@ -1067,14 +1079,16 @@ var caosdb_map = new function () {
                         view_config);
 
                     // init entity layers
-                    this.layers = this.init_entity_layers(this._default_entity_layer_config);
+                    const entity_layer_config = $.extend(true, {}, this._default_entity_layer_config, config["entityLayers"]);
+                    caosdb_map.entityLayers = entity_layer_config;
+                    this.layers = this.init_entity_layers(entity_layer_config);
                     var layerControl = L.control.layers();
 
                     const promises = []
                     for (const layer of this.layers) {
 
                         promises.push(caosdb_map._fill_layer(layer.layer_group,
-                            this._default_entity_layer_config[layer.id]));
+                            entity_layer_config[layer.id]));
                         layerControl.addOverlay(layer.layer_group, layer.chooser_html.outerHTML);
                         layer.layer_group.addTo(this._map);
                     }
@@ -1139,7 +1153,7 @@ var caosdb_map = new function () {
          */
 
         /**
-         * @param {EntityLayerConfig[]} configs
+         * @param {Object.<string, EntityLayerConfig>} config
          * @returns {_EntityLayer[]}
          */
         this.init_entity_layers = function (configs) {
@@ -1165,7 +1179,7 @@ var caosdb_map = new function () {
             layer_group.entities = entities;
             var markers = caosdb_map.create_entity_markers(
                 entities, config.datamodel, config.make_popup,
-                config.zIndexOffset, config.icon);
+                config.zIndexOffset, config.icon_options);
 
             for (const marker of markers) {
                 layer_group.addLayer(marker);
@@ -1202,7 +1216,7 @@ var caosdb_map = new function () {
         this.make_layer_chooser_html = function (config) {
             return $('<span/>')
                 .attr("title", config.description)
-                .append(config.icon.html)
+                .append(config.icon_options.html)
                 .append(config.name)[0];
         }
 
diff --git a/test/core/js/modules/ext_map.js.js b/test/core/js/modules/ext_map.js.js
index 3e55506b9abc8742ae59bf958febd9f63f968ba9..54c8d003029632f13277c05c332b0c4993c35c63 100644
--- a/test/core/js/modules/ext_map.js.js
+++ b/test/core/js/modules/ext_map.js.js
@@ -76,7 +76,7 @@ QUnit.module("ext_map.js", {
 });
 
 QUnit.test("availability", function (assert) {
-    assert.equal(caosdb_map.version, "0.4.1", "test version");
+    assert.equal(caosdb_map.version, "0.5.0", "test version");
     assert.ok(caosdb_map.init, "init available");
 });
 
@@ -272,7 +272,7 @@ QUnit.test("make_layer_chooser_html", function (assert) {
         "id": "test_id",
         "name": "test name",
         "description": "test description",
-        "icon": {
+        "icon_options": {
             "html": "<span>ICON</span>",
         },
     };
@@ -287,7 +287,7 @@ QUnit.test("_init_single_entity_layer", function (assert) {
         "id": "test_id",
         "name": "test name",
         "description": "test description",
-        "icon": {
+        "icon_options": {
             "html": "<span>ICON</span>",
         },
     }