2.0.1 • Published 3 years ago

@aimanbahouala/react-mapbox-gl-geocoder v2.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

react-mapbox-gl-geocoder

Simple react autocomplete for geocoding locations using Mapbox API. You can use it with react-map-gl to pan to found locations.

This is a fork of @groinder project published 2 years ago on which, i was having issues dealing with UTF8 chars on search string (React & Nextjs). I'll later add some functionalities like placeholder prop, origin, or base layout etc...

This wrapper deals with mapbox geocoding api directly so, no need to add any mapbox-gl relative component and can be used, without a map.

NPM JavaScript Style Guide

Install

npm install --save react-mapbox-gl-geocoder
# or
yarn add react-mapbox-gl-geocoder

Usage

import React, { Component } from "react";
import Geocoder from "react-mapbox-gl-geocoder";
import ReactMapGL from "react-map-gl";
import "./index.css";

const mapAccess = {
    mapboxApiAccessToken: process.env.REACT_APP_MAPBOX_API_ACCESS_TOKEN,
};

const mapStyle = {
    width: "100%",
    height: 600,
};

const queryParams = {
    country: "us",
};

class App extends Component {
    state = {
        viewport: {},
    };

    onSelected = (viewport, item) => {
        this.setState({ viewport });
        console.log("Selected: ", item);
    };

    render() {
        const { viewport } = this.state;

        return (
            <div>
                <Geocoder
                    {...mapAccess}
                    onSelected={this.onSelected}
                    viewport={viewport}
                    hideOnSelect={true}
                    queryParams={queryParams}
                />

                <ReactMapGL
                    {...mapAccess}
                    {...viewport}
                    {...mapStyle}
                    onViewportChange={(newViewport) =>
                        this.setState({ viewport: newViewport })
                    }
                />
            </div>
        );
    }
}

Props

NameTypeDescriptionDefault
mapboxApiAccessToken(required) stringMapbox Access Token-
timeoutintDebounce between pressing the key and quering the results300
viewportobjectMap Viewport-
onSelected(required) function(viewport, item)Receives selected item and the viewport to set for the selected item-
transitionDurationintDuration of the smooth transition0
hideOnSelectboolWhether to hide results on select or notfalse
updateInputOnSelectboolWhether to set the input value to the selected locationfalse
pointZoomintZoom to set if a specific location (without bbox) is selected16
formatItemfunction(item)Function used for formatting resultsitem => item.place_name
classNamestringClass to add to the top component-
queryParamsobjectQuery parameters to use when searching of the results, you can see available options here-
limitintLimit of the results5
localGeocoderfunction(queryString)Function to supplement local results to geocoder-
initialInputValuestringThe initial input value''

Styling

This component does NOT come with any styles. You can style it yourself by using classes:

Class nameDescription
.react-geocodercomponent wrapper class
.react-geocoder-resultsresults wrapper class
.react-geocoder-itemsingle result class

Replacing components

You can even supplement your own components:

Property namePassed PropertiesProperties description
inputComponentonChangeFunction to call when the text changes
itemComponentitem, onClick, childrenchildren is item formatted to display

License

MIT © groinder

2.0.1

3 years ago

1.1.3

3 years ago

2.0.0

3 years ago

1.1.2

3 years ago

1.1.1

4 years ago

1.1.0

4 years ago