Integration guide

Put your building on the map

From a floor plan to a live 3D map with turn-by-turn directions — step by step, with a short video for every step. Follow along with the practice plan, or with your own.

1

Before you start

2 min

You can build a complete map yourself in the Venue Studio — no coding, nothing to install. Plan on 30–60 minutes per floor the first time.

  • A floor plan for each level: a CAD file (DXF), an SVG, GeoJSON, an Apple IMDF zip, or simply a PNG/JPG of the plan.
  • Your store or department list (optional) — a spreadsheet with names, categories and opening hours.
  • A desktop browser (Chrome, Edge, Safari or Firefox). Your work is saved in that browser as you go.

Want to practise first? Download the practice plan and follow every step of this guide with it — it is exactly what the videos below use.

2

Open the Venue Studio

1 min

Open makemyatlas.com/studio. A new, empty venue appears. Choose Import files to start from your plan — or Open the sample mall to look around a finished venue first.

The Venue Studio: tools on the left, the plan in the middle, settings on the right.
The Venue Studio: tools on the left, the plan in the middle, settings on the right.
Every change is saved automatically in this browser. Use the same computer and browser to continue later, and export your work regularly (step 12).
3

Import your floor plan

3 min

Click Import, then Choose files (or drop files on the window). The Studio recognises the file type and asks only what it needs:

Pick the floor (or + New floor…), leave the approximate width as it is and press Add image. The plan is placed under the editor so you can trace over it. You set the exact scale in the next step.

Importing a floor-plan image onto a new “Ground Floor”.

Tell the Studio what each CAD layer contains — shops, walls, the outline, cores, text labels. Text inside a closed shape becomes the shop’s name. Check Metres per drawing unit (0.001 if the drawing is in millimetres).

Mapping DXF layers to shops, walls and the outline.
Mapping DXF layers to shops, walls and the outline.
Have a DWG? In AutoCAD use Save As → DXF. Have a PDF? Export the page as PNG and import the image.

A spreadsheet can add a whole store directory at once. Rows whose name matches a shop you drew update its category, hours, phone and website. Rows with x, y become points; rows with width/depth become shop areas.

Merging a store list into the map.
Merging a store list into the map.

GeoJSON (with level, kind and name properties) and Apple IMDF archives come in fully drawn: levels, units, openings and amenities. Review names and categories afterwards.

A two-floor GeoJSON ready to import.
A two-floor GeoJSON ready to import.
All supported inputs. Whatever goes in, the same map comes out.
All supported inputs. Whatever goes in, the same map comes out.
4

Set the scale

1 min

Routes, walking times and shop sizes are only right if the plan has the right scale. After an image import the Measure tool (M) is already selected:

  1. Click both ends of something whose real length you know — a scale bar, a door (≈ 0.9 m), a shop front, a column grid.
  2. Type the real length in metres.
  3. Choose Scale everything on this floor and press Apply scale.
Measuring the 10 m scale bar and applying the scale.
Not sure? Measure a second, longer distance afterwards — the Measure tool shows its length, and it should match.
5

Draw the floor outline

1 min

Choose Floor outline (O) and click the corners of the building’s outer wall, then press Enter. Everything inside the outline that isn’t a shop, wall or obstacle is treated as walkable — you never draw corridors or a path network.

Tracing the outer wall; Enter closes the outline.
6

Trace and name the shops

10–30 min

Choose Rectangle (R) for box-shaped units or Polygon (P) for any shape. Set the Area type and Category in the bar above the plan, drag over a unit, then type its name in the Inspector on the right.

Loading the standard categories, then drawing and naming three units.
  • V select & move · drag a corner to reshape · double-click an edge to add a corner · Del removes
  • Hold Space and drag to pan · scroll to zoom · Ctrl+Z undo
  • Area types: shop/unit, amenity (WC, prayer room), kiosk, wall, structure (cores, columns), void (atrium), walkway, parking…
Categories colour the map and power the category grid visitors browse. Load the standard set in Categories → Add defaults, then rename or add your own.
7

Mark the entrances (optional)

2 min

Routes end at a shop’s door. If you skip this, the router uses the middle of the shop front facing the widest corridor — usually right. For shops with a side or corner door, choose Shop entrance (E) and click the shop’s edge where the door is.

Clicking on the shop front adds an entrance (small orange dot).
8

Add floors, lifts, escalators and stairs

5 min

Add a level with + Floor above the plan (the outline is copied). Then choose Connector (C), pick elevator, escalator, stairs or ramp, and:

  1. click where it is on this floor,
  2. switch floor with the tabs above the plan and click where it arrives,
  3. repeat for every floor it serves, then press Finish connector.
