A geocoder control for maplibre-gl-js.
A full working example can be found here, which uses Nominatim: https://maplibre.org/maplibre-gl-js/docs/examples/geocode-with-nominatim/
npm install --save @maplibre/maplibre-gl-geocoderimport MaplibreGeocoder from '@maplibre/maplibre-gl-geocoder';
import '@maplibre/maplibre-gl-geocoder/dist/maplibre-gl-geocoder.css';
...
// Functions should return Carmen GeoJSON, see the relevant type in this project
// View config definitions in our [documentation](https://www.maplibre.org/maplibre-gl-geocoder/)
var Geo = {
// required
forwardGeocode: async (config) => { /* definition here */ },
// optional
reverseGeocode: async (config) => { /* definition here */ }, // reverse geocoding API
getSuggestions: async (config) => { /* definition here */ }, // suggestion API
searchByPlaceId: async (config) => { /* definition here */ } // search by Place ID API
};
// Pass in or define a geocoding API that matches the above
const geocoder = new MaplibreGeocoder(Geo, { maplibregl: maplibregl });
map.addControl(geocoder);To use the plugin without placing it as a control on a maplibre-gl map, pass a HTML element or a CSS selector to the addTo() function:
<div id="geocoder-container"></div>const GeoApi = {
forwardGeocode: (config) => { return { features: [] } },
reverseGeocode: (config) => { return { features: [] } }
}
const geocoder = new MaplibreGeocoder(GeoAPI, {});
geocoder.addTo('#geocoder-container');Note the target element must be present in the DOM when the plugin is initalised.
See here for complete reference.
Also check out the example in MapLibre docs: https://maplibre.org/maplibre-gl-js/docs/examples/geocode-with-nominatim/
See CONTRIBUTING.md.