{"id":396759,"date":"2026-11-04T23:20:30","date_gmt":"2026-11-04T23:20:30","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/devenzi-map-studio\/"},"modified":"2026-11-04T23:19:57","modified_gmt":"2026-11-04T23:19:57","slug":"devenzi-map-studio","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/devenzi-map-studio\/","author":23596776,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.0","stable_tag":"0.3.0","tested":"7.1.4","requires":"6.3","requires_php":"7.4","requires_plugins":null,"header_name":"Devenzi Map Studio \u2013 OpenStreetMap, 3D Maps, Store Locator & Routes","header_author":"Devenzi","header_description":"Beautiful, fast maps without Google and without an API key. Your own markers with photos and popups, map styles in your brand colour, 3D buildings, and an optional \"load after click\" for privacy.","assets_banners_color":"b2a295","last_updated":"2026-11-04 23:19:57","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/devenzi.com\/map-studio.html","header_author_uri":"https:\/\/devenzi.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":56,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.0":{"tag":"0.3.0","author":"devenzi","date":"2026-11-04 23:19:57","revision":3784934}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3784934,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3784934,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3784934,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3784934,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{"blueprint.json":{"filename":"blueprint.json","revision":3784967,"resolution":false,"location":"assets","locale":"","contents":"{\"$schema\":\"https:\\\/\\\/playground.wordpress.net\\\/blueprint-schema.json\",\"meta\":{\"title\":\"Map Studio\",\"description\":\"Map Studio with two demo maps, opened in the studio.\",\"author\":\"devenzi\"},\"landingPage\":\"\\\/wp-admin\\\/admin.php?page=devenzi-map-studio&map=100\",\"preferredVersions\":{\"php\":\"8.3\",\"wp\":\"latest\"},\"features\":{\"networking\":true},\"login\":true,\"steps\":[{\"step\":\"installPlugin\",\"pluginData\":{\"resource\":\"wordpress.org\\\/plugins\",\"slug\":\"devenzi-map-studio\"},\"options\":{\"activate\":true}},{\"step\":\"runPHP\",\"code\":\"<?php\\n\\\/**\\n * Runs once in the Live Preview (WordPress Playground): the demo maps from maps.json as saved maps, and a page that\\n * shows the first one. bin\\\/blueprint.py puts the maps in place of MAPS_JSON and this code into the blueprint.\\n *\\n * @package MapStudio\\n *\\\/\\n\\nrequire '\\\/wordpress\\\/wp-load.php';\\n\\n\\\/\\\/ As the admin: without a user, WordPress filters titles and block attributes (& becomes &amp;).\\nwp_set_current_user( 1 );\\n\\n$maps  = json_decode( <<<'JSON'\\n[{\\\"title\\\":\\\"Ember & Oak \\u2013 store finder\\\",\\\"icon\\\":\\\"\\u2615\\\",\\\"attrs\\\":{\\\"style\\\":\\\"tint\\\",\\\"format\\\":\\\"wide\\\",\\\"list\\\":\\\"side\\\",\\\"zoom\\\":13.4,\\\"center\\\":[13.4085,52.5175],\\\"pinShape\\\":\\\"drop\\\",\\\"pinSize\\\":\\\"m\\\",\\\"cluster\\\":false,\\\"markers\\\":[{\\\"title\\\":\\\"Ember & Oak \\u00b7 Hackescher Markt\\\",\\\"lng\\\":13.4022,\\\"lat\\\":52.5232,\\\"text\\\":\\\"Our first caf\\u00e9, under the railway arches. <strong>Single-origin espresso<\\\/strong> and the best cinnamon buns in Mitte.\\\",\\\"categories\\\":[\\\"Caf\\u00e9\\\",\\\"Breakfast\\\"],\\\"icon\\\":\\\"coffee\\\",\\\"hours\\\":[[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"19:00\\\"]],[[\\\"09:00\\\",\\\"19:00\\\"]],[[\\\"10:00\\\",\\\"17:00\\\"]]],\\\"url\\\":\\\"#menu\\\",\\\"label\\\":\\\"Menu\\\",\\\"color\\\":\\\"\\\",\\\"image\\\":\\\"\\\"},{\\\"title\\\":\\\"Ember & Oak \\u00b7 Rosenthaler Platz\\\",\\\"lng\\\":13.4017,\\\"lat\\\":52.5297,\\\"text\\\":\\\"Big windows, long tables, fast Wi-Fi. A favourite for working mornings.\\\",\\\"categories\\\":[\\\"Caf\\u00e9\\\",\\\"Wi-Fi\\\"],\\\"icon\\\":\\\"coffee\\\",\\\"hours\\\":[[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"19:00\\\"]],[[\\\"09:00\\\",\\\"19:00\\\"]],[[\\\"10:00\\\",\\\"17:00\\\"]]],\\\"color\\\":\\\"\\\",\\\"image\\\":\\\"\\\"},{\\\"title\\\":\\\"Ember & Oak \\u00b7 Gendarmenmarkt\\\",\\\"lng\\\":13.3928,\\\"lat\\\":52.5137,\\\"text\\\":\\\"Coffee to go between the two cathedrals \\u2013 open early for commuters.\\\",\\\"categories\\\":[\\\"Caf\\u00e9\\\",\\\"To go\\\"],\\\"icon\\\":\\\"coffee\\\",\\\"hours\\\":[[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"19:00\\\"]],[[\\\"09:00\\\",\\\"19:00\\\"]],[[\\\"10:00\\\",\\\"17:00\\\"]]],\\\"color\\\":\\\"\\\",\\\"image\\\":\\\"\\\"},{\\\"title\\\":\\\"Bean shop \\u00b7 Karl-Marx-Allee\\\",\\\"lng\\\":13.4246,\\\"lat\\\":52.518,\\\"text\\\":\\\"Beans by the kilo and a brew bar where you can taste before you buy.\\\",\\\"categories\\\":[\\\"Shop\\\"],\\\"icon\\\":\\\"store\\\",\\\"hours\\\":[[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"19:00\\\"]],[[\\\"09:00\\\",\\\"19:00\\\"]],[[\\\"10:00\\\",\\\"17:00\\\"]]],\\\"color\\\":\\\"\\\",\\\"image\\\":\\\"\\\"},{\\\"title\\\":\\\"Ember & Oak \\u00b7 Oranienplatz\\\",\\\"lng\\\":13.418,\\\"lat\\\":52.5028,\\\"text\\\":\\\"Our Kreuzberg corner: oat flat whites and a garden in the back.\\\",\\\"categories\\\":[\\\"Caf\\u00e9\\\",\\\"Garden\\\"],\\\"icon\\\":\\\"coffee\\\",\\\"hours\\\":[[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"19:00\\\"]],[[\\\"09:00\\\",\\\"19:00\\\"]],[[\\\"10:00\\\",\\\"17:00\\\"]]],\\\"color\\\":\\\"\\\",\\\"image\\\":\\\"\\\"},{\\\"title\\\":\\\"The Roastery\\\",\\\"lng\\\":13.4253,\\\"lat\\\":52.5112,\\\"text\\\":\\\"Where every bean is roasted \\u2013 <strong>tours every Saturday at 11:00<\\\/strong>.\\\",\\\"categories\\\":[\\\"Roastery\\\"],\\\"icon\\\":\\\"fire\\\",\\\"hours\\\":[[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"18:00\\\"]],[[\\\"07:30\\\",\\\"19:00\\\"]],[[\\\"09:00\\\",\\\"19:00\\\"]],[[\\\"10:00\\\",\\\"17:00\\\"]]],\\\"big\\\":true,\\\"solo\\\":true,\\\"open\\\":true,\\\"color\\\":\\\"\\\",\\\"image\\\":\\\"\\\"}],\\\"shapes\\\":[{\\\"type\\\":\\\"area\\\",\\\"title\\\":\\\"Free delivery by bike\\\",\\\"color\\\":\\\"#ff8a1f\\\",\\\"stroke\\\":\\\"#ff7a12\\\",\\\"opacity\\\":0.16,\\\"label\\\":true,\\\"measure\\\":true,\\\"dash\\\":\\\"dashed\\\",\\\"width\\\":2,\\\"points\\\":[[13.38,52.53],[13.395,52.5365],[13.415,52.5355],[13.433,52.526],[13.439,52.512],[13.425,52.5],[13.402,52.499],[13.383,52.506],[13.376,52.518]]}],\\\"align\\\":\\\"wide\\\"}},{\\\"title\\\":\\\"Summer festival \\u2013 site plan\\\",\\\"icon\\\":\\\"\\ud83c\\udfaa\\\",\\\"attrs\\\":{\\\"style\\\":\\\"bright\\\",\\\"accent\\\":\\\"#db2777\\\",\\\"format\\\":\\\"wide\\\",\\\"zoom\\\":15.4,\\\"center\\\":[13.401,52.4745],\\\"pinShape\\\":\\\"drop\\\",\\\"pinSize\\\":\\\"m\\\",\\\"markers\\\":[{\\\"title\\\":\\\"Main stage\\\",\\\"lng\\\":13.3985,\\\"lat\\\":52.4752,\\\"text\\\":\\\"Headliners from 20:00\\\",\\\"categories\\\":[\\\"Stage\\\"],\\\"icon\\\":\\\"music\\\",\\\"big\\\":true,\\\"popup\\\":\\\"always\\\"},{\\\"title\\\":\\\"Forest stage\\\",\\\"lng\\\":13.4048,\\\"lat\\\":52.4768,\\\"text\\\":\\\"Acoustic sets all afternoon\\\",\\\"categories\\\":[\\\"Stage\\\"],\\\"icon\\\":\\\"music\\\"},{\\\"title\\\":\\\"Food court\\\",\\\"lng\\\":13.403,\\\"lat\\\":52.4732,\\\"text\\\":\\\"20 stands, vegan options\\\",\\\"categories\\\":[\\\"Food\\\"],\\\"icon\\\":\\\"food\\\"},{\\\"title\\\":\\\"First aid\\\",\\\"lng\\\":13.4002,\\\"lat\\\":52.4725,\\\"text\\\":\\\"Open the whole festival\\\",\\\"categories\\\":[\\\"Help\\\"],\\\"icon\\\":\\\"health\\\",\\\"color\\\":\\\"#dc2626\\\"},{\\\"title\\\":\\\"Main entrance\\\",\\\"lng\\\":13.395,\\\"lat\\\":52.473,\\\"text\\\":\\\"Tickets and wristbands\\\",\\\"categories\\\":[\\\"Entrance\\\"],\\\"icon\\\":\\\"ticket\\\"},{\\\"title\\\":\\\"Toilets\\\",\\\"lng\\\":13.4065,\\\"lat\\\":52.4745,\\\"text\\\":\\\"\\\",\\\"categories\\\":[\\\"Service\\\"],\\\"icon\\\":\\\"toilet\\\"},{\\\"title\\\":\\\"Bike parking\\\",\\\"lng\\\":13.3945,\\\"lat\\\":52.476,\\\"text\\\":\\\"\\\",\\\"categories\\\":[\\\"Service\\\"],\\\"icon\\\":\\\"bike\\\"}],\\\"shapes\\\":[{\\\"type\\\":\\\"area\\\",\\\"title\\\":\\\"Festival grounds\\\",\\\"color\\\":\\\"#db2777\\\",\\\"stroke\\\":\\\"#db2777\\\",\\\"opacity\\\":0.1,\\\"width\\\":2,\\\"points\\\":[[13.394,52.472],[13.408,52.4718],[13.4085,52.4778],[13.3945,52.478]]},{\\\"type\\\":\\\"route\\\",\\\"title\\\":\\\"Shuttle from the station\\\",\\\"color\\\":\\\"#2563eb\\\",\\\"width\\\":4,\\\"dash\\\":\\\"dashed\\\",\\\"ends\\\":true,\\\"measure\\\":true,\\\"points\\\":[[13.386,52.48],[13.387099,52.479191],[13.387974,52.478515],[13.388907,52.477806],[13.390049,52.47697],[13.39133,52.475952],[13.39243,52.475042],[13.393688,52.474037],[13.395,52.473]]}]}}]\\nJSON, true );\\n\\\/\\\/ The caf\\u00e9's \\\"Menu\\\" button leads to a page of the preview itself: a link to another site would open inside\\n\\\/\\\/ Playground's frame, and most sites refuse that (\\\"refused to connect\\\").\\n$menu = get_permalink(\\n\\twp_insert_post(\\n\\t\\tarray(\\n\\t\\t\\t'post_type'    => 'page',\\n\\t\\t\\t'post_status'  => 'publish',\\n\\t\\t\\t'post_title'   => 'Menu \\u2013 Ember & Oak',\\n\\t\\t\\t'post_content' => wp_slash( '<!-- wp:paragraph --><p>A demo page: a place\\u2019s button can lead anywhere \\u2013 a menu, bookings, tickets.<\\\/p><!-- \\\/wp:paragraph -->' . \\\"\\\\n\\\\n\\\" . '<!-- wp:list --><ul><li>Single-origin espresso \\u2013 \\u20ac2.80<\\\/li><li>Flat white \\u2013 \\u20ac3.90<\\\/li><li>Cinnamon bun \\u2013 \\u20ac3.50<\\\/li><li>Sourdough breakfast plate \\u2013 \\u20ac9.50<\\\/li><\\\/ul><!-- \\\/wp:list -->' ),\\n\\t\\t)\\n\\t)\\n);\\n$first = 0;\\nforeach ( $maps as $i => $m ) {\\n\\t$m['attrs'] = json_decode( str_replace( '\\\"#menu\\\"', wp_json_encode( $menu ), wp_json_encode( $m['attrs'] ) ), true );\\n\\t$block = array(\\n\\t\\t'blockName'    => 'devenzi-map-studio\\\/map',\\n\\t\\t'attrs'        => $m['attrs'],\\n\\t\\t'innerBlocks'  => array(),\\n\\t\\t'innerHTML'    => '',\\n\\t\\t'innerContent' => array(),\\n\\t);\\n\\t\\\/\\\/ Fixed ids, so the blueprint's landing page can open the first map in the studio.\\n\\t$id = wp_insert_post(\\n\\t\\tarray(\\n\\t\\t\\t'import_id'    => 100 + $i,\\n\\t\\t\\t'post_type'    => 'devenzi_map',\\n\\t\\t\\t'post_status'  => 'publish',\\n\\t\\t\\t'post_title'   => $m['title'],\\n\\t\\t\\t'post_content' => wp_slash( serialize_block( $block ) ),\\n\\t\\t\\t'meta_input'   => array( 'devenzi_map_icon' => $m['icon'] ),\\n\\t\\t)\\n\\t);\\n\\t$first = $first ? $first : $id;\\n}\\n\\n\\\/\\\/ The map on a page, as visitors see it.\\nwp_insert_post(\\n\\tarray(\\n\\t\\t'post_type'    => 'page',\\n\\t\\t'post_status'  => 'publish',\\n\\t\\t'post_title'   => 'Our caf\\u00e9s',\\n\\t\\t'post_content' => wp_slash( '<!-- wp:paragraph --><p>Find the caf\\u00e9 closest to you \\u2013 or the one that is open right now.<\\\/p><!-- \\\/wp:paragraph -->' . \\\"\\\\n\\\\n\\\" . serialize_block( array( 'blockName' => 'devenzi-map-studio\\\/map', 'attrs' => array( 'mapId' => $first, 'align' => 'wide' ), 'innerBlocks' => array(), 'innerHTML' => '', 'innerContent' => array() ) ) ),\\n\\t)\\n);\\n\"}]}"}},"all_blocks":{"devenzi-map-studio\/map":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"devenzi-map-studio\/map","version":"0.3.0","title":"Map Studio","category":"embed","icon":"location-alt","description":"A beautiful map with your own places \u2013 without Google and without an API key.","keywords":["map","maps","location","openstreetmap","marker"],"textdomain":"devenzi-map-studio","attributes":{"style":{"type":"string","default":"snow"},"accent":{"type":"string","default":"#ff7a12"},"height":{"type":"number","default":480},"format":{"type":"string","default":"normal"},"markers":{"type":"array","default":[]},"shapes":{"type":"array","default":[]},"center":{"type":"array"},"zoom":{"type":"number","default":12},"pitch":{"type":"number"},"bearing":{"type":"number"},"fit":{"type":"boolean","default":true},"threeD":{"type":"boolean","default":false},"consent":{"type":"boolean","default":false},"cooperative":{"type":"boolean","default":false},"region":{"type":"string","default":""},"fullscreen":{"type":"boolean","default":true},"locate":{"type":"boolean","default":false},"labels":{"type":"boolean","default":false},"autoDark":{"type":"boolean","default":false},"light":{"type":"string","default":""},"directions":{"type":"string","default":"google"},"list":{"type":"string","default":"none"},"story":{"type":"boolean","default":false},"walk":{"type":"boolean","default":true},"mapId":{"type":"number","default":0},"pinShape":{"type":"string","default":"drop"},"pinSize":{"type":"string","default":"m"},"cluster":{"type":"boolean","default":false},"nearby":{"type":"boolean","default":false},"poiHide":{"type":"array","default":[]},"autoPhotos":{"type":"boolean","default":true},"lock":{"type":"array"}},"supports":{"html":false,"align":["wide","full"],"spacing":{"margin":true}},"editorScript":"file:.\/index.js","editorStyle":["file:.\/editor.css","devenzi-map-frontend"]}},"tagged_versions":["0.3.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3784934,"resolution":"1","location":"assets","locale":"","width":1360,"height":600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3784934,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3784934,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3784934,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3784934,"resolution":"5","location":"assets","locale":"","width":1300,"height":560},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3784934,"resolution":"6","location":"assets","locale":"","width":1280,"height":860},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3784934,"resolution":"7","location":"assets","locale":"","width":1280,"height":860},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3784934,"resolution":"8","location":"assets","locale":"","width":1300,"height":460}},"screenshots":{"1":"Your places with opening hours, a list with filter and \"Near me\", an area and a route \u2013 in your brand colour.","2":"The editor: the map in full screen, places on the left, the look on the right, tools at the bottom.","3":"A place: formatted text, categories as tags, 66 icons, its own colour and opening hours.","4":"Areas and routes: drag their points, see sizes and lengths, put the name in the middle.","5":"3D buildings, here with a blue brand colour.","6":"All your maps as live maps, with the shortcode to copy.","7":"Defaults for new maps with a live preview that shows what each setting changes.","8":"Privacy-friendly: the map loads only after a click if you want."}},"plugin_section":[],"plugin_tags":[16172,4596,2660,16164,6102],"plugin_category":[49],"plugin_contributors":[290779],"plugin_business_model":[],"class_list":["post-396759","plugin","type-plugin","status-publish","hentry","plugin_tags-interactive-map","plugin_tags-map-markers","plugin_tags-maps","plugin_tags-openstreetmap","plugin_tags-store-locator","plugin_category-maps-and-location","plugin_contributors-devenzi","plugin_committers-devenzi"],"banners":{"banner":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/banner-772x250.png?rev=3784934","banner_2x":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/banner-1544x500.png?rev=3784934","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/icon-128x128.png?rev=3784934","icon_2x":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/icon-256x256.png?rev=3784934","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-1.png?rev=3784934","caption":"Your places with opening hours, a list with filter and \"Near me\", an area and a route \u2013 in your brand colour."},{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-2.png?rev=3784934","caption":"The editor: the map in full screen, places on the left, the look on the right, tools at the bottom."},{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-3.png?rev=3784934","caption":"A place: formatted text, categories as tags, 66 icons, its own colour and opening hours."},{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-4.png?rev=3784934","caption":"Areas and routes: drag their points, see sizes and lengths, put the name in the middle."},{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-5.png?rev=3784934","caption":"3D buildings, here with a blue brand colour."},{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-6.png?rev=3784934","caption":"All your maps as live maps, with the shortcode to copy."},{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-7.png?rev=3784934","caption":"Defaults for new maps with a live preview that shows what each setting changes."},{"src":"https:\/\/ps.w.org\/devenzi-map-studio\/assets\/screenshot-8.png?rev=3784934","caption":"Privacy-friendly: the map loads only after a click if you want."}],"raw_content":"<!--section=description-->\n<p>Embedding Google Maps usually means an iframe you cannot style, no places of your own, an API key with a credit card \u2013 and a cookie banner. Map Studio is different: modern vector maps based on OpenStreetMap that you design in a full-screen editor made for maps \u2013 no forms, just designing.<\/p>\n\n<p><strong>Highlights<\/strong><\/p>\n\n<ul>\n<li><strong>3D buildings<\/strong> that rise when you tilt the map \u2013 all the way to the horizon.<\/li>\n<li><strong>Light and sky<\/strong>: day, morning, evening, night, or <strong>live<\/strong> \u2013 the sun as it stands right now at your place.<\/li>\n<li><strong>Routes along real roads and paths<\/strong> \u2013 by car, bike or on foot, with stops you drag. Ready without a key (OpenStreetMap routing of FOSSGIS); openrouteservice, GraphHopper or your own OSRM or Valhalla server if you prefer.<\/li>\n<li><strong>Your brand colour<\/strong> for the whole map, pins, areas and buttons.<\/li>\n<li><strong>A store finder in minutes<\/strong>: a list of places with search, category filter, \"Near me\" and \"open now\" \u2013 import your locations from Excel.<\/li>\n<li><strong>A full-screen studio<\/strong>: click a place on the map and change it right there, with 66 icons, photos, popups that open on click, on hover or always.<\/li>\n<li><strong>No API key, no account<\/strong> \u2013 and optionally no cookie banner: the map loads only after a click.<\/li>\n<\/ul>\n\n<h4>No API key, no account<\/h4>\n\n<p>Install, open Map Studio, start designing. No sign-up, no key, no billing account. The maps are sharp on every screen and zoom smoothly. Even routes along real roads work without a key; only if you prefer openrouteservice or GraphHopper for them, you enter their key.<\/p>\n\n<h4>Designing, not filling in forms<\/h4>\n\n<ul>\n<li>The map fills the screen; your places on the left, the look on the right, the tools at the bottom.<\/li>\n<li>Menus that are a pleasure instead of long settings pages: every choice shown as it will look \u2013 real pins, real map styles, little scenes of your map \u2013 in clear sections you can put in your own order.<\/li>\n<li>Search an address, street, town or business with suggestions while you type \u2013 or click a station, shop or caf\u00e9 of the map itself and add it as a place, with a fitting icon and its kind as category.<\/li>\n<li>Every panel is one page you scroll through; put its topics in your own order and drag the panels to the size you like.<\/li>\n<li>Undo and redo, keyboard shortcuts, and a preview as visitors see it \u2013 on computer, tablet and phone.<\/li>\n<li>Start empty or with a template: store finder, delivery area, hiking route, event site plan.<\/li>\n<li>Import places and shapes from a table (CSV\/Excel \u2013 addresses are found automatically), Google My Maps (KML) or GeoJSON.<\/li>\n<\/ul>\n\n<h4>Your brand colour<\/h4>\n\n<p>Six map styles as preview tiles: light, night, colourful, clear, fjord and \"Brand colour\", which recolours the whole map from one colour. Pins, areas and buttons follow along. Colours you pick yourself are kept for your next maps.<\/p>\n\n<p>Light and sky: day, morning, evening, night \u2013 or \"Live\", with the sun as it stands right now at this place.<\/p>\n\n<h4>Your own places<\/h4>\n\n<ul>\n<li>66 icons in groups with a search, or a photo; as drop, circle, square or just the icon, in three sizes or any size \u2013 for the whole map or per place; any colour per place.<\/li>\n<li>Popups with the place's icon, formatted text, several photos to swipe through, a button to your page and \"Get directions\" \u2013 opening on click, on hover or always open, in the width you drag them to.<\/li>\n<li>The map's own stations, shops and caf\u00e9s show what they are when clicked.<\/li>\n<li><strong>Opening hours<\/strong> with \"Open \u00b7 until 18:00\" right in the popup and the list.<\/li>\n<li>Categories as tags; highlight important places with a bigger pin, and keep them out of group bubbles.<\/li>\n<li><strong>List of places<\/strong> next to or below the map, with category filter, search and a <strong>\"Near me\"<\/strong> button that sorts by distance.<\/li>\n<li>Many places? Nearby pins group into a bubble with their number.<\/li>\n<\/ul>\n\n<h4>Areas and routes<\/h4>\n\n<ul>\n<li>Draw a delivery zone, a district or a walking route right on the map, and edit its points later.<\/li>\n<li>Or plan a route along real roads and paths \u2013 by car, bike or on foot \u2013 with stops you can drag. No key needed (OpenStreetMap routing of FOSSGIS); openrouteservice, GraphHopper or your own server if you prefer.<\/li>\n<li>Areas show their size and can have their name in the middle; routes their length, start and finish.<\/li>\n<li>Fill and outline colour, opacity, line width, solid, dashed or dotted lines.<\/li>\n<\/ul>\n\n<h4>3D and more<\/h4>\n\n<p>3D buildings far into the distance, a compass to turn the map, fullscreen and \"my location\" buttons, a night style for visitors in dark mode, and the map can be kept to one area.<\/p>\n\n<h4>Privacy-friendly<\/h4>\n\n<ul>\n<li>Optionally the map loads only after a click (\"load after click\"), with your own notice text.<\/li>\n<li>Nothing is loaded before the map scrolls into view.<\/li>\n<li>A privacy page in the admin shows what is loaded when, plus a ready-made text for your privacy policy.<\/li>\n<\/ul>\n\n<h4>Saved maps and shortcode<\/h4>\n\n<p>Make a map once and use it anywhere: with the \"Map Studio\" block, the \"Map Studio\" widget in Elementor, or with <code>[devenzi_map id=\"\u2026\"]<\/code> in Divi, widgets and classic themes. Change it once, and it changes everywhere. All maps at a glance as live maps, and defaults for new maps with a live preview.<\/p>\n\n<h4>Fast<\/h4>\n\n<p>The map library is only loaded on pages with a map, and only when the map comes into view.<\/p>\n\n<h4>Map Studio Pro<\/h4>\n\n<p>For maps that tell a story. Pro adds:<\/p>\n\n<ul>\n<li><strong>Story maps<\/strong>: while visitors scroll, the map flies from place to place and routes draw themselves.<\/li>\n<li><strong>Ride along<\/strong> and <strong>presentations<\/strong>: the camera flies along a route, with stops that show text, a photo and a view of their own.<\/li>\n<li><strong>GPX with elevation profile<\/strong> for hikes, bike rides and runs.<\/li>\n<li><strong>\"How do I get there?\"<\/strong>: visitors plan their way to a place right on your map.<\/li>\n<li><strong>Relief<\/strong> with shaded hills and real 3D mountains when you tilt the map.<\/li>\n<li><strong>Satellite and hybrid<\/strong> styles, <strong>Street View<\/strong> in the popup, and opening hours, phone and website of the map's own places.<\/li>\n<li><strong>Your own map data<\/strong>: the map of your region on your own server \u2013 nothing is loaded from other servers.<\/li>\n<\/ul>\n\n<p>Everything in the free version stays free and complete.<\/p>\n\n<h4>Languages<\/h4>\n\n<p>English. Translations, German among them, come through translate.wordpress.org.<\/p>\n\n<h3>External services<\/h3>\n\n<p>Map Studio relies on the third-party services below. Each one is listed with what it is used for, what is sent and when, and its terms and privacy policy. None of them needs an account unless noted. Nothing else is sent anywhere, and the plugin has no tracking. The plugin's own scripts and styles and the map library (MapLibre) are included in the plugin.<\/p>\n\n<h4>OpenFreeMap \u2013 the map<\/h4>\n\n<ul>\n<li>What it is for: the map itself \u2013 map tiles, fonts and icons. Needed on every page with a map and in the editor.<\/li>\n<li>What is sent and when: the visitor's IP address and which part of the map is shown, by the visitor's browser, when a map comes into view. With \"Load maps only after a click\" (Map Studio \u2192 Privacy), only after the visitor clicked \"Load map\".<\/li>\n<li>Server: tiles.openfreemap.org<\/li>\n<li>Provider: OpenFreeMap (Hyperknot Software Kft., Hungary), delivered through Cloudflare \u2013 https:\/\/openfreemap.org\/<\/li>\n<li>Terms of service: https:\/\/openfreemap.org\/tos\/ \u00b7 Privacy policy: https:\/\/openfreemap.org\/privacy\/<\/li>\n<\/ul>\n\n<h4>Photon by komoot \u2013 address search in the editor<\/h4>\n\n<ul>\n<li>What it is for: the search for addresses and places in the editor (Map Studio), and name ideas (the address) for a new place.<\/li>\n<li>What is sent and when: the words typed into the search, or the coordinates of a new place, by the browser of the person editing the map \u2013 only while they search or set a place. Visitors of the site never connect to it.<\/li>\n<li>Server: photon.komoot.io (paths \/api and \/reverse). With Pro and your own route server, \"How do I get there?\" also searches the start address here \u2013 asked by your website, not by the visitor's browser.<\/li>\n<li>Provider: komoot GmbH, Germany \u2013 https:\/\/photon.komoot.io\/<\/li>\n<li>Terms of service: https:\/\/www.komoot.com\/terms-of-service \u00b7 Privacy policy: https:\/\/www.komoot.com\/privacy<\/li>\n<\/ul>\n\n<h4>Route planning \u2013 one service, the one you choose<\/h4>\n\n<p>A route along real roads and paths in the editor (\"Connect\", \"Plan a route\", drawing along the ways). Your website's server asks the service chosen under Map Studio \u2192 Settings \u2192 Route planning, only while you plan a route; the route is then saved with the map, and visitors never connect to the service. Sent: the coordinates of the route's stops and the way of travelling (on foot, by bike, by car), with your key if the service needs one, and your website's address as user agent \u2013 never anything about visitors. Maps name the route service next to their routes only if you switch on \"Name the route service on the map\" there.<\/p>\n\n<p><strong>OpenStreetMap routing of FOSSGIS<\/strong> (the default, no key)\n* What it is for: routes in the editor, at most one request a second; never for visitors.\n* Server: routing.openstreetmap.de (path \/routed-foot, \/routed-bike or \/routed-car)\n* Provider: FOSSGIS e.V., Germany \u2013 https:\/\/routing.openstreetmap.de\/\n* Terms of service: https:\/\/www.fossgis.de\/arbeitsgruppen\/osm-server\/nutzungsbedingungen\/ \u00b7 Privacy policy: https:\/\/routing.openstreetmap.de\/about.html (section \"Privacy\")<\/p>\n\n<p><strong>openrouteservice<\/strong> (needs your own free key)\n* What it is for: routes in the editor.\n* Server: api.openrouteservice.org (path \/v2\/directions; with Pro also \/geocode\/autocomplete, the address search of \"How do I get there?\")\n* Provider: HeiGIT gGmbH, Heidelberg, Germany \u2013 https:\/\/openrouteservice.org\/\n* Terms of service: https:\/\/account.heigit.org\/info\/tos \u00b7 Privacy policy: https:\/\/heigit.org\/privacy-policy<\/p>\n\n<p><strong>GraphHopper<\/strong> (needs your own key)\n* What it is for: routes in the editor.\n* Server: graphhopper.com (path \/api\/1\/route; with Pro also \/api\/1\/geocode, the address search of \"How do I get there?\")\n* Provider: GraphHopper GmbH, Munich, Germany \u2013 https:\/\/www.graphhopper.com\/\n* Terms of service: https:\/\/www.graphhopper.com\/terms\/ \u00b7 Privacy policy: https:\/\/www.graphhopper.com\/privacy\/<\/p>\n\n<p><strong>Your own OSRM or Valhalla server<\/strong> \u2013 only the address you enter; nothing goes to a third party.<\/p>\n\n<h4>\"Get directions\" \u2013 a link, if you switch it on<\/h4>\n\n<ul>\n<li>What it is for: a button in a place's popup that opens the way there in Google Maps, Apple Maps or OpenStreetMap (as you choose).<\/li>\n<li>What is sent and when: nothing until a visitor clicks it; then the visitor's browser opens that site with the coordinates of the place.<\/li>\n<li>Google: terms https:\/\/policies.google.com\/terms \u00b7 privacy https:\/\/policies.google.com\/privacy \u2013 Apple: terms https:\/\/www.apple.com\/legal\/internet-services\/maps\/terms-en.html \u00b7 privacy https:\/\/www.apple.com\/legal\/privacy\/ \u2013 OpenStreetMap: terms https:\/\/osmfoundation.org\/wiki\/Terms_of_Use \u00b7 privacy https:\/\/osmfoundation.org\/wiki\/Privacy_Policy<\/li>\n<\/ul>\n\n<h4>Only in Map Studio Pro<\/h4>\n\n<p>Map Studio Pro is not part of this plugin: it is a separate download from https:\/\/devenzi.com\/map-studio.html, sold and delivered there by our reseller Freemius. This plugin does not connect to Freemius; its \"Get Pro\" and \"Try Pro for free\" buttons are plain links. Pro's services, for completeness:<\/p>\n\n<ul>\n<li><strong>Terrain Tiles<\/strong> on Amazon Web Services (AWS Open Data, data by Mapzen\/Tilezen, https:\/\/registry.opendata.aws\/terrain-tiles\/) \u2013 elevation for the Relief style, loaded by the visitor's browser only on maps in that style. AWS terms: https:\/\/aws.amazon.com\/service-terms\/ \u00b7 Privacy: https:\/\/aws.amazon.com\/privacy\/<\/li>\n<li><strong>Google Street View<\/strong> (Maps Embed API, with your own Google key) and <strong>Mapillary<\/strong> (https:\/\/www.mapillary.com\/) for Street View in popups and the Street View figure \u2013 loaded by the visitor's browser only when a visitor opens Street View. Google terms: https:\/\/cloud.google.com\/maps-platform\/terms \u00b7 Privacy: https:\/\/policies.google.com\/privacy \u00b7 Mapillary terms: https:\/\/www.mapillary.com\/terms \u00b7 Privacy: https:\/\/www.mapillary.com\/privacy<\/li>\n<li>Details of the base map's places from <strong>Nominatim<\/strong> (https:\/\/nominatim.openstreetmap.org\/) and the lines at a stop from <strong>Overpass<\/strong> (servers: overpass-api.de or overpass.private.coffee; or your own server), asked by your website and kept for a week. Nominatim usage policy: https:\/\/operations.osmfoundation.org\/policies\/nominatim\/ \u00b7 Privacy: https:\/\/osmfoundation.org\/wiki\/Privacy_Policy \u00b7 Overpass: https:\/\/wiki.openstreetmap.org\/wiki\/Overpass_API<\/li>\n<li><strong>\"How do I get there?\"<\/strong>: visitors plan their way to a place. Their browser asks only your website; your website asks the route service you chose (openrouteservice, GraphHopper or your own server \u2013 not the routers of FOSSGIS) with the visitor's start, and for the address search openrouteservice, GraphHopper or \u2013 with your own server \u2013 Photon (komoot GmbH, https:\/\/photon.komoot.io\/). The services never see the visitor's IP address.<\/li>\n<li>Photos for a place from <strong>Wikimedia Commons<\/strong> (https:\/\/commons.wikimedia.org\/, only freely licensed photos, with credit) and Mapillary; a photo you take is copied into your media library. Wikimedia terms: https:\/\/foundation.wikimedia.org\/wiki\/Policy:Terms_of_Use \u00b7 Privacy: https:\/\/foundation.wikimedia.org\/wiki\/Policy:Privacy_policy<\/li>\n<\/ul>\n\n<p>Map data \u00a9 OpenStreetMap contributors (https:\/\/www.openstreetmap.org\/copyright).<\/p>\n\n<p>The pictures on the Map Studio start page (assets\/img\/hero) are maps made with the plugin: map data \u00a9 OpenStreetMap contributors, OpenMapTiles, OpenFreeMap; elevation for the Alps from the Terrain Tiles (Mapzen); the aerial picture of Cologne: Land NRW (2026), Datenlizenz Deutschland \u2013 Zero \u2013 Version 2.0 (https:\/\/www.govdata.de\/dl-de\/zero-2-0).<\/p>\n\n<h3>Source code<\/h3>\n\n<p>The plugin bundles MapLibre GL JS 6.14.0 (BSD-3-Clause) in assets\/vendor\/maplibre, with its license file. Its source is at https:\/\/github.com\/maplibre\/maplibre-gl-js. The plugin's own JavaScript and CSS are not minified and need no build step.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install Map Studio under Plugins \u2192 Add New and activate it.<\/li>\n<li>Go to Map Studio \u2192 New map. The full-screen editor opens.<\/li>\n<li>Pick a style, search or click to add places, save.<\/li>\n<li>In a post or page, add the \"Map Studio\" block and choose your map \u2013 or paste its shortcode into a page builder or widget.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20api%20key%20or%20an%20account%3F\"><h3>Do I need an API key or an account?<\/h3><\/dt>\n<dd><p>No. The map tiles come from OpenFreeMap, a free and open map service, and routes along real roads are planned with the free OpenStreetMap routers of FOSSGIS. There is nothing to sign up for. Optionally, you can choose openrouteservice or GraphHopper with your own key, or your own OSRM or Valhalla server, under Map Studio \u2192 Settings.<\/p><\/dd>\n<dt id=\"is%20it%20really%20free%3F%20are%20there%20limits%3F\"><h3>Is it really free? Are there limits?<\/h3><\/dt>\n<dd><p>The plugin is free. OpenFreeMap has no usage limits for normal websites. If you want to be completely independent, Map Studio Pro hosts the map data for your region on your own server and adds GPX routes with an elevation profile and story maps.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr-friendly%3F\"><h3>Is it GDPR-friendly?<\/h3><\/dt>\n<dd><p>When a map is shown, the visitor's browser loads the map tiles from OpenFreeMap (IP address is transmitted). If you have no consent tool, switch on \"Load maps only after a click\" under Map Studio \u2192 Privacy: then nothing is loaded until the visitor agrees. The privacy page also gives you a text for your privacy policy. This is not legal advice.<\/p><\/dd>\n<dt id=\"do%20visitors%20have%20to%20agree%20on%20every%20map%3F%20does%20it%20work%20with%20my%20cookie%20tool%3F\"><h3>Do visitors have to agree on every map? Does it work with my cookie tool?<\/h3><\/dt>\n<dd><p>Once a visitor clicks \"Load map\", their browser remembers it (local storage, no cookie) and the other maps on your site load directly \u2013 with Pro, a map with relief or aerial images asks once more, for those servers. Map Studio also asks these cookie tools through their documented JavaScript interfaces:<\/p>\n\n<ul>\n<li>Complianz: consent to the category \"marketing\".<\/li>\n<li>Borlabs Cookie 3: consent to a service with the ID <code>map-studio<\/code> (create it, e.g. with OpenFreeMap as provider).<\/li>\n<li>Real Cookie Banner: consent to a service with the unique name <code>map-studio<\/code>.<\/li>\n<\/ul>\n\n<p>Other categories or service names: the filter <code>devenzi_map_consent_tools<\/code> (keys <code>complianz<\/code>, <code>borlabs<\/code>, <code>rcb<\/code>; empty switches one off). Any other tool: call <code>window.devenziMapConsent()<\/code> in its opt-in code on every page view (or set <code>window.devenziMapConsentGiven = true<\/code> before the map script runs). To let visitors take it back as easily as they gave it, put the shortcode <code>[devenzi_map_consent]<\/code> on your privacy page: it shows a button \"Withdraw my consent for maps\" (the suggested privacy text already contains it). In your own code, <code>window.devenziMapConsent( false )<\/code> does the same. When a visitor agrees with the button, the page fires the event <code>devenzi-map-consent<\/code> on <code>document<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20with%20elementor%2C%20divi%20or%20classic%20themes%3F\"><h3>Can I use it with Elementor, Divi or classic themes?<\/h3><\/dt>\n<dd><p>Yes. In Elementor, add the \"Map Studio\" widget and choose your map \u2013 the map shows live in the editor, with a button to the Map Studio. Everywhere else, paste the shortcode <code>[devenzi_map id=\"\u2026\"]<\/code> where shortcodes work (Divi, widgets, classic themes). You can also change the height: <code>[devenzi_map id=\"12\" height=\"400\"]<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20show%20many%20locations%2C%20like%20a%20store%20locator%3F\"><h3>Can I show many locations, like a store locator?<\/h3><\/dt>\n<dd><p>Yes. Import your locations from a table or add them one by one, then switch on the list of places. Visitors can filter by category, search, sort by distance with \"Near me\", and see who is open right now. The \"Store finder\" template sets all of this up.<\/p><\/dd>\n<dt id=\"does%20it%20replace%20google%20maps%3F\"><h3>Does it replace Google Maps?<\/h3><\/dt>\n<dd><p>For showing your locations, areas and routes: yes. \"Get directions\" still hands over to Google Maps, Apple Maps or OpenStreetMap \u2013 only when a visitor clicks it.<\/p><\/dd>\n<dt id=\"the%20map%20stays%20grey%20with%20wp%20rocket%2C%20litespeed%20cache%20or%20another%20speed%20plugin\"><h3>The map stays grey with WP Rocket, LiteSpeed Cache or another speed plugin<\/h3><\/dt>\n<dd><p>Options like \"Delay JavaScript execution\" (WP Rocket), \"Load JS Delayed\" (LiteSpeed Cache) or \"Delay JavaScript\" (Perfmatters) start scripts only after the visitor's first click or scroll \u2013 the map waits until then. Add these two words to the plugin's list of exclusions: <code>devenzi-map<\/code> (the map's scripts) and <code>devenziMapData<\/code> (its settings on the page). Nothing is lost by it: the map library itself is still loaded only when a map comes into view. Combining or minifying JavaScript is fine.<\/p><\/dd>\n<dt id=\"the%20map%20says%20%22the%20map%20could%20not%20load.%22\"><h3>The map says \"The map could not load.\"<\/h3><\/dt>\n<dd><p>The visitor's browser could not reach the map. Most often a blocker or a strict firewall keeps it from tiles.openfreemap.org, or the site sends a Content Security Policy without it \u2013 allow https:\/\/tiles.openfreemap.org there. \"Try again\" asks once more. With Map Studio Pro and your own map data, nothing has to come from other servers.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20delete%20the%20plugin%3F\"><h3>What happens when I delete the plugin?<\/h3><\/dt>\n<dd><p>By default, your saved maps and settings stay \u2013 so you can switch to Pro or reinstall without losing anything. To remove everything when you delete the plugin, switch on \"Remove all maps and settings\" under Map Studio \u2192 Settings first. Maps placed directly in posts always stay in the post content but are no longer shown without the plugin.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>The Relief style (shaded hills, 3D mountains) is now part of Map Studio Pro; this plugin loads no elevation data.<\/li>\n<li>Draw a route by hand along the ways \u2013 straight, on foot, by bike or by car \u2013 and change its kind later.<\/li>\n<li>Quick buttons in the list of places and shapes; a click flies there and opens the popup.<\/li>\n<li>New places show at once; the editor stays smooth with many places.<\/li>\n<li>Translations come from translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Plan routes along real roads and paths with openrouteservice (your own free key), with stops you can drag and insert.<\/li>\n<li>Stations, shops and caf\u00e9s of the base map show a popup and can be added as a place \u2013 with a fitting icon and their kind as category.<\/li>\n<li>Popups with the place's icon and small icon buttons; per place: open on click, on hover or always; width dragged at the edge.<\/li>\n<li>Per place: its own pin shape and size (also any size), \"never group\"; 66 icons with groups and search; your own colours are kept.<\/li>\n<li>Several places at once: Shift + drag a frame, Shift or Ctrl + click, Ctrl+A \u2013 move, colour and remove them together, or connect them with a route (straight or along streets) that follows when a place moves.<\/li>\n<li>Symbols of the map: choose which places of the base map show \u2013 by group (food, shops, bus and train, parking, fuel, playgrounds, nature \u2026) and finer by kind.<\/li>\n<li>Name ideas for a new place: its address with house number, the two streets of a crossing, or a business right there \u2013 one click takes the name.<\/li>\n<li>Pro: \"Getting there\" \u2013 the stops around a place (underground, city train, tram, bus, ferry) with their lines and minutes on foot within 5 to 20 minutes, and its part of town, shown in its popup.<\/li>\n<li>Pro: one click, a finished place \u2013 it names itself after the business or station right there, takes its icon, and finds up to four photos (Wikimedia Commons, Mapillary) that are copied into the media library with their credit; more to pick under Photos.<\/li>\n<li>Controls in the studio, set per person under Settings: mouse buttons (\"like maps\" or \"like design programs\" \u2013 left selects, right moves, the wheel button turns) and every key; a legend in the studio shows them.<\/li>\n<li>Light and sky moods, and 3D buildings far into the distance. Turning a tilted map keeps what it has loaded, the other directions load in advance, and it runs smoothly: rising ground only where the land is hilly, tilt up to 65\u00b0.<\/li>\n<li>The editor: panels as one page with your own order of topics, resizable panels, a compass, clearer spacing, modern scrollbars.<\/li>\n<li>Fixes: points of the base map (stations, shops) were missing when zoomed in close; the open popup stays open while you edit; grouping works while designing.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First version: a full-screen map editor with templates, import and search, seven styles with relief and brand colour, places with icons, photos, formatted text and opening hours, list of places with filter, search and \"Near me\", grouped pins, areas and routes with sizes, 3D buildings, load after click, saved maps with block, Elementor widget and shortcode, defaults with live preview, privacy settings.<\/li>\n<li>German translation (du and Sie).<\/li>\n<\/ul>","raw_excerpt":"Interactive OpenStreetMap maps with a beautiful, easy editor \u2013 markers, store locator, routes, 3D buildings. No Google, no API key needed.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=396759"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/devenzi"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396759"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396759"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396759"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396759"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396759"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}