Skip to content

Jotape-M/leaflet-extended

 
 

Repository files navigation

Leaflet Extended (React)

npm

A way to load and perform filters faster on API returns for maps

Leaflet Extended is a mechanism that transforms your data into GeoJSON and transforms it into a faster and more dynamic map, with filters and layers that are much more practical to configure within React.

Features

  • Easier and more optimized popups
  • Property based search
  • Dynamic and easy-to-configure Filters and Layers
  • Transformation of data into GeoJSON for easy handling and optimization

Tech

Prop Description Optional DataType Default
baseTileUrl Yes String https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png
baseTileAttribution Yes String &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors
mapLayers array of map layers No Layer Array Object
markerData array of data to be consumed Yes Data Array Object []
circleMarkerStyle style for marker Yes Style { stroke: false, opacity: 1, fillOpacity: 1, radius: 8, fillColor: "#ff7800" }
searchIdentifiers={['name', 'city'] list of property names used in searches Yes String Array []
PopupContent popup content Yes Popup Content html
enablePopup enable or disable popups Yes Boolean true
multiIdentifier unique identifier property name Yes String name
latMarkerPropName latitude property name Yes String lat
lngMarkerPropName longitude property name Yes String lng

Layer Array Object

[{
    label: string, // layer name, don't repeat
    style: (f) => {
        // properties -> array of data object
        const { properties } = f;
        return Style; // return style to the marker
    },
    filters: [
        {
          label: string,  // label for the filter
          color: string,  // hex code
          action: string, // single value, do not repeat (internal use, will be removed in the future)
          filter: { 
            prop: string, // data prop name for the filters
            value: string // data value wanted
          }
        }
    ]
}]

Data Array Object

The data shown is not optional, it is required in your data object.

[{
    ...your data
    lat: string | number, // the prop name can be changed by latMarkerPropName
    lng: string | number, // the prop name can be changed by lngMarkerPropName
    name: string          // the prop name can be changed by multiIdentifier
}]

Popup Content

// data -> data object
({ data }) => {
    return <></>; // return element
}

Search

// identifier, value to search -> return true or false
searchElement(string, any);
const mapRef = useRef();

const result = await ref.current.searchElement('name', 'mateus');

return (
    <LeafletExtended
    ...props
    ref={mapRef}
    searchIdentifiers={['name', 'city']}
    />
)

Installation

npm i --save leaflet-extended

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 87.5%
  • HTML 10.1%
  • CSS 2.4%