Shared Map Viewer
When someone opens a shared map link, they see a full-screen, read-only map viewer. The viewer renders all your layers, features, and styling exactly as configured — viewers cannot edit anything, but they can explore the map by panning, zooming, and clicking on features.
Viewer Layout
- Header bar — Displays the MapEdit logo, project name, a "View Only" badge, and a "Create Your Own Map" call-to-action button
- Full-screen map — All layers and features rendered with their original styling, including data-driven colors and custom symbols
- Status bar — A floating pill at the bottom center showing layer count, feature count, and live data refresh countdown
- Legend panel — A collapsible panel at the top-right corner (when enabled in share settings)
- Feature popups — Click any feature to see its name and description in a popup or detail panel
Feature Interaction
Viewers can click on any feature to see its details. The behavior depends on the map engine:
- MapLibre engine — A popup appears at the clicked location showing the feature name and description (sanitized HTML supported, max width 320px)
- Apple Maps engine — A detail panel slides in from the bottom-left showing the feature name and scrollable description
- Click elsewhere on the map to dismiss the popup or panel
- Only one feature's details are shown at a time — clicking a new feature replaces the previous one
Legend Display
When the Show Legend option is enabled in share settings, a floating legend panel appears in the top-right corner of the map.
- Click the legend header to collapse or expand it
- Each layer shows its name, color swatch, and feature count
- Geometry-appropriate symbols are used: circles for points, lines for line features, rectangles for polygons
- Data-driven styling categories appear as indented sub-items under the parent layer
- The legend scrolls vertically if there are many layers (max height 256px)
- Maximum width of 240px to avoid blocking the map
Labels
When Show Labels is enabled, feature names are rendered directly on the map as text labels. Labels are positioned at the centroid of polygons, the midpoint of lines, or directly at point locations. Label styling (font size, color, halo) is inherited from the layer configuration you set in the editor.
Boundary Overlay
When a custom boundary is set and Show Boundary to Viewers is enabled, a dashed indigo outline appears on the map marking the boundary area. The overlay uses a semi-transparent indigo color with a 2.5-pixel dashed stroke so it is visible without obscuring the underlying features.
Live Data on Shared Maps
If your project includes live data layers, the shared map fetches fresh data directly from the source when a viewer opens it. Automatic refresh continues at the configured interval.
- The status bar shows a countdown timer until the next refresh (e.g., "Next update: 2m 30s")
- During a refresh, the status bar shows "Updating..." with a pulsing animation
- If a refresh fails, the existing data is preserved — viewers see no disruption
- The refresh interval matches the longest interval configured across all live data layers
Dual Map Engine
Shared maps support both MapLibre and Apple Maps, depending on the basemap selected in the share settings. Basemaps starting with "apple" use Apple MapKit JS, while all others use MapLibre GL JS. Both engines render features identically, including custom point shapes (pin, circle, square, triangle, diamond, star), line styles, and polygon fills.
Mobile Experience
Shared maps are fully responsive. On mobile devices:
- The header compacts to show a smaller logo and truncated project name
- The "Create Your Own Map" button becomes an icon-only button to save space
- The status bar adjusts its position to avoid overlapping mobile browser controls
- Touch gestures (pinch to zoom, two-finger drag to pan) work as expected
- Feature detail panels are positioned to avoid blocking navigation controls
- The legend panel remains collapsible and adjusts to smaller screens
Access Verification
Before the map loads, the viewer goes through an access verification step. The experience depends on the access type:
- Public shares — Load immediately with no prompt
- Password shares — A centered password form appears with the MapEdit logo; viewers get up to 5 attempts per 15 minutes before being rate-limited
- Email shares — If the viewer is not signed in, a "Sign In Required" screen appears; if signed in with a non-approved email, an "Access Denied" screen shows which email they are using
- Expired shares — A full-page "Link Expired" message is shown
- Deactivated shares — Treated as inactive and rejected
- Invalid tokens — A "Map Not Found" page is shown