CINXE.COM
Make interactive maps without coding
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Search engines --> <meta name="description" content="Create your own interactive map for free with Flourish, the leading tool for data visualization. Choose from various map types and start effortlessly with world maps, country maps, and more."> <!-- Twitter --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@f_l_o_u_r_i_s_h"> <meta name="twitter:image" content="https://flourish.studio/images/blog/maps-meta-tag.png"> <meta name="twitter:title" content="Make interactive maps without coding"> <meta name="twitter:description" content="Create your own interactive map for free with Flourish, the leading tool for data visualization. Choose from various map types and start effortlessly with world maps, country maps, and more."> <meta name="twitter:creator" content="@f_l_o_u_r_i_s_h"> <meta property="og:title" content="Make interactive maps without coding"> <meta property="og:image" content="https://flourish.studio/images/blog/maps-meta-tag.png"> <meta property="og:type" content="website"> <meta property="og:description" content="Create your own interactive map for free with Flourish, the leading tool for data visualization. Choose from various map types and start effortlessly with world maps, country maps, and more."> <meta property="og:site_name" content="Flourish"> <meta property="fb:app_id" content="102649676918117"> <title>Make interactive maps without coding</title> <script src="https://cdn-au.onetrust.com/consent/c7f22011-a5da-4a30-8750-4cb18703c00d/OtAutoBlock.js" type="text/javascript"></script> <script src="https://cdn-au.onetrust.com/consent/c7f22011-a5da-4a30-8750-4cb18703c00d/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="c7f22011-a5da-4a30-8750-4cb18703c00d" ></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-44635456-19', 'auto'); ga('send', 'pageview'); function createFunctionWithTimeout(callback, timeout) { var called = false; function fn() { if (!called) { called = true; callback(); } } setTimeout(fn, timeout || 1000); // default is 1000ms return fn; } var trackOutboundLink = function(url) { ga('send', 'event', 'outbound', 'click', url, { 'transport': 'beacon', 'hitCallback': createFunctionWithTimeout(function() { document.location = url; }) }); }; var trackEmailClick = function(address_type) { ga('send', 'event', { eventCategory: 'click', eventAction: 'email', eventLabel: address_type }); }; var trackFormSubmit = function(label, method, path, params) { ga('send', 'event', { eventCategory: 'outbound', eventAction: 'click', eventLabel: label, hitCallback: createFunctionWithTimeout(function() { params = params || {}; var form = document.createElement('form'); form.setAttribute('method', method); form.setAttribute('action', path); for (var key in params) { if (params.hasOwnProperty(key)) { var hiddenField = document.createElement('input'); hiddenField.setAttribute('type', 'hidden'); hiddenField.setAttribute('name', key); hiddenField.setAttribute('value', params[key]); form.appendChild(hiddenField); } } document.body.appendChild(form); form.submit(); }) }); }; </script> <script src="https://www.googleoptimize.com/optimize.js?id=OPT-MLMV2BQ"></script> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PBJJP4J');</script> <script type="text/javascript"> (function () { const LOG_STYLES = { title: "color: #2563eb; font-weight: bold; font-size: 12px;", success: "color: #059669; font-weight: bold;", error: "color: #dc2626; font-weight: bold;", info: "color: #737373; font-size: 11px;" }; function logEvent(event_type, properties, context = []) { if (!false) return; console.group( `%c[SnowplowAnalytics]: ${event_type} (${new Date().toUTCString()})`, LOG_STYLES.title ); const tableData = [ ...Object.entries(properties).map(([key, value]) => ({ key, value, source: "event" })), ...context.flatMap(ctx => Object.entries(ctx.data).map(([key, value]) => ({ key, value, source: `context: ${ctx.schema}` })) ) ].reduce((acc, {key, value, source}) => { acc[key] = {value, source}; return acc; }, {}); console.table(tableData, ["value", "source"]); console.groupEnd(); } function initializeSnowplow() { try { // https://docs.snowplow.io/docs/sources/trackers/javascript-trackers/web-tracker/quick-start-guide/ // sp.js is called 9e10734c6f18ce57.js ;(function (p, l, o, w, i, n, g) { if (!p[i]) { p.GlobalSnowplowNamespace = p.GlobalSnowplowNamespace || []; p.GlobalSnowplowNamespace.push(i); p[i] = function () { (p[i].q = p[i].q || []).push(arguments) }; p[i].q = p[i].q || []; n = l.createElement(o); g = l.getElementsByTagName(o)[0]; n.async = 1; n.src = w; g.parentNode.insertBefore(n, g) } }(window, document, "script", "/js/9e10734c6f18ce57.js", "snowplow")); window.snowplow('newTracker', 'sp1', 'https://api.canva.com/_spi/ae/snowplow/5f60f4dc-c844-41b5-9da7-ab8d39e5f475', { appId: 'flourish', platform: 'web', cookieDomain: 'flourish.studio', contexts: { webPage: true, session: true, browser: true, }, stateStorageStrategy: 'cookieAndLocalStorage', referrerPolicy: 'no-referrer-when-downgrade', credentials: 'omit', eventMethod: 'post' }); window.snowplow('addPlugin', "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-client-hints@latest/dist/index.umd.min.js", ["snowplowClientHints", "ClientHintsPlugin"] ); window.snowplow('addPlugin', "https://cdn.jsdelivr.net/npm/@snowplow/browser-plugin-ga-cookies@latest/dist/index.umd.min.js", ["snowplowGaCookies", "GaCookiesPlugin"], [{ ga4: true, ua: false, ga4MeasurementId: "G-KW52XHYN9H" }] ); window.sp = { trackInteraction: function (properties) { window.snowplow('trackSelfDescribingEvent', { event: { schema: 'iglu:studio.flourish/flourish_interacted/jsonschema/1-0-0', data: properties } }); logEvent('flourish_interacted', properties); }, trackFormInteraction: function (properties) { window.snowplow('trackSelfDescribingEvent', { event: { schema: 'iglu:studio.flourish/flourish_form_interacted/jsonschema/1-0-0', data: properties } }); logEvent('flourish_form_interacted', properties); }, }; // GA Duplicate Events (function () { const trackGAEvent = function (properties) { const eventData = { category: "ga4_event", action: properties.action || properties.event || 'unknown' }; window.snowplow('trackSelfDescribingEvent', { event: { schema: 'iglu:com.snowplowanalytics.snowplow/unstruct_event/jsonschema/1-0-0', data: { schema: 'iglu:com.google.analytics.measurement-protocol/event/jsonschema/1-0-0', data: eventData } }, context: [{ schema: 'iglu:com.google.analytics.measurement-protocol/hit/jsonschema/1-0-0', data: {type: "event"} }] }); logEvent('ga_duplicator', eventData); }; if (window.dataLayer && Array.isArray(window.dataLayer)) { const originalDataLayerPush = Array.prototype.push; window.dataLayer.push = function (...args) { args.forEach(arg => { if (Array.isArray(arg) && arg[0] === "event") { const [_, eventName, eventParams] = arg; trackGAEvent({ ...eventParams, category: "ga4_event", action: eventName, }); } else if (typeof arg === "object" && arg !== null && "event" in arg) { const {event, ...params} = arg; trackGAEvent({ ...params, category: "ga4_event", action: event, }); } }); return originalDataLayerPush.apply(window.dataLayer, args); }; } const original_gtag = window.gtag; window.gtag = (...args) => { if (original_gtag) { original_gtag.apply(window, args); } const [command, action, parameters] = args; if (command === "set" || command === "consent") { return; } if (command === "event") { trackGAEvent({ ...parameters, category: "ga4_event", action, }); } }; })(); let pageLoadTime = Date.now(); let pageScrollDepth = 0; let scrollTimeout; let isUnloading = false; function trackClosed(action) { const properties = { seconds_on_page: Math.round((Date.now() - pageLoadTime) / 1000).toString(), page_scroll_depth: pageScrollDepth.toString(), action: action }; window.snowplow('trackSelfDescribingEvent', { event: { schema: 'iglu:studio.flourish/flourish_closed/jsonschema/1-0-0', data: properties } }); logEvent('flourish_closed', properties); } function updateScrollDepth() { const html = document.documentElement; const currentScrollDepth = Math.round( (html.scrollTop / (html.scrollHeight - html.clientHeight)) * 100 ); pageScrollDepth = Math.max(pageScrollDepth, currentScrollDepth); } window.addEventListener("scroll", () => { clearTimeout(scrollTimeout); scrollTimeout = setTimeout(updateScrollDepth, 100); }); window.addEventListener("beforeunload", () => { isUnloading = true; trackClosed("window_close"); }); document.addEventListener("visibilitychange", () => { if (document.visibilityState === "hidden" && !isUnloading) { trackClosed("tab_hidden"); } else if (document.visibilityState === "visible") { isUnloading = false; pageLoadTime = Date.now(); window.snowplow('trackPageView'); logEvent('page_view', {url: window.location.pathname}); } }); window.snowplow('trackPageView'); logEvent('page_view', {url: window.location.pathname}); } catch (error) { console.error('%c[SnowplowAnalytics] Error:', LOG_STYLES.error, error); } } window.OptanonWrapper = function () { if (!window.Optanon?.IsAlertBoxClosedAndValid()) return; if (window.OnetrustActiveGroups?.includes('C0002')) { initializeSnowplow(); } }; if (window.OnetrustActiveGroups?.includes('C0002')) { initializeSnowplow(); } })(); </script> <!-- TODO: This is temporary. We should import properly with rollup or remove d3-dependency --> <script src="/js/d3-dispatch.js"></script> <script src="/js/d3-interpolate.js"></script> <script src="/js/d3-selection.js"></script> <script src="/js/d3-timer.js"></script> <script src="/js/d3-transition.js"></script> <link rel="alternate" href="/atom.xml" title="Flourish" type="application/atom+xml"> <link href="/highlight.css?3e9f1d3cf8a99ebe7f3f230bae0e7d41" rel="stylesheet"> <link href="/style.css?20112024" rel="stylesheet"> <meta name="generator" content="Hexo 6.2.0"></head> <body onclick class="is-static"> <noscript> <iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PBJJP4J" height="0" width="0" style="display:none;visibility:hidden"></iframe> </noscript> <script> /** * Safely get the nearest element matching a selector */ const findClosestElement = (element, selector) => { if (!element || !element.closest) { return null; } try { return element.closest(selector); } catch (error) { console.warn('Error finding closest element:', error); return null; } } /** * Get data from the closest parent with specified attribute */ const getInheritedData = (element, attribute) => { try { const dataAttr = `data-${attribute}`; let current = element; while (current && current.nodeType === Node.ELEMENT_NODE) { if (current.hasAttribute(dataAttr)) { return current.getAttribute(dataAttr); } current = current.parentElement; } return null; } catch (error) { console.warn('Failed to get inherited data:', error); return null; } } /** * Initialize auto-tracking */ const initAutoTracking = () => { try { // Track clicks document.addEventListener('click', (e) => { if (!e?.target instanceof Element) return; const element = findClosestElement(e.target, '[data-track]'); if (!element) return; const trackType = element.dataset.track; if (trackType === 'true') { FlourishAnalytics.track(element); } else { FlourishAnalytics.track(element, { section_group: trackType }); } }); } catch (error) { console.warn('Failed to initialize auto-tracking:', error); } }; const initializeTracking = () => { initAutoTracking(); }; /** * Get all tracking data for an element */ const getTrackingData = (element) => { try { // Ensure we're working with a DOM element if (!(element instanceof Element)) { console.warn('Invalid element provided to getTrackingData'); return {}; } // Derive component name let component = element.dataset.component; if (!component) { if (element.tagName === 'A' && element.href) { // For links, use the last URL segment const path = element.getAttribute('href').replace(/\/$/, ''); const lastPart = path.split('/').pop(); component = lastPart || 'page'; } else if (element.tagName === 'BUTTON') { // For buttons, use text content or fallback const text = element.textContent?.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_'); component = text || 'button'; } else { // Fallback for other elements component = element.id || 'interaction'; } } // Find closest container with section info let section = element.dataset.section; if (!section) { // Look for standard section containers const sectionContainer = element.closest('[class*="section"],[class*="container"],[id*="section"],[id*="container"]'); if (sectionContainer) { section = sectionContainer.id || sectionContainer.className.split(' ')[0] || 'main'; } else { section = 'main'; } } return { section: section, section_id: element.dataset.sectionId || getInheritedData(element, 'section-id'), section_group: element.dataset.sectionGroup || getInheritedData(element, 'section-group'), component: component, component_id: element.dataset.componentId || getInheritedData(element, 'component-id') }; } catch (error) { console.warn('Failed to get tracking data:', error); return {}; } } window.FlourishAnalytics = { // Track an interaction track: function (element, overrides = {}) { try { if (!window?.sp?.trackInteraction) { console.warn('Analytics tracking is not available'); return; } // Ensure we have a valid element if (!(element instanceof Element)) { console.warn('Invalid element provided to track'); return; } const params = { ...getTrackingData(element), interaction_type: overrides.interaction_type || 'click', ...overrides }; if (params.section && params.component) { window.sp.trackInteraction(params); } else { console.warn('Missing required tracking fields:', { section: params.section, component: params.component }); } } catch (error) { console.warn('Failed to track interaction:', error); } }, // For general clicks/interactions trackClick: function (element, options = {}) { this.track(element, { interaction_type: 'click', ...options }); }, // For form interactions trackForm: function (form, action = 'submit', options = {}) { if (!(form instanceof Element)) return; const formData = { form_id: form.id || undefined, form_name: form.getAttribute('name') || undefined, form_action: action, ...options }; window.sp.trackFormInteraction(formData); }, }; // Initialize auto-tracking initializeTracking(); </script> <!-- onclick is used to make hover states work on Safari --> <div class="row header not-logged-in" data-section="header"> <div class="row-inner"> <!-- Logo - inherits section from parent --> <a href="/" class="logo clickable menu-item" data-track="click" data-component="logo"> <img id="logo" src="/images/Flourish_Logo_Black_small.png" alt="Flourish logo"> </a> <div class="menu-holder"> <h2 class="hamburger menu-item mobile-nav" tabindex="0"><i class="fa fa-bars"></i><i class="fa fa-close"></i></h2> <div class="menu desktop-nav"> <div class="dropdown-menu sub-menu" id="main-menu"> <div class="dropdown-menu-item-wrapper"> <a class="dropdown-menu-item" href="/examples" data-track="click" data-component="examples"> <h1 class="menu-item">Examples</h1> </a> </div> <div class="dropdown-menu-item-wrapper"> <div class="dropdown-menu-item has-dropdown" data-track="click" data-component="solutions" tabindex="0" aria-haspopup="true" href="/solutions"><h1 data-section="solutions" class="menu-item">Solutions</h1></div> <div class="dropdown-menu-contents"> <div class="dropdown-menu-section" data-section-group="solutions"> <div class="menu-section-header"><strong>Industry</strong></div> <a href="/solutions/financial-services" data-track="click" data-component="financial">Financial Services</a> <a href="/solutions/professional-services" data-track="click" data-component="professional">Professional Services</a> <a href="/solutions/newsrooms" data-track="click" data-component="newsrooms">Newsrooms</a> <a href="/solutions/marketing" data-track="click" data-component="marketing">Marketing</a> <a href="/solutions/not-for-profit" data-track="click" data-component="nonprofit">Nonprofits</a> <a href="/solutions/government" data-track="click" data-component="government">Government</a> <a href="/solutions/education" data-track="click" data-component="education">Education</a> </div> <div class="dropdown-menu-section" data-section-group="use_cases"> <div class="menu-section-header"><strong>Use cases</strong></div> <a href="/resources/elections" data-track="click" data-component="elections">Elections and polling</a> <a href="/resources/sports" data-track="click" data-component="sports">Sports and competitions</a> <a href="/visualisations/maps" data-track="click" data-component="maps">Maps</a> <a href="/resources/visualize-survey-data" data-track="click" data-component="survey">Survey responses</a> <a href="/visualisations/scrollytelling" data-track="click" data-component="scrollytelling">Scrollytelling</a> </div> </div> </div> <div class="dropdown-menu-item-wrapper"> <div class="dropdown-menu-item has-dropdown" tabindex="0" aria-haspopup="true" href="/resources"><h1 data-section="resources" data-track="click" data-component="resources" class="menu-item">Resources</h1></div> <div class="dropdown-menu-contents"> <div class="dropdown-menu-section" data-section-group="resources"> <div class="menu-section-header"><strong>Explore</strong></div> <a href="/blog" data-track="click" data-component="blog">Blog</a> <a href="/visualisations" data-track="click" data-component="chart_guides">Chart guides</a> <a href="/whats-new" data-track="click" data-component="whats_new">What's new</a> </div> <div class="dropdown-menu-section" data-section-group="resources"> <div class="menu-section-header"><strong>Learn</strong></div> <a href="https://helpcenter.flourish.studio/hc/en-us" target="_blank" data-track="click" data-component="help_docs">Help docs</a> <a href="/resources/webinar" data-track="click" data-component="webinars">Webinars</a> <a href="/resources/training" data-track="click" data-component="training">Training</a> <a href="/resources/datasets" data-track="click" data-component="datasets">Datasets</a> <a href="/accessibility" data-track="click" data-component="accessibility">Accessibility</a> </div> <div class="dropdown-menu-section" data-section-group="resources"> <div class="menu-section-header"><strong>Develop</strong></div> <a href="/experts" data-track="click" data-component="experts">Experts network</a> <a href="https://developers.flourish.studio/" target="_blank" data-track="click" data-component="developers">Flourish for developers</a> </div> </div> </div> <div class="dropdown-menu-item-wrapper"> <a class="dropdown-menu-item" href="/pricing" data-track="click" data-component="pricing"> <h1 class="menu-item">Pricing</h1> </a> </div> </div> <div id="account-menu"> <a class="btn log-in-link" target="_blank" rel="noopener" href="https://app.flourish.studio/login" data-track="click" data-component="login">Log in</a> <a class="btn sign-up-link" target="_blank" rel="noopener" href="https://app.flourish.studio/register" data-track="click" data-component="signup">Sign up</a> </div> </div> </div> </div> </div> <div class="content"> <div class="row static"> <div class="page page-guide" id="page-maps"> <script> window.Flourish = {}; </script> <div class="page-header"> <div class="row-inner"> <div class="header-container"> <div class="guide-header-container"> <h1> Make interactive <span style="color:#3382BE;">maps</span> without coding </h1> </div> <h2>Easily create stunning interactive maps with Flourish, the powerful platform for data visualization and storytelling</h2> <div class="header-cta"> <a target="_blank" rel="noopener" href="https://app.flourish.studio/templates#template-projection-map"><div class="btn">Get started now</div></a> </div> </div> </div> </div> <div class="page-content-container"> <div class="row-inner"> <figure class="flourish-embed-container auto"><div class="flourish-embed flourish-example" data-src="visualisation/19768476?624993"><script src="https://public.flourish.studio/resources/embed.js" data-ot-ignore></script></div><figcaption></figcaption></figure> <h3 id="Introduction"><a href="#Introduction" class="headerlink" title="Introduction"></a>Introduction</h3><p>Interactive maps are a great way to showcase your data and engage with your audience. If you have a geographical dimension in your data, a map can help you visualize those insights and find hidden patterns. At Flourish, we offer more than several map types to help you bring your data to life. Click on the arrows to see some examples and click on each map to explore the data.</p> <figure class="flourish-embed-container wide"><div class="flourish-embed" data-src="story/1965994?624993"><script src="https://public.flourish.studio/resources/embed.js" data-ot-ignore></script></div><figcaption></figcaption></figure> <h3 id="What-you-can-do-with-this-template"><a href="#What-you-can-do-with-this-template" class="headerlink" title="What you can do with this template"></a>What you can do with this template</h3><p>Wondering when you should use an interactive map as your go-to data visualization tool? Here are some good examples:</p> <ul> <li>To showcase the results of the last election cycle</li> <li>To show your revenue focusing on each individual country or city</li> <li>Plotting environmental or weather data, like heatwaves, earthquakes, or wildfires</li> <li>To plot census data</li> </ul> <h3 id="Features"><a href="#Features" class="headerlink" title="Features"></a>Features</h3><ul> <li><strong>Easy data visualization:</strong> our interactive maps transform complex data into visually appealing experiences. To get started, just import your data in one click.</li> <li><strong>Engaging user experience:</strong> our maps are fully interactive. Users can zoom in and out, click on specific regions or markers for more information, and explore the data in an intuitive and captivating way.</li> <li><strong>Advanced customization:</strong> tailor your map to your specific needs with our wide array of customization options. From color palettes to custom popups and tooltips, make your map your own, all while staying on brand using your company theme. </li> <li><strong>Embed anywhere on the web:</strong> all of our maps can be seamlessly integrated into websites, presentations, reports, or any other digital platform. </li> <li><strong>Dynamic data updates:</strong> premium users can easily update their data and see the changes reflected in real-time on their map. Use this to track sales figures, population statistics, or real-time events, ensuring that the map remains up-to-date and relevant.</li> </ul> <h3 id="Types-of-maps"><a href="#Types-of-maps" class="headerlink" title="Types of maps"></a>Types of maps</h3><p>Here are some examples of the types of maps you can build with Flourish.</p> <figure class="flourish-embed-container wide"><div class="flourish-embed" data-src="visualisation/14337465?624993"><script src="https://public.flourish.studio/resources/embed.js" data-ot-ignore></script></div><figcaption></figcaption></figure> <h3 id="See-it-in-action"><a href="#See-it-in-action" class="headerlink" title="See it in action"></a>See it in action</h3><p>Here are some examples of what our customers have created with our different map templates. Click on each card to learn more about each project.</p> <figure class="flourish-embed-container wide"><div class="flourish-embed" data-src="visualisation/14304439?624993"><script src="https://public.flourish.studio/resources/embed.js" data-ot-ignore></script></div><figcaption></figcaption></figure> <h3 id="Related-links"><a href="#Related-links" class="headerlink" title="Related links"></a>Related links</h3><p>To learn more about our interactive maps or to brush up your cartographic knowledge, here are some useful resources:</p> <ul> <li><a target="_blank" rel="noopener" href="https://help.flourish.studio/article/66-projection-map-an-overview">Learn the basics of projection maps: settings, data structures, customization and more</a><br></li> <li><a target="_blank" rel="noopener" href="https://help.flourish.studio/article/141-3d-map-an-overview">Learn the basics of animated 3D Maps: settings and customization</a><br></li> <li><a href="https://flourish.studio/blog/choosing-the-right-map-type-for-your-data/">Learn how to choose the right map for your data</a><br></li> <li><a target="_blank" rel="noopener" href="https://youtu.be/LPcEttrNV_E">Watch our Mapping 101 webinar to get started with interactive maps</a><br></li> </ul> </div> <!-- <script> Flourish.addAnalyticsListener(function (event) { var action = event.action; // Set a category for the event so you can identify that this was an engagement // with a Flourish var category = "visualisation_guide_embeds"; // Set a label so you can identify what was engaged with. var label = event.story_id ? ("Flourish story " + event.story_id) : ("Flourish visualisation " + event.visualisation_id); // Define the Data Layer event object var dataLayerEvent = { 'event': event.action, // Dynamic event name based on the action taken 'event_category': category, 'event_label': label, 'event_action': action, // Include any additional data from the event object }; // Copy additional properties from the event object to the dataLayerEvent Object.keys(event).forEach(function(key) { if (key !== "action") { dataLayerEvent[key] = event[key]; } }); // Push the event data to the Data Layer window.dataLayer = window.dataLayer || []; window.dataLayer.push(dataLayerEvent); }) </script> --> </div> <div class="page-content-container" id="get-started-cta"> <div class="get-started-cta-container"> <div class="cta-video"> <video muted autoplay loop playsinline preload="none" poster="../../images/flourish_platform.png" src=" /images/endscreens/maps_endscreen.mp4" type="video/mp4"> </video> </div> <div class="cta-content"> <h1> Make a custom map </h1> <h2> Explore and explain your data with stunning visualizations and stories. Publish, present or download. No need to code or install software. </h2> <a href=" https://app.flourish.studio/templates?type=1730938" target="_blank"> <button class="btn cta">Get started now</button> </a> </div> </div> </div> </div> </div> </div> <div class="row footer" data-section="footer"> <div class="row-contents"> <div class="row-inner"> <div class="footer-container"> <!-- Company section --> <div class="footer-section company" data-section-group="company"> <h4>Company</h4> <ul> <li><a href="/company" data-track="click" data-component="about">About us</a></li> <li><a target="_blank" rel="noopener" href="https://www.lifeatcanva.com/en/locations/united-kingdom/" data-track="click" data-component="careers">Careers</a></li> <li><a href="/security" data-track="click">Security</a></li> <li><a href="/pricing" data-track="click">Pricing</a></li> <li><a href="/terms" data-track="click">Terms</a></li> <li><a href="/privacy" data-track="click">Privacy policy</a></li> <li><a href="/resources/faq" data-track="click">FAQs</a></li> </ul> </div> <!-- Explore section --> <div class="footer-section explore" data-section-group="explore"> <h4>Explore</h4> <ul> <li><a href="/examples" data-track="click">Examples</a></li> <li><a href="/resources/elections" data-track="click">Elections & polls</a></li> <li><a href="/resources/sports" data-track="click">Sports & competitions</a></li> <li><a href="/visualisations/maps" data-track="click">Interactive maps</a></li> <li><a href="/resources/visualize-survey-data" data-track="click" data-component="survey">Survey responses</a></li> <li><a href="/visualisations/scrollytelling" data-track="click">Scrollytelling</a></li> <li><a href="/visualisations" data-track="click">Chart guides</a></li> <li><a href="/blog" data-track="click">Blog</a></li> </ul> </div> <!-- Solutions section --> <div class="footer-section solutions" data-section-group="solutions"> <h4>Solutions</h4> <ul> <li><a href="/solutions/financial-services" data-track="click" data-component="financial">Financial services</a></li> <li><a href="/solutions/professional-services" data-track="click" data-component="professional">Professional services</a></li> <li><a href="/solutions/newsrooms" data-track="click">Newsrooms</a></li> <li><a href="/solutions/marketing" data-track="click">Marketing</a></li> <li><a href="/solutions/not-for-profit" data-track="click" data-component="nonprofit">Nonprofits</a></li> <li><a href="/solutions/government" data-track="click">Government</a></li> <li><a href="/solutions/education" data-track="click">Education</a></li> </ul> </div> <!-- Resources section --> <div class="footer-section resources" data-section-group="resources"> <h4>Resources</h4> <ul> <li><a href="/whats-new" data-track="click" data-component="whats_new">What's new</a></li> <li><a target="_blank" rel="noopener" href="https://help.flourish.studio/" data-track="click" data-component="help_docs" onclick="FlourishAnalytics.trackOutbound('https://help.flourish.studio/', this)">Help docs</a></li> <li><a href="/resources/training" data-track="click">Training</a></li> <li><a href="/resources/webinar" data-track="click">Webinars</a></li> <li><a href="/resources/datasets" data-track="click">Datasets</a></li> <li><a href="/accessibility" data-track="click">Accessibility</a></li> <li><a href="/experts" data-track="click">Experts network</a></li> <li><a href="https://flourish.studio/developers" data-track="click" onclick="FlourishAnalytics.trackOutbound('https://flourish.studio/developers', this)">For developers</a></li> </ul> </div> <!-- Company info --> <div class="footer-section company-info"> <h4>Flourish</h4> <p class="break-text">Flourish is a registered trademark of <span>Canva UK Operations Ltd, UK</span></p> <p>company 08825531</p> <p>33 Hoxton Square</p> <p>London N1 6NN</p> </div> </div> </div> <!-- Stay in touch section --> <div class="footer-container-black"> <div class="row-inner"> <div class="footer-section stay-in-touch"> <h4>Stay in touch</h4> <div class="footer-row-items"> <div class="btn-social-container"> <a href="/newsletter" data-track="click" data-component="newsletter"> <div class="footer-btn">Subscribe to our newsletter</div> </a> <div class="social-links" data-section-group="social"> <a target="_blank" rel="noopener" href="https://x.com/f_l_o_u_r_i_s_h" aria-label="X" data-track="click" data-component="x"> <img class="icon" src="/images/icons/x-logo.svg"> </a> <a target="_blank" rel="noopener" href="https://www.instagram.com/madewithflourish/" aria-label="instagram" data-track="click" data-component="instagram"> <img class="icon" src="/images/icons/instagram-logo.svg"> </a> <a target="_blank" rel="noopener" href="https://www.linkedin.com/company/f-l-o-u-r-i-s-h" aria-label="LinkedIn" data-track="click" data-component="linkedin"> <img class="icon" src="/images/icons/linkedin-logo.svg"> </a> <a target="_blank" rel="noopener" href="https://www.youtube.com/channel/UCWTf4OgEH_MiDvfmjPdkTxg" aria-label="YouTube" data-track="click" data-component="youtube"> <img class="icon" src="/images/icons/youtube-logo.svg"> </a> </div> </div> <div class="footer-credit"> <p>漏 2024 Flourish, a Canva UK Operations Limited brand. All rights reserved.</p> </div> </div> </div> </div> </div> </div> </div> <script src="/js/script.js?ddcb49de92eb2662628cec21b9bfeefd"></script> <script src="/js/store-inbound-fields.js"></script> </body> </html>