Info Window

Used to display content in an overlay that looks like a popup window and is often linked to a marker.

  1. Create an Info Window
  2. Open an Info Window
  3. Close an InfoWindow

An InfoWindow displays content in a bubble above the map, at a given latlng position and usually opened upon map events, such as user clicks.

Typically you will connect an info window to a marker, but you can also attach it to a specific latitude/longitude.

Create an Info Window

To add an Info Window, you’ll need to create a new instance of woosmap.map.InfoWindow and optionally passing it an InfoWindowOptions object to specify the initial properties for displaying the info window. The content of the InfoWindow could be set when creating the instance or using the setContent() method. It may contain only text, a string HTML, or a DOM element.

JavaScript
        let infoWindow;
infoWindow = new woosmap.map.InfoWindow({content:"<div>Some Content</div>"});

    
JavaScript
        let infoWindow;
infoWindow = new woosmap.map.InfoWindow({});
infoWindow.setContent("<div>Some Content</div>");

    

You don’t need to create multiple instances of InfoWindow for different markers. Indeed, you can update the content - using setContent() - and position - using setPosition() - as user clicks on the markers.

Open an Info Window

To display an InfoWindow above the Map, call the InfoWindow.open() method passing it the map and a marker (or a latitude/longitude location).

The following example displays a marker at the center of London. When the user clicks the marker, an info window opens.

Display InfoWindow
        // This example displays a marker at the center of London.
// When the user clicks the marker, an info window opens.

function initMap(): void {
  // The map, centered at London
  const map = new woosmap.map.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 10,
      center: {
        lat: 51.57,
        lng: -0.13,
      },
    },
  );

  const londonInfoWindowHTML =
    "<div class='info-content'>" +
    "<h2>London</h2>" +
    "<div class='london-img'></div>" +
    "<p>London is the capital and largest city of England and the United Kingdom. <a href='https://en.wikipedia.org/wiki/London'>Wikipedia →</a></p>" +
    "</div>";

  const marker = new window.woosmap.map.Marker({
    position: {
      lat: 51.515,
      lng: -0.13,
    },
    icon: {
      url: "https://images.woosmap.com/marker.png",
      scaledSize: {
        height: 50,
        width: 32,
      },
    },
    map,
  });
  const infoWindow = new woosmap.map.InfoWindow({});
  infoWindow.setOffset(new woosmap.map.Point(0, -50));
  infoWindow.setContent(londonInfoWindowHTML);
  infoWindow.open(map, marker.position);
  marker.addListener("click", () => {
    infoWindow.open(map, marker.getPosition());
  });
}

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

    
        // This example displays a marker at the center of London.
// When the user clicks the marker, an info window opens.
function initMap() {
  // The map, centered at London
  const map = new woosmap.map.Map(document.getElementById("map"), {
    zoom: 10,
    center: {
      lat: 51.57,
      lng: -0.13,
    },
  });
  const londonInfoWindowHTML =
    "<div class='info-content'>" +
    "<h2>London</h2>" +
    "<div class='london-img'></div>" +
    "<p>London is the capital and largest city of England and the United Kingdom. <a href='https://en.wikipedia.org/wiki/London'>Wikipedia →</a></p>" +
    "</div>";
  const marker = new window.woosmap.map.Marker({
    position: {
      lat: 51.515,
      lng: -0.13,
    },
    icon: {
      url: "https://images.woosmap.com/marker.png",
      scaledSize: {
        height: 50,
        width: 32,
      },
    },
    map,
  });
  const infoWindow = new woosmap.map.InfoWindow({});

  infoWindow.setOffset(new woosmap.map.Point(0, -50));
  infoWindow.setContent(londonInfoWindowHTML);
  infoWindow.open(map, marker.position);
  marker.addListener("click", () => {
    infoWindow.open(map, marker.getPosition());
  });
}

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;
}

.info-content {
  font-size: 14px;
  max-width: 300px;
  height: 100%;
}

.london-img {
  background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/6/67/London_Skyline_%28125508655%29.jpeg/556px-London_Skyline_%28125508655%29.jpeg");
  width: 100%;
  height: 90px;
  background-size: cover;
}


    
        <html>
  <head>
    <title>InfoWindow Simple</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>
    <!--The div element for the map -->
    <div id="map"></div>

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

    

Close an InfoWindow

Once opened, an InfoWindow can be closed either when the user clicks the close button at top right or by explicitly calling the close() method. For example, you can close the InfoWindow when the user clicks outside it on the map.

JavaScript
        marker.addListener('click', () => {
  infoWindow.open(map, marker);
})
map.addListener('click', () => {
  infoWindow.close();
})

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