Files
Meshtastic-Android/main/cs-rCZ/user/map-and-waypoints.html
T

3 lines
48 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <link rel="stylesheet" href="/Meshtastic-Android/main/assets/css/just-the-docs-default.css"> <link rel="stylesheet" href="/Meshtastic-Android/main/assets/css/just-the-docs-head-nav.css" id="jtd-head-nav-stylesheet"> <style id="jtd-nav-activation"> .site-nav ul li a { background-image: none; } </style> <script src="/Meshtastic-Android/main/assets/js/vendor/lunr.min.js"></script> <script src="/Meshtastic-Android/main/assets/js/just-the-docs.js"></script> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Begin Jekyll SEO tag v2.9.0 --> <title>Map &amp; Waypoints | Meshtastic Android</title> <meta name="generator" content="Jekyll v4.4.1" /> <meta property="og:title" content="Map &amp; Waypoints" /> <meta property="og:locale" content="cs_rCZ" /> <meta name="description" content="View node positions on the map, create and share waypoints, manage map layers and Site Planner, and control position sharing and privacy." /> <meta name="twitter:description" property="og:description" content="View node positions on the map, create and share waypoints, manage map layers and Site Planner, and control position sharing and privacy." /> <link rel="canonical" href="/Meshtastic-Android/main/cs-rCZ/user/map-and-waypoints.html" /> <meta property="og:url" content="/Meshtastic-Android/main/cs-rCZ/user/map-and-waypoints.html" /> <meta property="og:site_name" content="Meshtastic Android" /> <meta property="og:type" content="website" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:title" content="Map &amp; Waypoints" /> <script type="application/ld+json"> {"@context":"https://schema.org","@type":"WebPage","description":"View node positions on the map, create and share waypoints, manage map layers and Site Planner, and control position sharing and privacy.","headline":"Map &amp; Waypoints","url":"/Meshtastic-Android/main/cs-rCZ/user/map-and-waypoints.html"}</script> <!-- End Jekyll SEO tag --> <!-- Inter font from Google Fonts --> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet"> <style> /* M3-inspired typography */ :root { --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; --font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', ui-monospace, monospace; } body, .site-title, .search-input { font-family: var(--font-sans) !important; } code, pre, .highlight { font-family: var(--font-mono) !important; font-size: 0.875em; } /* M3 surface elevation & rounding */ .main-content table { border-radius: 12px; overflow: hidden; } .main-content blockquote { border-radius: 12px; padding: 1rem 1.25rem; border-left-width: 4px; } .main-content pre { border-radius: 12px; } .main-content code { border-radius: 6px; padding: 0.15em 0.4em; } /* Smooth transitions for theme switching */ body, .side-bar, .main, .main-content, .site-header, .search-input, .search-results, a { transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease; } /* Theme toggle button styling */ .theme-toggle { background: none; border: 1px solid var(--border-color, #D5D6E0); border-radius: 20px; padding: 6px 12px; cursor: pointer; font-family: var(--font-sans); font-size: 0.75rem; font-weight: 500; display: inline-flex; align-items: center; gap: 6px; color: inherit; margin: 0 auto; transition: background-color 0.2s ease, border-color 0.2s ease; } .theme-toggle:hover { background-color: rgba(128, 128, 128, 0.1); } .theme-toggle-wrap { text-align: center; padding: 12px 0 4px; } /* Heading weight refinement */ h1, h2, h3, h4, h5, h6 { font-weight: 600; letter-spacing: -0.01em; } h1 { font-weight: 700; letter-spacing: -0.02em; } /* Smooth anchor scroll */ html { scroll-behavior: smooth; } /* Language switcher */ .language-switcher { display: inline-block; position: relative; margin-left: 8px; } .language-switcher-btn { cursor: pointer; font-size: 0.8rem; font-weight: 500; font-family: var(--font-sans); list-style: none; padding: 4px 10px; border: 1px solid var(--border-color, #D5D6E0); border-radius: 16px; display: inline-flex; align-items: center; gap: 4px; transition: background-color 0.2s ease; } .language-switcher-btn:hover { background-color: rgba(128, 128, 128, 0.1); } .language-switcher[open] .language-switcher-list { display: block; } .language-switcher-list { position: absolute; top: 100%; right: 0; left: auto; z-index: 100; list-style: none; padding: 8px 0; margin: 4px 0 0; min-width: 140px; background: var(--body-background-color, #fff); border: 1px solid var(--border-color, #D5D6E0); border-radius: 12px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .language-switcher-list li { padding: 0; } .language-switcher-list a { display: block; padding: 6px 16px; text-decoration: none; font-size: 0.85rem; color: inherit; } .language-switcher-list a:hover { background-color: rgba(103, 234, 148, 0.15); } /* Version switcher (shares the language-switcher dropdown styling) */ .version-switcher { margin-left: 8px; } .version-switcher[hidden] { display: none; } /* Link out to the upstream meshtastic.org docs */ .upstream-docs-link { display: inline-flex; align-items: center; margin-left: 8px; padding: 4px 10px; border: 1px solid var(--border-color, #D5D6E0); border-radius: 16px; font-size: 0.8rem; font-weight: 500; font-family: var(--font-sans); text-decoration: none; color: inherit; transition: background-color 0.2s ease; } .upstream-docs-link:hover { background-color: rgba(128, 128, 128, 0.1); } </style> <script> // Respect OS preference on first visit, then remember user choice (function() { var stored = localStorage.getItem('jtd-theme'); if (stored) return; // will be applied by jtd.setTheme below if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { localStorage.setItem('jtd-theme', 'meshtastic-dark'); } })(); </script> </head> <body> <a class="skip-to-main" href="#main-content">Skip to main content</a> <svg xmlns="http://www.w3.org/2000/svg" class="d-none"> <symbol id="svg-link" viewBox="0 0 24 24"> <title>Link</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link"> <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path> </svg> </symbol> <symbol id="svg-menu" viewBox="0 0 24 24"> <title>Menu</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-menu"> <line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line> </svg> </symbol> <symbol id="svg-arrow-right" viewBox="0 0 24 24"> <title>Expand</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-chevron-right"> <polyline points="9 18 15 12 9 6"></polyline> </svg> </symbol> <!-- Feather. MIT License: https://github.com/feathericons/feather/blob/master/LICENSE --> <symbol id="svg-external-link" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-external-link"> <title id="svg-external-link-title">(external link)</title> <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1="10" y1="14" x2="21" y2="3"></line> </symbol> <symbol id="svg-doc" viewBox="0 0 24 24"> <title>Document</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-file"> <path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z"></path><polyline points="13 2 13 9 20 9"></polyline> </svg> </symbol> <symbol id="svg-search" viewBox="0 0 24 24"> <title>Search</title> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-search"> <circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line> </svg> </symbol> <!-- Bootstrap Icons. MIT License: https://github.com/twbs/icons/blob/main/LICENSE.md --> <symbol id="svg-copy" viewBox="0 0 16 16"> <title>Copy</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard" viewBox="0 0 16 16"> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1h1a1 1 0 0 1 1 1V14a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V3.5a1 1 0 0 1 1-1h1v-1z"/> <path d="M9.5 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3zm-3-1A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3z"/> </svg> </symbol> <symbol id="svg-copied" viewBox="0 0 16 16"> <title>Copied</title> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-clipboard-check-fill" viewBox="0 0 16 16"> <path d="M6.5 0A1.5 1.5 0 0 0 5 1.5v1A1.5 1.5 0 0 0 6.5 4h3A1.5 1.5 0 0 0 11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3Zm3 1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-3a.5.5 0 0 1-.5-.5v-1a.5.5 0 0 1 .5-.5h3Z"/> <path d="M4 1.5H3a2 2 0 0 0-2 2V14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V3.5a2 2 0 0 0-2-2h-1v1A2.5 2.5 0 0 1 9.5 5h-3A2.5 2.5 0 0 1 4 2.5v-1Zm6.854 7.354-3 3a.5.5 0 0 1-.708 0l-1.5-1.5a.5.5 0 0 1 .708-.708L7.5 10.793l2.646-2.647a.5.5 0 0 1 .708.708Z"/> </svg> </symbol> </svg> <header class="side-bar"> <div class="site-header"> <a href="/Meshtastic-Android/main/" class="site-title lh-tight"> Meshtastic Android </a> <button id="menu-button" class="site-button btn-reset" aria-label="Menu" aria-expanded="false"> <svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg> </button> </div> <nav aria-label="Main" id="site-nav" class="site-nav"> <ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/" class="nav-list-link">Home</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/" class="nav-list-link">Home</a></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="User Guide submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/Meshtastic-Android/main/en/user.html" class="nav-list-link">User Guide</a><ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/onboarding.html" class="nav-list-link">Getting Started</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/onboarding.html" class="nav-list-link">Getting Started</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/connections.html" class="nav-list-link">Connexions</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/connections.html" class="nav-list-link">Connections</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/messages-and-channels.html" class="nav-list-link">Messages & Channels</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/messages-and-channels.html" class="nav-list-link">Messages & Channels</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/nodes.html" class="nav-list-link">Nœuds</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/nodes.html" class="nav-list-link">Nodes</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/node-metrics.html" class="nav-list-link">Node Metrics</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/node-metrics.html" class="nav-list-link">Node Metrics</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/map-and-waypoints.html" class="nav-list-link">Map & Waypoints</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/map-and-waypoints.html" class="nav-list-link">Map & Waypoints</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/settings-radio-user.html" class="nav-list-link">Settings — Radio & User</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/settings-radio-user.html" class="nav-list-link">Settings — Radio & User</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/settings-module-admin.html" class="nav-list-link">Settings — Modules & Admin</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/settings-module-admin.html" class="nav-list-link">Settings — Modules & Admin</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/tak.html" class="nav-list-link">TAK Integration</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/tak.html" class="nav-list-link">TAK Integration</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/mqtt.html" class="nav-list-link">MQTT</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/mqtt.html" class="nav-list-link">MQTT</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/discovery.html" class="nav-list-link">Découverte de maille locale</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/discovery.html" class="nav-list-link">Local Mesh Discovery</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/firmware.html" class="nav-list-link">Firmware Updates</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/firmware.html" class="nav-list-link">Firmware Updates</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/desktop.html" class="nav-list-link">Desktop App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/desktop.html" class="nav-list-link">Desktop App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/signal-meter.html" class="nav-list-link">How the Meshtastic Signal Meter Works</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/signal-meter.html" class="nav-list-link">How the Meshtastic Signal Meter Works</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/units-and-locale.html" class="nav-list-link">Units, Measurement & Locale</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/units-and-locale.html" class="nav-list-link">Units, Measurement & Locale</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/fr-rCA/user/translate.html" class="nav-list-link">Translate the App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/translate.html" class="nav-list-link">Translate the App</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/app-functions.html" class="nav-list-link">App Functions</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/widget.html" class="nav-list-link">Home Screen Widget</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/help-and-docs.html" class="nav-list-link">Help & In-App Docs</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/user/debug-logs.html" class="nav-list-link">Debug Logs</a></li></ul></li><li class="nav-list-item"><button class="nav-list-expander btn-reset" aria-label="Developer Guide submenu" aria-expanded="false"> <svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg> </button><a href="/Meshtastic-Android/main/en/developer.html" class="nav-list-link">Developer Guide</a><ul class="nav-list"><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/architecture.html" class="nav-list-link">Architecture</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/codebase.html" class="nav-list-link">Codebase</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/adding-a-feature-module.html" class="nav-list-link">Adding a Feature Module</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/navigation-and-deep-links.html" class="nav-list-link">Navigation & Deep Links</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/transport.html" class="nav-list-link">Transport</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/persistence.html" class="nav-list-link">Persistence</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/testing.html" class="nav-list-link">Testing</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/contributing.html" class="nav-list-link">Contributing</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/measurement.html" class="nav-list-link">Measurement & Formatting</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/test-builds.html" class="nav-list-link">Test Builds & Obtainium</a></li><li class="nav-list-item"><a href="/Meshtastic-Android/main/en/developer/documentation-style.html" class="nav-list-link">Documentation Style</a></li></ul></li></ul> </nav> <div class="d-md-block d-sm-none"> <div class="site-footer"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </header> <div class="main" id="top"> <div id="main-header" class="main-header"> <div class="search" role="search"> <div class="search-input-wrap"> <input type="text" id="search-input" class="search-input" tabindex="0" placeholder="Search Meshtastic Android" autocomplete="off"> <label for="search-input" class="search-label"> <span class="sr-only">Search Meshtastic Android</span> <svg viewBox="0 0 24 24" class="search-icon" aria-hidden="true"><use xlink:href="#svg-search"></use></svg> </label> </div> <div id="search-results" class="search-results"></div> </div> <div class="theme-toggle-wrap"> <button class="theme-toggle" id="theme-toggle" aria-label="Toggle dark mode" title="Toggle light/dark theme" onclick="toggleMeshtasticTheme()"> <span id="theme-icon">🌙</span> <span id="theme-label">Dark</span> </button> <details class="language-switcher version-switcher" id="version-switcher" aria-label="Documentation version" hidden> <summary class="language-switcher-btn" title="Switch documentation version"> 🏷️ <span id="version-current"></span> </summary> <ul class="language-switcher-list" id="version-switcher-list"></ul> </details> <script> (function() { var baseurl = '/Meshtastic-Android/main'; var root = baseurl; var channel = 'latest'; // /main/, /vX.Y.Z/ or a prerelease snapshot like /v2.8.0-open.1/. var match = baseurl.match(/^(.*)\/(main|v\d+\.\d+\.\d+(?:-(?:open|closed)\.\d+)?)$/); if (match) { root = match[1]; channel = match[2]; } fetch(root + '/versions.json') .then(function(res) { return res.ok ? res.json() : Promise.reject(); }) .then(function(data) { var switcher = document.getElementById('version-switcher'); var list = document.getElementById('version-switcher-list'); var current = document.getElementById('version-current'); if (!switcher || !list || !current) return; // Keep the reader on the same page when switching channels; a page // that doesn't exist in the target version lands on the 404 page. var relativePath = location.pathname.slice(baseurl.length) + location.hash; var entries = []; if (data.latest) { entries.push({ id: 'latest', label: 'latest (v' + data.latest + ')', base: root }); } // Prereleases are documented ahead of general availability, so the track // is always spelled out — a reader must not mistake a closed-testing // snapshot for a shipped release. (data.prereleases || []).forEach(function(p) { entries.push({ id: p.dir, label: p.dir.replace(/^v/, 'v') + ' — ' + p.track + ' testing', base: root + '/' + p.dir }); }); if (data.hasMain) { entries.push({ id: 'main', label: 'main (unreleased snapshot)', base: root + '/main' }); } (data.versions || []).forEach(function(v) { entries.push({ id: 'v' + v, label: 'v' + v, base: root + '/v' + v }); }); var currentEntry = entries.filter(function(e) { return e.id === channel; })[0]; current.textContent = currentEntry ? currentEntry.label : channel; var others = entries.filter(function(e) { return e.id !== channel; }); if (others.length === 0) return; others.forEach(function(e) { var li = document.createElement('li'); var a = document.createElement('a'); a.href = e.base + relativePath; a.textContent = e.label; li.appendChild(a); list.appendChild(li); }); switcher.hidden = false; }) .catch(function() { /* no manifest (local build) — leave switcher hidden */ }); })(); </script> <details class="language-switcher" aria-label="Language options"> <summary class="language-switcher-btn" title="View in another language"> 🌐 <span class="lang-current">Čeština</span> </summary> <ul class="language-switcher-list"> <li><a href="/Meshtastic-Android/main/en/user/map-and-waypoints" lang="en">English</a></li> <li><a href="/Meshtastic-Android/main/ar-rSA/user/map-and-waypoints" lang="ar-rSA" dir="rtl">العربية</a></li> <li><a href="/Meshtastic-Android/main/be-rBY/user/map-and-waypoints" lang="be-rBY" >Беларуская</a></li> <li><a href="/Meshtastic-Android/main/bg-rBG/user/map-and-waypoints" lang="bg-rBG" >Български</a></li> <li><a href="/Meshtastic-Android/main/ca-rES/user/map-and-waypoints" lang="ca-rES" >Català</a></li> <li><a href="/Meshtastic-Android/main/de-rDE/user/map-and-waypoints" lang="de-rDE" >Deutsch</a></li> <li><a href="/Meshtastic-Android/main/el-rGR/user/map-and-waypoints" lang="el-rGR" >Ελληνικά</a></li> <li><a href="/Meshtastic-Android/main/es-rES/user/map-and-waypoints" lang="es-rES" >Español</a></li> <li><a href="/Meshtastic-Android/main/et-rEE/user/map-and-waypoints" lang="et-rEE" >Eesti</a></li> <li><a href="/Meshtastic-Android/main/fi-rFI/user/map-and-waypoints" lang="fi-rFI" >Suomi</a></li> <li><a href="/Meshtastic-Android/main/fr-rFR/user/map-and-waypoints" lang="fr-rFR" >Français</a></li> <li><a href="/Meshtastic-Android/main/ga-rIE/user/map-and-waypoints" lang="ga-rIE" >Gaeilge</a></li> <li><a href="/Meshtastic-Android/main/gl-rES/user/map-and-waypoints" lang="gl-rES" >Galego</a></li> <li><a href="/Meshtastic-Android/main/iw-rIL/user/map-and-waypoints" lang="iw-rIL" dir="rtl">עברית</a></li> <li><a href="/Meshtastic-Android/main/hr-rHR/user/map-and-waypoints" lang="hr-rHR" >Hrvatski</a></li> <li><a href="/Meshtastic-Android/main/ht-rHT/user/map-and-waypoints" lang="ht-rHT" >Kreyòl Ayisyen</a></li> <li><a href="/Meshtastic-Android/main/hu-rHU/user/map-and-waypoints" lang="hu-rHU" >Magyar</a></li> <li><a href="/Meshtastic-Android/main/is-rIS/user/map-and-waypoints" lang="is-rIS" >Íslenska</a></li> <li><a href="/Meshtastic-Android/main/it-rIT/user/map-and-waypoints" lang="it-rIT" >Italiano</a></li> <li><a href="/Meshtastic-Android/main/ja-rJP/user/map-and-waypoints" lang="ja-rJP" >日本語</a></li> <li><a href="/Meshtastic-Android/main/ko-rKR/user/map-and-waypoints" lang="ko-rKR" >한국어</a></li> <li><a href="/Meshtastic-Android/main/lt-rLT/user/map-and-waypoints" lang="lt-rLT" >Lietuvių</a></li> <li><a href="/Meshtastic-Android/main/nl-rNL/user/map-and-waypoints" lang="nl-rNL" >Nederlands</a></li> <li><a href="/Meshtastic-Android/main/no-rNO/user/map-and-waypoints" lang="no-rNO" >Norsk</a></li> <li><a href="/Meshtastic-Android/main/pl-rPL/user/map-and-waypoints" lang="pl-rPL" >Polski</a></li> <li><a href="/Meshtastic-Android/main/pt-rBR/user/map-and-waypoints" lang="pt-rBR" >Português (Brasil)</a></li> <li><a href="/Meshtastic-Android/main/pt-rPT/user/map-and-waypoints" lang="pt-rPT" >Português</a></li> <li><a href="/Meshtastic-Android/main/ro-rRO/user/map-and-waypoints" lang="ro-rRO" >Română</a></li> <li><a href="/Meshtastic-Android/main/ru-rRU/user/map-and-waypoints" lang="ru-rRU" >Русский</a></li> <li><a href="/Meshtastic-Android/main/sk-rSK/user/map-and-waypoints" lang="sk-rSK" >Slovenčina</a></li> <li><a href="/Meshtastic-Android/main/sl-rSI/user/map-and-waypoints" lang="sl-rSI" >Slovenščina</a></li> <li><a href="/Meshtastic-Android/main/sq-rAL/user/map-and-waypoints" lang="sq-rAL" >Shqip</a></li> <li><a href="/Meshtastic-Android/main/sr-rLatn/user/map-and-waypoints" lang="sr-rLatn" >Српски (Latinica)</a></li> <li><a href="/Meshtastic-Android/main/srp/user/map-and-waypoints" lang="srp" >Српски (Ћирилица)</a></li> <li><a href="/Meshtastic-Android/main/sv-rSE/user/map-and-waypoints" lang="sv-rSE" >Svenska</a></li> <li><a href="/Meshtastic-Android/main/tr-rTR/user/map-and-waypoints" lang="tr-rTR" >Türkçe</a></li> <li><a href="/Meshtastic-Android/main/uk-rUA/user/map-and-waypoints" lang="uk-rUA" >Українська</a></li> <li><a href="/Meshtastic-Android/main/zh-rCN/user/map-and-waypoints" lang="zh-rCN" >中文 (简体)</a></li> <li><a href="/Meshtastic-Android/main/zh-rTW/user/map-and-waypoints" lang="zh-rTW" >中文 (繁體)</a></li> </ul> </details> <a class="upstream-docs-link" href="https://meshtastic.org/docs/" title="Official Meshtastic documentation (meshtastic.org)">Meshtastic Docs ↗</a> </div> <script> function toggleMeshtasticTheme() { var current = localStorage.getItem('jtd-theme') || 'meshtastic'; var next = (current === 'meshtastic-dark') ? 'meshtastic' : 'meshtastic-dark'; if (typeof jtd !== 'undefined' && typeof jtd.setTheme === 'function') { jtd.setTheme(next); } localStorage.setItem('jtd-theme', next); var icon = document.getElementById('theme-icon'); var label = document.getElementById('theme-label'); if (icon && label) { icon.textContent = (next === 'meshtastic-dark') ? '☀️' : '🌙'; label.textContent = (next === 'meshtastic-dark') ? 'Light' : 'Dark'; } } // Apply stored/OS theme on page load (function() { var theme = localStorage.getItem('jtd-theme') || 'meshtastic'; // Sync toggle label immediately var icon = document.getElementById('theme-icon'); var label = document.getElementById('theme-label'); if (icon && label) { icon.textContent = (theme === 'meshtastic-dark') ? '☀️' : '🌙'; label.textContent = (theme === 'meshtastic-dark') ? 'Light' : 'Dark'; } // Apply theme once jtd is ready function tryApply() { if (typeof jtd !== 'undefined' && typeof jtd.setTheme === 'function') { jtd.setTheme(theme); } else { setTimeout(tryApply, 50); } } tryApply(); })(); </script> </div> <div class="main-content-wrap"> <nav aria-label="Breadcrumb" class="breadcrumb-nav"> <ol class="breadcrumb-nav-list"> <li class="breadcrumb-nav-list-item"><a href="/Meshtastic-Android/main/en/user.html">User Guide</a></li> <li class="breadcrumb-nav-list-item"><span>Map & Waypoints</span></li> </ol> </nav> <div id="main-content" class="main-content"> <main> <div class="locale-page-banner" > <p class="locale-notice"> 🌐 <strong>Čeština</strong> — Community translation <a href="/Meshtastic-Android/main/en/user/map-and-waypoints">View in English</a> </p> </div> <div lang="cs-rCZ"> <h1 id="map--waypoints"> <a href="#map--waypoints" class="anchor-heading" aria-labelledby="map--waypoints"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Map &amp; Waypoints </h1> <p>The Map screen shows the geographic positions of nodes on your mesh, along with shared waypoints.</p> <h2 id="map-view"> <a href="#map-view" class="anchor-heading" aria-labelledby="map-view"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Map View </h2> <p>The map displays:</p> <ul> <li><strong>Node positions</strong> — colored markers for each node reporting location</li> <li><strong>Waypoints</strong> — shared points of interest</li> <li><strong>Your position</strong> — your current GPS location</li> </ul> <h3 id="node-markers"> <a href="#node-markers" class="anchor-heading" aria-labelledby="node-markers"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Node Markers </h3> <p>Each node that reports a position is shown as a <strong>node chip</strong> marker displaying the node’s short name. The chip is colored by the node’s own identity color (a stable color derived from its node number) — the same chip used in the node list, so a node looks the same everywhere. Marker color does <strong>not</strong> encode online/offline status. When a node’s position updates live, its marker briefly pulses. Nearby markers are clustered as you zoom out.</p> <h3 id="map-controls"> <a href="#map-controls" class="anchor-heading" aria-labelledby="map-controls"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Map Controls </h3> <ul> <li><strong>Zoom</strong> — pinch or use +/- buttons</li> <li><strong>Pan</strong> — drag to explore</li> <li><strong>Center</strong> — tap the location button to center on your position</li> <li><strong>Node tap</strong> — tap a node marker to view details</li> </ul> <p>The floating toolbar provides quick access to the compass, the map type and layers pickers, node filters, Site Planner, and location tracking. Tap the compass to reorient north-up, or tap the location button to center on your current position. On <strong>Google Play</strong> builds a refresh button joins them while a network layer is showing; on <strong>F-Droid</strong> and <strong>Desktop</strong>, refresh a network layer from its own row in the layers sheet instead.</p> <p><img src="../../assets/screenshots/map_controls_overlay.png" alt="Map floating toolbar with compass, filter, refresh, and location controls" /></p> <h3 id="filtering-the-map"> <a href="#filtering-the-map" class="anchor-heading" aria-labelledby="filtering-the-map"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Filtering the Map </h3> <p>Tap the filter button in the floating toolbar to open <strong>Filter map</strong>. <strong>Display</strong> controls what is drawn: <strong>Only Favorites</strong>, <strong>Show Waypoints</strong>, <strong>Show Precision Circles</strong>, and a slider that hides nodes not heard from recently. <strong>Node roles</strong> is a chip per device role, plus <strong>All</strong> to show every role; a selected chip means that role is shown. <strong>Nodes</strong> narrows the set further with <strong>Hide offline nodes</strong>, <strong>Only show direct nodes</strong>, <strong>Signed only</strong>, <strong>Encrypted only</strong>, <strong>Exclude MQTT</strong>, <strong>Show ignored nodes</strong>, and <strong>Include unknown</strong> — the same rules as the node list’s <a href="nodes">filter toggles</a>.</p> <p>A dot on the filter button means at least one filter is hiding something — check it before concluding the mesh is quiet. Turning <strong>Show Waypoints</strong> off hides every waypoint, including your own. <strong>Show ignored nodes</strong> adds them to the map rather than showing only them — unlike the node list’s <strong>Only show ignored Nodes</strong>.</p> <h2 id="waypoints"> <a href="#waypoints" class="anchor-heading" aria-labelledby="waypoints"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Waypoints </h2> <p>Waypoints are shared points of interest, visible to everyone on your mesh.</p> <h3 id="creating-a-waypoint"> <a href="#creating-a-waypoint" class="anchor-heading" aria-labelledby="creating-a-waypoint"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Creating a Waypoint </h3> <p>Your radio must be connected — the map ignores a touch &amp; hold while it is not, because saving a waypoint means broadcasting it.</p> <ol> <li>Touch &amp; hold the map at the desired location.</li> <li>Enter a name and optional description.</li> <li>Choose an icon/emoji for the waypoint.</li> <li>Tap <strong>Send</strong> to share with the mesh.</li> </ol> <p>Waypoints always broadcast to the whole mesh on the primary channel. Unlike a message, a waypoint cannot be addressed to one channel or sent as a direct message.</p> <h3 id="waypoint-properties"> <a href="#waypoint-properties" class="anchor-heading" aria-labelledby="waypoint-properties"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Waypoint Properties </h3> <div class="table-wrapper"><table> <thead> <tr> <th>Property</th> <th>Popis</th> </tr> </thead> <tbody> <tr> <td>Jméno</td> <td>Short identifier (max 29 characters)</td> </tr> <tr> <td>Popis</td> <td>Optional longer description</td> </tr> <tr> <td>Icon</td> <td>Visual marker emoji on the map</td> </tr> <tr> <td>Uzamknout</td> <td>If locked, only the creator can edit or delete</td> </tr> <tr> <td>Expiration</td> <td>Optional auto-remove date and time</td> </tr> <tr> <td>Geofence</td> <td>Optional enter/exit alert area — see <a href="#waypoint-geofences">Waypoint Geofences</a></td> </tr> </tbody> </table></div> <h3 id="waypoint-expiration"> <a href="#waypoint-expiration" class="anchor-heading" aria-labelledby="waypoint-expiration"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Waypoint Expiration </h3> <p>Waypoints can be set to expire automatically:</p> <ul> <li><strong>Never</strong> (default) — waypoint remains until manually deleted</li> <li><strong>Timed</strong> — pick a specific date and time; the waypoint is automatically removed once that time passes. Useful for temporary markers like rally points, hazards, or meeting locations.</li> </ul> <p>Expired waypoints are automatically hidden from the map so they don’t clutter the display. The expiration countdown is based on the absolute time you picked, not a duration from when the waypoint was created or received.</p> <h3 id="waypoint-geofences"> <a href="#waypoint-geofences" class="anchor-heading" aria-labelledby="waypoint-geofences"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Waypoint Geofences </h3> <p>Any waypoint can also define a <strong>geofence</strong> — an alert area — so you or others get notified when a node enters or leaves it:</p> <ol> <li>Set a <strong>geofence radius</strong> from the preset chips (or <strong>Off</strong> to disable), or tap <strong>Set area on map</strong> to draw a custom rectangular area instead.</li> <li>Once a region is set, toggle <strong>Notify on enter</strong> and/or <strong>Notify on exit</strong>.</li> <li>Optionally enable <strong>Favorites only</strong> to limit alerts to your favorited nodes.</li> </ol> <p>Since waypoints (and their geofences) are broadcast to the whole mesh, only the <strong>creator</strong> is alerted by default. If someone else shares a geofenced waypoint with you, its detail view offers a <strong>Notify me of crossings</strong> opt-in so you can also receive enter/exit alerts for it.</p> <h3 id="managing-waypoints"> <a href="#managing-waypoints" class="anchor-heading" aria-labelledby="managing-waypoints"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Managing Waypoints </h3> <ul> <li>Tap a waypoint to see its name, description, and geofence radius. On <strong>Google Play</strong> builds the first tap opens the marker’s info bubble — tap the bubble to open the waypoint itself</li> <li><strong>Locked waypoints</strong> can only be changed on the mesh by the node that locked them</li> <li>Unlocked waypoints can be edited by any mesh member while connected to a radio — saving re-broadcasts the waypoint</li> <li>Confirming a delete removes your own copy. To remove it from everyone else’s map too, select <strong>Delete for everyone</strong> in the delete dialog; that box appears only for a waypoint you may change (unlocked, or locked by you) and only while you are connected</li> </ul> <h2 id="mapové-vrstvy"> <a href="#mapové-vrstvy" class="anchor-heading" aria-labelledby="mapové-vrstvy"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Mapové vrstvy </h2> <p>Tap the layers icon on the map to open <strong>Manage Map Layers</strong>. It imports your own overlays in <code class="language-plaintext highlighter-rouge">.kml</code>, <code class="language-plaintext highlighter-rouge">.kmz</code>, or GeoJSON format — including KMZ ground overlays (georeferenced images, such as exported topo or aerial tiles), which drape at their stated bounds. Add one by picking a file with <strong>Add Layer</strong>, opening a file with Meshtastic, or sharing it into the app from another app. <strong>Add Network Layer</strong> instead takes a name and an <code class="language-plaintext highlighter-rouge">http://</code> or <code class="language-plaintext highlighter-rouge">https://</code> URL pointing at a KML or GeoJSON file; that layer then carries its own refresh button in the sheet. On <strong>Google Play</strong> builds the toolbar’s refresh button re-fetches every visible network layer at once.</p> <p>Imported layers are listed with a toggle to show/hide each one and an option to remove it. Each layer — imported or built-in overlay — carries its own opacity slider while it is switched on, so an overlay can be faded back rather than only switched off. This works on the Google Play build, the F-Droid build, and <strong>Desktop</strong>, which shares the same layer store and file picker.</p> <h3 id="site-planner"> <a href="#site-planner" class="anchor-heading" aria-labelledby="site-planner"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Site Planner </h3> <p><strong>Site Planner</strong> estimates RF coverage for a transmitter and draws it on the map as a color-coded overlay. Open it from a map control, or from a node’s detail page via <strong>Estimate coverage</strong> (shown only for nodes with a known position). Configure the transmitter (location, frequency, TX power, antenna gain and height), the receiver (sensitivity, height), and simulation options (max range, high-resolution terrain, color palette), then run the estimate. Like map layers, Site Planner works on both the Google Play and F-Droid builds, where the finished estimate is drawn on the map as a coverage overlay. On <strong>Desktop</strong> the same form is shown but the planner opens in your browser; to bring the estimate onto the map, click the transmitter pin in the browser, choose the planner’s GeoJSON export, then add the downloaded file under <strong>Manage Map Layers</strong> with <strong>Add Layer</strong>. Use the GeoJSON export, not the KML one — the KML is a ground-overlay image this map cannot draw.</p> <h2 id="position-sharing"> <a href="#position-sharing" class="anchor-heading" aria-labelledby="position-sharing"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Position Sharing </h2> <h3 id="enabling-position-sharing"> <a href="#enabling-position-sharing" class="anchor-heading" aria-labelledby="enabling-position-sharing"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Enabling Position Sharing </h3> <p>Your node shares its GPS position based on:</p> <ul> <li><strong>Broadcast Interval</strong> — share the position on a fixed timer</li> <li><strong>Smart Position</strong> — share only once you have moved far enough; <strong>Smart Interval</strong> sets the shortest gap between broadcasts and <strong>Smart Distance</strong> how far you must move</li> <li><strong>Fixed Position</strong> — publish a latitude, longitude, and altitude you enter by hand instead of the GPS reading</li> <li><strong>GPS Mode (Physical Hardware)</strong> — GPS enabled, disabled, or not present on this hardware; offered only while <strong>Fixed Position</strong> is off</li> </ul> <p>Configure position behavior in <strong>Settings → Device configuration → Position</strong>. The screen is only reachable while your radio is connected, and saving it reboots the radio. For the full field list, see <a href="settings-radio-user">Settings — Radio &amp; User</a>.</p> <h3 id="privacy-considerations"> <a href="#privacy-considerations" class="anchor-heading" aria-labelledby="privacy-considerations"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Privacy Considerations </h3> <blockquote> <p>🔒 <strong>Privacy:</strong> Position data is broadcast to all nodes on your channel. If you don’t want your location shared, disable GPS position in settings or use a fixed/fake position. To keep sharing a position without pinpointing yourself, edit the channel in <strong>Settings → Channels</strong>, turn <strong>Precise location</strong> off, and set the slider beneath it — the channel then publishes an approximate area, shown as ± a distance, instead of an exact point.</p> </blockquote> <h2 id="map-sources"> <a href="#map-sources" class="anchor-heading" aria-labelledby="map-sources"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Map Sources </h2> <p>Every build offers a base map picker from the map toolbar. <strong>Google Play</strong> builds open on Google’s own map types; <strong>F-Droid</strong> and <strong>Desktop</strong> builds open on MapLibre’s vector styles. Further down the base map picker, all three offer the same raster base maps:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Base map</th> <th>Poznámka</th> </tr> </thead> <tbody> <tr> <td>Normal / Satellite / Terrain / Hybrid</td> <td>Google Play only — Google’s own map types</td> </tr> <tr> <td>Liberty</td> <td>Default on F-Droid and Desktop. Vector street map</td> </tr> <tr> <td>Positron</td> <td>F-Droid and Desktop only. Low-contrast vector map; keeps node markers legible over it</td> </tr> <tr> <td>Tmavý</td> <td>F-Droid and Desktop only. Vector map suited to dark themes</td> </tr> <tr> <td>OpenStreetMap</td> <td>Classic raster street tiles</td> </tr> <tr> <td>OpenTopoMap</td> <td>Raster topographic</td> </tr> <tr> <td>USGS Topo / USGS Imagery</td> <td>US coverage only</td> </tr> <tr> <td>Esri Topo / Esri Imagery</td> <td>Topographic and satellite imagery</td> </tr> </tbody> </table></div> <p>Overlays can be toggled on top of any base map, from the layers sheet:</p> <ul> <li><strong>Weather radar</strong> — NOAA NEXRAD reflectivity (US coverage)</li> <li><strong>Hillshade</strong> — terrain relief from an online tile source, on <strong>F-Droid</strong> and <strong>Desktop</strong> only; Google Play draws hillshade from downloaded offline terrain instead. Useful for understanding why a link fails, since LoRa range is limited by terrain</li> </ul> <h3 id="adding-your-own-tile-source"> <a href="#adding-your-own-tile-source" class="anchor-heading" aria-labelledby="adding-your-own-tile-source"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Adding your own tile source </h3> <p>Any XYZ tile endpoint can be added as a base map, on every flavor and on desktop. Open <strong>Manage Custom Tile Sources</strong> at the foot of the base map picker and paste a URL template using <code class="language-plaintext highlighter-rouge">{z}</code>, <code class="language-plaintext highlighter-rouge">{x}</code> and <code class="language-plaintext highlighter-rouge">{y}</code> — plus <code class="language-plaintext highlighter-rouge">{s}</code> if the provider uses rotating subdomains. A national mapping service, for example:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://wmts.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg
</code></pre></div></div> <p>Tiles are cached on disk, so panning does not re-download what you were just looking at.</p> <p>On <strong>Android</strong>, the same screen also imports a local <code class="language-plaintext highlighter-rouge">.mbtiles</code> archive for fully offline use.</p> <p>On <strong>F-Droid</strong>, select a vector base map first — Liberty, Positron, or Dark — since a download is defined against a vector style and <strong>Start Download</strong> stays disabled over a raster one. Frame the area you want on screen, then tap <strong>Start Download</strong> in the layers sheet: that creates a paused pack covering the current zoom plus two levels deeper. Press play on the pack’s row to actually download it.</p> <p>On <strong>Google Play</strong>, the layers sheet’s <strong>Offline Manager</strong> section downloads its own offline regions instead — water, roads and administrative boundaries extracted from the public Protomaps basemap dataset, drawn directly as map shapes rather than raster tiles. Frame the area you want, tap <strong>Start Download</strong>, and once it finishes flip <strong>Show on map</strong> to draw it (it’s off by default so it never surprises you by covering up the live map). You can still import a pre-made <code class="language-plaintext highlighter-rouge">.mbtiles</code> archive here too, as before. <strong>Desktop</strong> has neither, though the offline terrain described next does work there.</p> <h3 id="offline-terrain"> <a href="#offline-terrain" class="anchor-heading" aria-labelledby="offline-terrain"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Offline terrain </h3> <p>Hillshade and elevation contours can be downloaded for offline use as well, so a downloaded area still shows why a link fails when there is no network. The terrain data comes from Mapterhorn and is credited on the map. On <strong>Google Play</strong>, each downloaded region in the <strong>Offline Manager</strong> list has a <strong>Download Terrain</strong> button and <strong>Hillshade</strong> and <strong>Contours</strong> switches; terrain attaches to that region and shares its storage limit, and an area too large for terrain asks you to zoom in or pick a smaller region. On <strong>F-Droid</strong> and <strong>Desktop</strong>, the layers sheet has an <strong>Offline Terrain</strong> section of its own: frame the area, tap <strong>Start Download</strong>, and the hillshade and contours draw from the downloaded tiles from then on.</p> <h3 id="going-offline"> <a href="#going-offline" class="anchor-heading" aria-labelledby="going-offline"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Going offline </h3> <p>An <strong>Offline</strong> pill appears over the map whenever the device has no network connection. On <strong>Google Play</strong> builds, if you’ve imported a local <code class="language-plaintext highlighter-rouge">.mbtiles</code> archive, the map switches to it automatically the moment the network drops — no toggle to remember — and switches back once you’re reconnected, as long as you haven’t picked a different base map yourself in between. On <strong>F-Droid</strong>, a downloaded offline area keeps rendering on its own; the pill is purely informational there. <strong>Desktop</strong> downloads offline terrain but no base-map packs, so the pill is informational there too.</p> <h2 id="related-topics"> <a href="#related-topics" class="anchor-heading" aria-labelledby="related-topics"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Related Topics </h2> <ul> <li><a href="nodes">Nodes</a> — view and filter your node list</li> <li><a href="node-metrics">Node Metrics</a> — signal quality and position history for individual nodes</li> <li><a href="discovery">Local Mesh Discovery</a> — traceroute and neighbor info for understanding mesh topology</li> <li><a href="units-and-locale">Units &amp; Locale</a> — distance and coordinate display formats</li> </ul> </div> <style> .locale-page-banner { background: rgba(103, 234, 148, 0.1); border: 1px solid rgba(103, 234, 148, 0.3); border-radius: 12px; padding: 10px 16px; margin-bottom: 1.5rem; font-size: 0.85rem; } .locale-notice a { margin-left: 12px; font-weight: 500; } </style> </main> <hr> <footer> <footer class="site-footer"> Copyright &copy; 2026 Meshtastic LLC. Distributed under the <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPL v3 License.</a> </footer> <div class="d-sm-block d-md-none"> <div class="mt-4 fs-2"> This site uses <a href="https://github.com/just-the-docs/just-the-docs">Just the Docs</a>, a documentation theme for Jekyll. </div> </div> </footer> </div> </div> <div class="search-overlay"></div> </div> </body> </html>