Render Shapes - Circles

Sample code for Woosmap Map JavaScript API author(s): Woosmap

HTML

<!DOCTYPE html>
<html>
  <head>
    <title>Render Shapes - Circles</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta charset="utf-8" />

    <!-- jsFiddle will insert css and js -->
  </head>
  <body>
    <!--The div element for the map -->
    <wmp-map id="map"></wmp-map>

    <script>
      ((g) => {
        let p;
        const w = window,
          d = document;
        const L = "importLibrary",
          CB = "__ib__";
        const E = "The Woosmap Maps JavaScript API";
        const woosmap = w.woosmap || (w.woosmap = {});
        const maps = woosmap.map || (woosmap.map = {});
        // Seed with the sample's configured libraries: some (e.g. widgets) are
        // not importLibrary() names and only load through the script URL.
        const libs = new Set(
            String(g.libraries || "")
              .split(",")
              .filter(Boolean),
          ),
          params = new URLSearchParams();
        const load = () =>
          p ||
          (p = new Promise((res, rej) => {
            const s = d.createElement("script");
            params.set("libraries", [...libs].join(","));
            for (const k in g)
              if (k !== "libraries" && g[k]) params.set(k, g[k]);
            params.set("callback", "woosmap.map." + CB);
            s.src = "https://sdk.woosmap.com/map/map.js?" + params;
            maps[CB] = res;
            s.onerror = () => rej(Error(E + " could not load."));
            s.nonce = d.querySelector("script[nonce]")?.nonce || "";
            d.head.append(s);
          }));
        if (maps[L]) {
          console.warn(E + " only loads once. Ignoring:", g);
        } else {
          maps[L] = (name, ...args) =>
            libs.add(name) && load().then(() => maps[L](name, ...args));
        }
      })({
        key: "woos-e1e5490b-19d1-34f8-9955-fd5cfc8c880f",
        libraries: "",
        language: "",
      });
    </script>
  </body>
</html>

CSS

/*
 * Always set the map height explicitly to define the size of the element
 * that contains the map. `display: block` is required for <wmp-map>/<gmp-map>,
 * which default to inline like any other custom element outside a flex/grid
 * container (no-op for a plain <div>).
 */
#map {
  display: block;
  width: 100%;
  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;
}

JavaScript

let map;
const data = {
  megacities: [
    {
      latlng: "35.700556,139.715",
      cityname: "Tokyo",
      citizens: 37400000,
    },
    {
      latlng: "23.133333,113.266667",
      cityname: "Guangzhou",
      citizens: 24900000,
    },
    {
      latlng: "37.566535,126.9779692",
      cityname: "Seoul",
      citizens: 24500000,
    },
    {
      latlng: "28.635308,77.22496",
      cityname: "Delhi",
      citizens: 23900000,
    },
    {
      latlng: "19.0176147,72.8561644",
      cityname: "Mumbai",
      citizens: 23300000,
    },
    {
      latlng: "19.4326077,-99.133208",
      cityname: "Mexico City",
      citizens: 22800000,
    },
    {
      latlng: "40.7143528,-74.00597",
      cityname: "New York City",
      citizens: 22200000,
    },
    {
      latlng: "-23.5489433,-46.6388182",
      cityname: "SĂŁo Paulo",
      citizens: 20800000,
    },
    {
      latlng: "14.5995124,120.9842195",
      cityname: "Manila",
      citizens: 20100000,
    },
    {
      latlng: "31.230393,121.473704",
      cityname: "Shanghai",
      citizens: 18800000,
    },
    {
      latlng: "-6.211544,106.845172",
      cityname: "Jakarta",
      citizens: 18700000,
    },
    {
      latlng: "34.0522342,-118.2436849",
      cityname: "Los Angeles",
      citizens: 17900000,
    },
    {
      latlng: "24.893379,67.02806",
      cityname: "Karachi",
      citizens: 16900000,
    },
    {
      latlng: "34.6937378,135.5021651",
      cityname: "Osaka",
      citizens: 16800000,
    },
    {
      latlng: "22.572646,88.363895",
      cityname: "Kolkata",
      citizens: 16600000,
    },
    {
      latlng: "30.064742,31.249509",
      cityname: "Cairo",
      citizens: 15300000,
    },
    {
      latlng: "-34.6084175,-58.3731613",
      cityname: "Buenos Aires",
      citizens: 14800000,
    },
    {
      latlng: "55.755786,37.617633",
      cityname: "Moscow",
      citizens: 14800000,
    },
    {
      latlng: "23.709921,90.407143",
      cityname: "Dhaka",
...