Most of the map you need already exists on somebody else's server. Aerial imagery, cadastral parcels, flood zones, soil surveys, historical sheets — the agency that produced it usually publishes it as a map service, and downloading a copy is both wasteful and a guarantee that your version goes stale.
This guide connects one of those services as a background layer on a Mapji map, so it draws live underneath your own data.
What a background layer is, and isn't
It is not an import. Nothing is copied into your map. Every time a visitor opens it, their browser fetches tiles directly from the publisher.
Three consequences worth understanding before you start:
- The layer stays current. When the agency updates the service, your map shows the update. You do nothing.
- It doesn't count against your data limits. The 10,000-feature and 25 MB caps apply to data you import. A background layer is neither.
- You depend on the publisher. If they take the service down, rename a layer, or throttle it, your map's backdrop goes with it.
That last one is the trade. For official reference data — where being current matters more than being permanent — it's the right one. For something you need frozen and guaranteed, export the area you need and import it as data instead.
Which maps support it
Draw maps and Compare maps. They're the two types where a backdrop is the point: you're either drawing on top of something, or holding two things against each other.
On a Compare map, each half keeps its own list. That's what lets you build a genuine before-and-after with no files at all — last year's imagery behind one side, this year's behind the other, and a divider you drag between them.
What you can connect
| Service | What to paste |
|---|---|
| WMS | The service URL, with or without its query string |
| ArcGIS MapServer | The .../MapServer URL |
| ArcGIS ImageServer | The .../ImageServer URL |
| PMTiles | The URL of the .pmtiles file |
| XYZ / WMTS | A {z}/{x}/{y} tile template |
You don't have to say which is which. Paste the URL and Mapji works it out, then asks only the questions it genuinely can't answer for you.
Step 1: Find the service URL
Data portals label this inconsistently. Look for "WMS", "OGC services", "REST
endpoint", "Map service", or a link that ends in MapServer or /wms.
A GetCapabilities URL is fine — that long one ending in
?SERVICE=WMS&REQUEST=GetCapabilities. Mapji strips the query and rebuilds what
it needs, so you can paste it exactly as the portal gave it to you.
For PMTiles you want the direct file URL, the one ending in .pmtiles. If
you've generated your own with tippecanoe or pmtiles convert, upload it to
S3, Cloudflare R2, or any static host that supports byte-range requests, and use
that URL.
Step 2: Add it
Open your Draw or Compare map, click Layers on the map, then Add layer, and paste the URL.
What happens next depends on the service:
- A WMS or an ArcGIS map service publishes a list of layers, so you pick which ones you want. Large services publish hundreds; there's a filter box.
- A single-layer service — a tile template, a cached ArcGIS service, an image PMTiles archive — has nothing to choose, so it's added straight away.
- A vector PMTiles archive lists the layers inside it. Pick up to eight and choose a colour.
Step 3: Set it back
A new layer arrives at full opacity, which is almost never what you want if you're drawing on top of it. Use the opacity slider to fade it until your own features read clearly against it.
Layers stack in list order, and you can reorder them, hide one temporarily without deleting it, and keep up to five per map — or five per side on a Compare map. Whatever you stack, your own markers and shapes stay on top, and so do the basemap's place names.
When a layer won't load
One failure dominates, and it isn't your fault.
The service doesn't allow browser access. A web map fetches tiles from the visitor's browser, so the publisher has to send CORS headers permitting it. A great many public services — including ones that work perfectly in QGIS or ArcGIS Pro — simply don't.
There is no setting on your end that fixes this. Desktop GIS isn't subject to the same rule, which is why a service can work there and nowhere on the web. Mapji fetches a real tile the moment you add a layer and tells you immediately, rather than saving a layer that renders nothing and leaves you guessing.
Three other causes, all with the same shape:
- HTTP instead of HTTPS. Required, no exceptions.
- No Web Mercator. Web maps ask for tiles in one projection (EPSG:3857). A service published only in a national grid can't answer, so Mapji won't offer it rather than saving a layer that draws blank.
- No byte-range support, for PMTiles specifically. The format is read in pieces; a host that ignores range requests can't serve it.
If you hit any of these, the practical route is to ask the publisher whether they offer the same data another way, or to export the area you need and import it as ordinary data.
Vector PMTiles look like shapes, not a map
Worth setting expectations. A vector archive is drawn in one colour of your choosing — areas filled, lines and outlines solid, points as dots — with no labels.
That makes it an excellent reference layer: parcel boundaries under a site plan, admin regions under a survey. It does not make it a basemap. If you paste a complete vector basemap archive expecting streets and place names, you'll get the geometry without the typography.
For a different-looking basemap, change the map's theme or build a custom one instead.
A worked example
Say you're marking up proposed changes to a site and need the official parcel boundaries underneath.
- Create a Draw map.
- Find your land registry's WMS endpoint and paste it into Layers → Add layer.
- Pick the parcels layer from the list.
- Drop the opacity to around 50% so the boundaries read as a guide rather than as content.
- Draw your markers, lines, and polygons over the top.
- Publish. Visitors see the current parcel data — not a snapshot you took the day you built it.