6 min read

How to Add a WMS, ArcGIS or PMTiles Layer to Your Map

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

Every map type. A heatmap over hillshade, store locations over imagery, a story told over a historical sheet — the layer always draws beneath your own data and beneath the basemap's place names, whatever the map does with its data. Draw and Compare maps are where a backdrop is most often 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.

No URL? Start from the catalog

The Layers button opens on Browse layers: a catalog of public layers you add with one click. Yesterday's satellite view of the whole planet, a cloud-free Sentinel-2 mosaic, hillshade and US topographic maps, ocean depth, surface water and forest loss, live US weather radar, population density, administrative boundaries, and hiking, cycling and ski routes are all there.

Every layer in the catalog has been checked to work on any website and to allow use on commercial maps, and each one already knows its zoom range, where it has data, and the credit it needs — which is added to your map's attribution line for you. Daily layers show the most recent complete day. A few layers come from volunteer-run projects and are marked Community-run: fine for everyday maps, but those projects ask very busy or commercial maps to host the tiles themselves.

If the layer you want isn't in the catalog, switch to Paste a URL and carry on below.

What you can connect

ServiceWhat to paste
WMSThe service URL, with or without its query string
ArcGIS MapServerThe .../MapServer URL
ArcGIS ImageServerThe .../ImageServer URL
PMTilesThe URL of the .pmtiles file
WMTSThe service or WMTSCapabilities.xml URL
TileJSONThe URL of the TileJSON document
XYZA {z}/{x}/{y} tile template, image or vector

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.

  1. Create a Draw map.
  2. Find your land registry's WMS endpoint and paste it into Layers → Add layer.
  3. Pick the parcels layer from the list.
  4. Drop the opacity to around 50% so the boundaries read as a guide rather than as content.
  5. Draw your markers, lines, and polygons over the top.
  6. Publish. Visitors see the current parcel data — not a snapshot you took the day you built it.

Related map types

Keep reading

All guides