143 lines
3.6 KiB
Markdown

# Popup Control
![Since v3.0](https://img.shields.io/badge/since-v3.0-green)
This is a React equivalent of Mapbox's [Popup Control](https://www.mapbox.com/mapbox-gl-js/api/#popup), which can be used to
show tooltip popups with custom HTML content at specific locations on the map.
```js
import * as React from 'react';
import ReactMapGL, {Popup} from 'react-map-gl';
function App() {
const [viewport, setViewport] = React.useState({
longitude: -122.45,
latitude: 37.78,
zoom: 14
});
const [showPopup, togglePopup] = React.useState(false);
return (
<ReactMapGL {...viewport} width="100vw" height="100vh" onViewportChange={setViewport}>
{showPopup && <Popup
latitude={37.78}
longitude={-122.41}
closeButton={true}
closeOnClick={false}
onClose={() => togglePopup(false)}
anchor="top" >
<div>You are here</div>
</Popup>}
</ReactMapGL>
);
}
```
## Properties
##### `latitude` (Number, required)
Latitude of the anchor.
##### `longitude` (Number, required)
Longitude of the anchor.
##### `altitude` (Number)
- default: `0`
Altitude of the anchor.
##### `offsetLeft` (Number)
- default: `0`
Offset of the anchor from the left in pixels, negative number indicates left.
##### `offsetTop` (Number)
- default: `0`
Offset of the anchor from the top in pixels, negative number indicates up.
##### `closeButton` (Boolean)
- default: `true`
If `true`, a close button will appear in the top right corner of the popup.
##### `closeOnClick` (Boolean)
- default: `true`
If `true`, the popup will closed when the map is clicked.
##### `tipSize` (Number)
- default: `10`
Size of the tip pointing to the coordinate.
##### `anchor` (String)
- default: `bottom`
A string indicating the popup's position relative to the coordinate.
Options are `top`, `bottom`, `left`, `right`, `top-left`, `top-right`, `bottom-left`, and `bottom-right`.
##### `dynamicPosition` (Boolean)
- default: `true`
If `true`, the anchor will be dynamically adjusted to ensure the popup falls within the map container.
##### `sortByDepth` (Boolean)
- default: `false`
If `true`, the order of the popups will be dynamically rearranged to ensure that the ones anchored closer to the camera are rendered on top. Useful when showing multiple popups in a tilted map.
##### `onClose` (Function)
Callback when the user closes the popup.
##### `captureScroll` (Boolean)
- default: `false`
Stop propagation of mouse wheel event to the map component. Can be used to stop map from zooming when this component is scrolled.
##### `captureDrag` (Boolean)
- default: `true`
Stop propagation of dragstart event to the map component. Can be used to stop map from panning when this component is dragged.
##### `captureClick` (Boolean)
- default: `true`
Stop propagation of click event to the map component. Can be used to stop map from calling the `onClick` callback when this component is clicked.
##### `captureDoubleClick` (Boolean)
- default: `true`
Stop propagation of dblclick event to the map component. Can be used to stop map from zooming when this component is double clicked.
##### `capturePointerMove` (Boolean)
- default: `false`
Stop propagation of pointermove event to the map component. Can be used to stop map from calling the `onMouseMove` or `onTouchMove` callback when this component is hovered.
## Styling
Like its Mapbox counterpart, this control relies on the mapbox-gl stylesheet to work properly. Make sure to add the stylesheet to your page.
## Source
[popup.js](https://github.com/visgl/react-map-gl/tree/6.0-release/src/components/popup.js)