Popup

Add popups to the map.

Demo

Examples

Plain HTML

You can find the live Demo on CodeSandbox here.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta name="viewport" content="initial-scale=1.0" />
    <meta charset="UTF-8" />
    <title>Basic Map</title>
    <link
      href="https://maps-gl.nextbillion.io/maps/v2/api/css"
      rel="stylesheet"
    />
    <style>
      * {
        margin: 0;
        padding: 0;
      }
      #map {
        width: 100vw;
        height: 100vh;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script src="https://maps-gl.nextbillion.io/maps/v2/api/js"></script>
    <script>
      (function () {
        // You need to replace the apiKey with yours
        nextbillion.setApiKey("your-api-key");
        var nbmap = new nextbillion.maps.Map({
          container: document.getElementById("map"),
          style: "https://api.nextbillion.io/maps/streets/style.json",
          zoom: 11,
          center: { lat: 34.08572, lng: -118.324569 }
        });

        nbmap.on("load", function () {
          // add a popup
          const popupOffsets = {
            top: [0, 0],
            "top-left": [0, 0]
          };
          new nextbillion.maps.Popup({
            offset: popupOffsets,
            className: "my-class"
          })
            .setLngLat({ lat: 34.08572, lng: -118.324569 })
            .setHTML("<h1>Hello World!</h1>")
            .setMaxWidth("300px")
            .addTo(nbmap.map);
        });
      })();
    </script>
  </body>
</html>

React

You can find the live Demo on CodeSandbox here.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import React, { useEffect } from 'react'
import '@nbai/nbmap-gl/dist/nextbillion.css'
import nextbillion, { NBMap, Popup } from '@nbai/nbmap-gl'

const PopupDemo = () => {
  useEffect(() => {
    // You need to replace the apiKey with yours
    nextbillion.setApiKey('your-api-key')
    const nbmap = new NBMap({
      container: 'map',
      style: 'https://api.nextbillion.io/maps/streets/style.json',
      zoom: 11,
      center: { lat: 34.08572, lng: -118.324569 }
    })
    const popupOffsets = {
      top: [0, 0],
      'top-left': [0, 0]
    }
    // add a popup
    new Popup({
      offset: popupOffsets,
      className: 'my-class'
    })
      .setLngLat({ lat: 34.08572, lng: -118.324569 })
      .setHTML('<h1>Hello World!</h1>')
      .setMaxWidth('300px')
      .addTo(nbmap.map)
  })

  return (
    <div className="app">
      <div
        style={{
          width: '100%',
          height: '100%',
          position: 'fixed',
          top: '0',
          left: '0'
        }}
        id="map"></div>
    </div>
  )
}
export default PopupDemo


Have Questions ?