Get Started with Woosmap Indoor JS API

Get started with the Woosmap Indoor JS API. View simple examples, learn the concepts, and create custom indoor maps for your site.

  1. Indoor JavaScript API included in the Map-Js

Indoor JavaScript API included in the Map-Js

You can use the Woosmap Map-Js library to embed interactive indoor maps directly into your webpages.

Here is a basic Woosmap Indoor sample with indoor tiles over Woosmap Map tiles:

Woosmap Indoor JS API sample
        let map: woosmap.map.Map;

function initMap() {
  map = new window.woosmap.map.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: { lat: 43.6066, lng: 3.9218 },
      zoom: 19.5,
    },
  );

  const indoorRenderer = new woosmap.map.IndoorRenderer({
    venue: "wgs_doc",
    defaultFloor: 3,
  });

  // Indoor event that is triggered when the indoor venue is loaded.
  indoorRenderer.addListener(
    "indoor_venue_loaded",
    (venue: woosmap.map.Venue) => {
      console.log(venue);
      hideLoader();
    },
  );
  indoorRenderer.setMap(map);
}

const hideLoader = () => {
  (document.querySelector(".progress") as HTMLElement).remove();
};

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

    
        let map;

function initMap() {
  map = new window.woosmap.map.Map(document.getElementById("map"), {
    center: { lat: 43.6066, lng: 3.9218 },
    zoom: 19.5,
  });

  const indoorRenderer = new woosmap.map.IndoorRenderer({
    venue: "wgs_doc",
    defaultFloor: 3,
  });

  // Indoor event that is triggered when the indoor venue is loaded.
  indoorRenderer.addListener("indoor_venue_loaded", (venue) => {
    console.log(venue);
    hideLoader();
  });
  indoorRenderer.setMap(map);
}

const hideLoader = () => {
  document.querySelector(".progress").remove();
};

window.initMap = initMap;

    
        /*
 * Always set the map height explicitly to define the size of the div element
 * that contains the map.
 */
#map {
  height: 100%;
}

/*
 * Optional: Makes the sample page fill the window.
 */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
  font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
}

#app {
  height: 100%;
}

.progress {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: white;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
}
.progress .spinner {
  border: 10px solid #f3f3f3;
  border-top: 10px solid #444444;
  border-radius: 50%;
  width: 70px;
  height: 70px;
  animation: spin 1s linear infinite;
}


    
        <html>
  <head>
    <title>Indoor Map Renderer</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta charset="utf-8" />

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
  </head>
  <body>
    <div id="app">
      <div class="progress">
        <div class="spinner"></div>
      </div>
      <!--The div element for the map -->
      <div id="map"></div>
    </div>

    <script
      src="https://sdk.woosmap.com/map/map.js?key=woos-48c80350-88aa-333e-835a-07f4b658a9a4&callback=initMap"
      defer
    ></script>
  </body>
</html>

    
Was this article helpful?
Have more questions? Submit a request