New features, improvements and fixes. Follow the progress of MapSVG.
123 releases
v9
MapSVG 9.0.0Latest
NewImprovedFixed
๐ Features / Improvements
New map editor: Redesigned workspace with live preview, responsive layouts and reusable data collections.
Drafts and version history: Edit drafts separately from published maps, keep version history and restore earlier versions. Existing published maps retain their original renderer until migrated.
AI assistant: Create and update maps through chat directly in the editor, with AI credit usage available inside the plugin.
More free features: Upload custom marker images, add links to regions and markers, restrict address searches by country and search by postal code.
๐ Bug Fixes
Google Maps: Fixed marker positioning when panning across repeated copies of the world map.
Reliability: Improved SVG editing, draft recovery and compatibility with existing maps during upgrades.
Security: Hardened WordPress post-type REST routes with additional access checks.
Filters: Public maps no longer get stuck on a loading spinner when a cached page sends an expired WordPress REST nonce; those reads retry without the stale nonce.
CSV import: File uploads honor the selected ID column so existing region rows update instead of duplicating. โNo IDโ appends as expected, and Excel BOM headers no longer create blank IDs.
Loading spinner: The spinner sits next to the loading text, empty text is hidden, and the preloader is visible before JavaScript runs.
Mobile toolbar: Map/List icons show correctly when Shadow DOM is enabled.
Pinch-zoom: Pinch-zoom no longer fails on some iPad browsers (including DuckDuckGo).
USA counties map: Corrected the Orange County spelling.
Regions / SVG changes: Replacing or editing an SVG no longer deletes region records whose IDs disappeared. Those rows stay as orphans so you can copy their data, then remove them from Regions โ Settings โ Clean orphan region records.
Region labels: More reliable label centering (better placement on awkward shapes, no flash before styles load). Bundled SVG maps were updated with the new centers.
๐ Bug Fixes
Security / REST API: Hardened remote CSV and API fetches so user-supplied URLs cannot reach private, loopback, or cloud-metadata hosts.
CSV import: Google Sheets web-view URLs are rejected; use a published CSV link instead.
Admin: Stopped a map resize feedback loop that could keep resizing the preview.
Elementor + Gutenberg: Added native integrations (Elementor widget and Gutenberg block) with live map preview directly inside the page editor, so you can see map updates while editing.
Categories grouping: Categories in the directory menu can now group objects by any field type โ including text, number, date, and checkbox โ in addition to select/radio/status/regions. Unique values are derived automatically from the loaded data.
CSV import: Large files (100K+ rows) are now processed in the background using chunked server-side parsing and WordPress Cron. Progress is tracked live in the admin panel and survives page reloads. Supports all field types: Location (with background geocoding), Image (remote URLs downloaded to WP Media Library with deduplication), Regions, Select, Checkboxes, Post, and Date.
Error handling: All errors now include unique error codes. Extended descriptions with troubleshooting steps are available at mapsvg.com/docs/errors.
Load single post location: When viewing a single post page, MapSVG can now load only the location for that specific post instead of all locations. You can find that in Actions > Map > On Load (options is visible only if post field is present in the DB or Regions tables)
AND/OR logic for multiselect filters: Multiselect filters now support choosing between AND and OR logic. Pass an object with operator and value keys to control the behavior. For now, youโll need to add a few lines of JS code to the API request middleware code. Soon the options will also be added to the filter settings:
SVG download: added 2 functions, which can be used in the browser console, to open or download the SVG file:
mapsvg.get(0).svg().open();
mapsvg.get(0).svg().download();
Error handling - if thereโs an error in a custom event handler added by user (afterInit, etc.), MapSVG will show detailed error description in the browser console
๐ Fixes
Region title: null - fixed null Region titles
Map scroll on mobile devices - fixed broken touch events
Embedded posts in templates - fixed incorrect title of embedded posts in MapSVG templates
Dynamic Region Statuses: Added dynamic region statuses, located in Regions / Settings tab. Now you can automatically set region status if region has been filtered out, or if a region has no linked objects. โFiltered out statusโ has been previously availabe in the โFiltersโ tab. Now it has been moved to Regions / Settings.
๐ Fixes
Control panel: Fixed wrong tab height in MapSVG control panel
Security: Improved SVG file sanitization. For users with the unfiltered_html = false option, SVG files are now sanitized: MapSVG removes JavaScript code and other potentially dangerous elements and parameters. By default, unfiltered_html is enabled for Administrators and Editors on single-site installations, and disabled for everyone except Super Admins on multisite installations.
Security: MapSVG now blocks the use of shortcodes in map templates unless they are explicitly added to the list of allowed shortcodes in the MapSVG settings. You can configure this option by clicking the โSettingsโ button on the MapSVG start screen.
Universal Filters: Weโre excited to introduce a long-awaited feature! Filters in MapSVG can now be applied to the MapSVG database, WordPress Custom Posts, or both at the same time. Previously, filters could only be used with MapSVG fields. Now, if your database includes the โPostโ field, you can also filter by any post field, meta field, or taxonomy. To configure this, go to: Map editor / Filters / Edit fields / (Choose a field) / Apply filter to the field โฆ
Dynamic Markers: Previously, you could set marker images dynamically based on the value of a field in the MapSVG database. Now, you can also link marker images to WordPress Post data - including post fields, taxonomies, meta fields, and ACF fields!
Filter tags: when filters are hidden and you apply filters by JS code or by cliking a region - filter tags with a โXโ (close) button are shown either on top of the directory or in the map container (whatever is available). Example:
๐ Fixes
Filter by region: fixed filtering by multiple regions at once
Fixed {{shortcode_inline ...}} rendering which was triggering errors on some servers due to the incorrect Content-type being set as json. Now the content type is set as text/plain.
Posts: Added mapsvg_format_post_data filter in PHP, that allows modifying WP Post data returned to mapsvg front-end. Add your taxonomies or anything else. Example:
Dynamic Region Labels: Labels now dynamically show or hide during zoom. If a label is larger than the region, it gets hidden. If it fits within the region, it displays.
Precise Label Placement: Labels on the world.svg map are now positioned at the visual center of countries, ensuring better accuracy compared to the bounding box center, which previously placed some labels - outside of the country.
Enhanced Popover Positioning: Popovers now appear directly above region labels and are also centered visually within countries for more accurate placement, solving previous issues where popovers appeared outside of regions.
Smoother Popover Animations: Popover animations are now smoother during zoom interactions.
If you use world.svg map with Region labels, and you want to update their positions, you need to reload your SVG file: Map Editor / Settings / File / Reload (keep current titles)
Check out these improvements in the video below:
๐ Fixes
Region Selection Bug: Fixed issues with region selection when the details view is active.
This update is focused on improving the support for Custom Post Types. Finally, weโve added the ability to edit the CPT location in the Classic WordPress Post Editor (previously, it was only available in the Gutenberg editor). Also, weโve fixed the button that lets you choosing a map in the Classic Editor.
Besides that, weโve added even more tools that help us to improve the support experience. Now the issues can be resolved much faster!
๐ Features / Improvements
Map/Location editor in Classic WordPress Post Editor;
๐ Fixes
Map choose button in the Classic Editor;
Fixed an issue with popover not showing up on a map that has scrolling turned off;
Fixed an issue with the map migrations crashing the plugin, for some very old maps created in v2.x versions of MapSVG;
Our goal with this update was to improve the support experience. Now you can easily grant access to your WordPress-admin or WordPress-logs right from the chat application! If we need to check something in your WordPress, we will ask you to grant us access by pressing a button in the chat conversation. When you press the button, the chatbot will generate an access token in your WordPress and copy the magic link to the clipboard. All you need to do is to paste the link in the chat!
Also, we have made it possible to generate multiple access tokens, with different access levels. Now every ticket can have its own access token, which can be easily deleted when issue is resolved.
Data from a custom API endpoint will no longer be loaded on map initialization in the backend. Instead, data loading is deferred to the front-end, allowing the use of JavaScript request middleware.
This update contains long-awaited feature: custom API data sources support! Now you can fetch data from any custom API, format it using the new middleware feature, and load it to the map!
Also, we added a new type of JavaScript functions that you can edit in the โJavaScriptโ tab: Middlewares. Those are functions that accept some data and context, format the data, and pass it further to the next recepient. There are 4 types of middleware in mapsvg:
Map init
Controller render
API Request
API Response
In our blog, weโve released a tutorial on using a custom API data source and middleware.
๐ Features / Improvements
Data sources editor (Map / Toolbar menu / Database / Data sources / Add +);
The most imprtant an long-awaited: new event handlers that provide full access to the map lifecycle. Now you can connect maps to any custom API source or even Google Sheets! The documentation and tutorials will arrive soon;
New template structure for the Directory that gives you full control over it - now you can have directory as HTML table or anything else, there are no limitations;
Add an object ID to the URL on click on a Marker. When user shares the link and opens it, details view or popover opens up for a location on map load;
Clicking Support / Create new ticket now redirects to mapsvg.com/dashboard - new Dashboard that contains information about your licenses and authorized chat app that keeps track of your tickets. If you create a magic link and you have logged in to the dashboard already, the magic link will be added to the ticket automatically.
Fix Automatic updates in WP-Admin area. If you donโt see new versions of MapSVG in WP-Admin area, please download the latest version of MapSVG from CodeCanyon
Updated JS linter in CodeMirror (Map / Menu / JavaScript) to the latest version, ES 2023;
Changed CodeMirror editor style to dark VSCode theme, bringing advanced look to it ๐;
๐ Fixes
New plugin version checker now fires one time per day;
Fixed details view size on mobile devices, also the height of the details view changes depending on the height of the top wp admin bar when user is logged in to WordPress;
Fixed the non-functional drop-down list and buttons on the start screen of the MapSVG admin panel, caused by missing dependencies in some environments;
We continue working on increasing the performance of MapSVG. This update adds lazy loading and changes the way the maps are initialized.
It is highly recommended to use the lazy loading feature if your map is located below the top visible area of the website and is not immediately visible to the user. Example:
[mapsvg id="1" lazy="true"]
๐ Features / Improvements
Added โlazy loadingโ functionality. Now you can add lazy="true" parameter to the shortcode to postpone map loading and increase page loading speed;
Map initialization scripts are no longer injected into the page body. This reduces the page size and increases loading speed. All the code is now downloaded on demand from the server. If you need to reinitialize the maps, use MapSVG.loadMaps() and MapSVG.unloadMaps() functions;
Google Maps API is now loaded asynchronously;
All JS dependencies have been updated to the latest version (Handlebars, Bootstrap, etc).
After a long break, weโre happy to announce a new version of MapSVG that has important bug fixes and new features.
Additionally, weโve added the new MapSVG logo, signaling the start of a complete product redesign. Other exciting enhancements and innovative features are already in the development!
๐ Features / Improvements
MapSVG.Gallery: this has been sold as an add-on previously. Now itโs free of extra charge! If you have a separate MapSVG.Gallery plugin - please disable it;
New MapSVG logo;
Initial JS bundle size has been reduced by 100Kb - which means faster page loading speed. Weโre going to continue recuding the JS file size by implementing modules and โtree shakingโ;
๐ Fixes
Fixed โDownload SVG with Google Mapโ feature (which got broken due to the changes in Google Maps engine)