Adding Floor 1 and a lift that serves both floors.
Lifts are marked wheelchair-accessible automatically; stairs and escalators are skipped when a visitor turns on step-free routing. Escalators can be one-way (up or down) in the Inspector.
9

Place “You are here” QR signs

5 min

Visitors find their position by scanning a printed QR sign — no beacons needed. Choose QR anchor (Q) and click where each sign will hang: entrances, lift lobbies, car-park exits, key junctions. Give each a label.

Placing a QR anchor at the main entrance and labelling it.

When you are done, QR sheet (top bar) opens a print-ready page with one code per anchor. Print, laminate, and mount each sign at its marked spot.

The printable QR sheet.
The printable QR sheet.
Set Venue → Public viewer URL to your final map address (for example makemyatlas.com/map/your-venue) before printing — the codes point there.
10

Make it look like your building (optional)

3 min

Open the Look tab and drop in a few photos of your interior — corridors, shopfronts, the atrium. The Studio matches the floor finish and colour, walls, metal frames, glass tint and lighting. You can also fine-tune every material by hand, and add a photo to each shop so visitors see it on the place card.

The Look tab: photos in, materials out.
The Look tab: photos in, materials out.
11

Check every route

1 min

Open Check and press Test all routes. The Studio walks from your first QR anchor to every single place, like a visitor would, and lists anything it cannot reach — usually a missing connector, a shop with no gap to the corridor, or a wall drawn across a corridor. Click a problem to jump to it.

Every place reachable.
12

Preview in 3D

2 min

Press Preview 3D. Your map opens in a new tab exactly as visitors will see it: search a place, tap Get Directions, and press Simulate to walk the route turn by turn.

The practice mall from this guide, routed from the entrance to the Pharmacy.
13

Name your venue and export

1 min

In Venue, set the name, a short venue id (it becomes the web address, e.g. practice-mall), the languages and the public viewer URL. Then press Export venue.json — one file that contains your whole map.

Venue settings.
Venue settings.
Export venue.json is in the top bar.
Export venue.json is in the top bar.
The file is downloaded and the Studio tells you where it goes.
The file is downloaded and the Studio tells you where it goes.
Keep this file safe — it is your map. To change anything later, import it back into the Studio, edit, and export again.
14

Publish and share

5 min

Send us your venue.json at [email protected] (or ask us to build the map for you). We publish it at:

https://makemyatlas.com/map/your-venue-id

From there you can share it however suits your visitors:

  • A link — on your website, in booking confirmations, appointment letters and emails.
  • Printed QR signs — from step 9, at entrances and lift lobbies.
  • An embed — the map inside your own website (copy the snippet below, or see the developer track).
<iframe src="https://makemyatlas.com/map/your-venue-id?wl=true"
        style="width:100%;height:640px;border:0;border-radius:16px"
        allow="camera; accelerometer; gyroscope; magnetometer"
        title="Indoor map"></iframe>
The map embedded in a venue’s own website.
The map embedded in a venue’s own website.
15

What your visitors get

1 min

Visitors open the link or scan a sign — no app. They search, get short step-by-step directions (“Slight left at Swarovski”, “Take the lift to Level 2”), and can follow the route in street view or on the map, with real lifts and escalators between floors.

Street-level turn-by-turn navigation in the demo mall.

Try it yourself: open the live demos — or scan a demo’s QR code with your phone.

1

How it fits together

2 min

MakeMyAtlas is a static web app. One JSON file describes a venue; the viewer renders it in 3D and does all routing in the browser — there is no backend and no per-visitor server call.

Your filesDXF · SVG · GeoJSON · IMDF · image · CSV
→
Venue Studioimport · edit · check
→
venue.jsonone canonical format
→
Viewer/map/<id> · iframe · deep links
  • Routing: each floor is rasterised at 0.5 m; A* runs across floors with connector costs; paths keep clear of walls and are straightened. Instructions are generated for every bend ≥ 10° and every ~15 m on long straights.
  • Positioning: QR anchors (?at=), tap-to-place, and “Walk with me” pedestrian dead-reckoning (accelerometer + compass) snapped to the route. Sensors and the camera need HTTPS.
2

The venue.json format

5 min

Coordinates are metres on a flat plan (x right, y down). Everything the map needs is here; the full reference is in VENUE-FORMAT.md.

