1.1.0 • Published 2 years ago

@carnallfarrar/react-mapbox-light v1.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

react-mapbox-light

A modern and light adaptation of mapbox-gl for React.

Components

  • MapboxMap
  • GeoJSON
  • PopUp

Getting Started

npm i @carnallfarrar/react-mapbox-light mapbox-gl --save

You will need to add mapbox CSS by importing it into your JS/TS files or inject it into your HTML

import "mapbox-gl/dist/mapbox-gl.css";
<html>
  <head>
    ...
    <link
      href="https://api.mapbox.com/mapbox-gl-js/v2.6.1/mapbox-gl.css"
      rel="stylesheet"
    />
  </head>
</html>
import { MapboxMap, GeoJSON, PopUp } from 'react-mapbox-light';
...

      <MapboxMap
        token={process.env.REACT_APP_MAPBOX_TOKEN!}
        control="bottom-left"
        scrollZoom={false}
        mapboxOptions={{
          style: "mapbox://styles/mapbox/light-v10",
          center: [-2.2783131, 53.1400067],
          zoom: 6,
        }}
      >
        <GeoJSON
            data={geojson}
            id="outline-layer"
            layers={[
                {
                id: "outline",
                type: "line",
                source: "outline-layer",
                layout: {},
                paint: {
                    "line-color": "#fff",
                    "line-width": 2,
                },
                },
            ]}
            onMouseMove={(e, features) => handleMouseMove(e, features)}
        />
        <PopUp
            lnglat={popUpProperty?.lnglat}
            closeButton={false}
            closeOnClick={true}
        >
            <div>Popup content here!</div>
        </PopUp>
      </MapboxMap>

Documentation

MapboxMap

This is the main component used to render a Mapbox map into the DOM.

Properties

PropertytypeRequiredDescription
tokenstringYesMapbox GL token to use for the map
controlstringNoNo control is diplayed if not provided, if provided value should be the position of the control.
scrollZoombooleanNodefault to True. if provided with false it will disable zoom on scroll
mapboxOptionsobjectNoMapbox options to pass to the map, see mapbox doc
onStyleLoadFunctionNoa callback function called when the map style has loaded

GeoJSON

a GeoJSON component instantiating a source and multiple layer for a given geojson.

Properties

PropertytypeRequiredDescription
dataObjectYesThe data for the GeoJSON to display
idstringNoThe ID to use to display the source provided as data
layersArrayYesMapbox layer(s) to use to display GeoJSON provided as data
onClickFunctionNoonClick event provided to all layers displayed
onMouseEnterFunctionNoonMouseEnter event provided to all layers displayed
onMouseLeaveFunctionNoonMouseLeave event provided to all layers displayed

PopUp

using the mapboxgl inbuilt popup functionality you can include a React component or plain HTML as a child component to populate the popup content

Properties

PropertytypeRequiredDescription
latlngmapboxgl.LngLatYesThe lat and long coordinates of the mouse position
closeButtonBooleanYesAdd a close button to the popup
closeOnClickBooleanYesClose the popup on click anywhere in the map