{
  "format": "indoor-venue", "version": 1,
  "venue": { "id": "practice-mall", "name": "Practice Mall", "defaultFloor": "F0",
             "languages": ["en"], "walkingSpeed": 1.2, "brandColor": "#f26a21" },
  "categories": [ { "id": "fashion", "name": "Fashion", "icon": "shirt", "color": "#c7a7ad" } ],
  "floors": [ { "id": "F0", "name": "Ground Floor", "shortName": "G", "level": 0, "height": 5,
                "outline": [[0,0],[80,0],[80,50],[0,50]] } ],
  "spaces": [ { "id": "S1", "floor": "F0", "kind": "unit", "name": "Fashion 01", "category": "fashion",
                "polygon": [[0,0],[14,0],[14,20],[0,20]], "entrances": [[7,20]],
                "details": { "hours": "10:00 – 22:00", "phone": "…", "website": "…" } } ],
  "pois":       [ { "id": "P1", "floor": "F0", "x": 2, "y": 25, "name": "Main entrance", "category": "entrance" } ],
  "connectors": [ { "id": "C1", "type": "elevator", "accessible": true,
                    "stops": [ { "floor": "F0", "x": 45.5, "y": 36 }, { "floor": "F1", "x": 45.5, "y": 36 } ] } ],
  "anchors":    [ { "id": "Q-main", "floor": "F0", "x": 3, "y": 25, "heading": 90, "label": "Main entrance" } ],
  "decor":      [ { "type": "plant", "floor": "F0", "x": 30, "y": 25 } ]
}
kindwalkabledestinationdrawn as
unitnoyesshop block with roof label
amenitynoyesroom with icon (WC, prayer…)
kiosknoyeslow island
structurenonocore / column; “Lift…” → glass shaft, “Stairs…” → steps
wall · voidnonowall · atrium hole with railing
walkway · outdoor · parkingyesnofloor surfaces
Walkable space = floor outline − everything that isn’t walkable. You never author a routing graph.
3

Embed the map

2 min

The viewer is responsive and touch-friendly, so a single iframe works on desktop, tablet and phone.

<div style="position:relative;width:100%;height:min(80vh,720px)">
  <iframe src="https://makemyatlas.com/map/your-venue-id?wl=true"
          style="position:absolute;inset:0;width:100%;height:100%;border:0"
          allow="camera; accelerometer; gyroscope; magnetometer"
          title="Indoor map of Your Venue" loading="lazy"></iframe>
</div>
  • allow="camera; accelerometer; gyroscope; magnetometer" lets the in-map QR scanner and “Walk with me” work inside the frame.
  • wl=true hides the “Indoor maps by MakeMyAtlas” credit (white-label).
  • Control the embed with URL parameters (next step). Script messaging between your page and the frame is not offered across domains.
5

QR anchors and positioning

2 min

Each anchor in the venue file becomes a printed code that opens:

https://makemyatlas.com/map/your-venue-id?at=Q-main

The blue dot starts at the sign, facing heading (degrees clockwise from plan-up). “Walk with me” then follows the visitor with step detection and the compass, snaps to the route, re-routes after wrong turns and asks the visitor to confirm floor changes at lifts. Set venue.northOffset so the compass matches the plan.

Print a QR sheet from the Studio after setting Public viewer URL; anchors you add later need new codes.
6

Loading your own file and self-hosting

3 min

Quick test without publishing: host your venue.json anywhere that sends CORS headers and pass it with src:

https://makemyatlas.com/map/preview?src=https://your-cdn.example/venue.json

Self-hosting: the whole viewer is static files. Put your file at venues/<venue id>/venue.json next to index.html and open index.html?venue=<venue id> — on any static host (Cloudflare Pages, Netlify, S3, nginx). Use HTTPS for the camera and motion sensors.

python3 -m http.server 8080
# viewer:  http://localhost:8080/index.html?venue=practice-mall
# studio:  http://localhost:8080/studio.html
7

Keeping a map up to date

2 min
  1. Open the Studio and Import your current venue.json.
  2. Change names, categories, hours, shapes or connectors.
  3. Run Check → Test all routes.
  4. Export venue.json and publish it in place of the old file.
Keep ids stable when you edit: deep links, printed QR codes and embeds refer to place and anchor ids, not names.

Keep each exported file under version control (or dated copies) so you can roll back.

8

Troubleshooting

—
symptomcause and fix
“Can’t reach” in CheckA connector is missing a stop, a shop has no gap to the corridor, or a wall crosses a corridor. Click the item to jump to it.
Route ends at the wrong side of a shopAdd an entrance with the Shop entrance tool (E) on the correct edge.
Distances or walking times look wrongRe-measure a known length with M and apply the scale to everything on the floor.
QR codes open the wrong addressSet Venue → Public viewer URL, then print a fresh QR sheet.
Camera / “Walk with me” not working in an embedServe over HTTPS and add the allow attribute shown in “Embed the map”.
DXF imports tiny or hugeFix Metres per drawing unit in the import dialog (0.001 for millimetres, 0.0254 for inches).

Stuck? Email [email protected] with your venue.json attached.

Videos and screenshots recorded automatically from the live product · last updated 1 October 2026.