Mapbox.js plugin to match GeoJSON geometries to the OpenStreetMap streets network using the Mapbox Map Matching API.
A GPS track (cyan) matched to the streets via a profile for cars (solid red line) and for pedestrians (dotted red line).
Include mapbox-match.js after Mapbox.js in your html. Download the js files from the dist
directory.
L.mapbox.mapmatching(geojson, options, function (error, layer) {
layer.addTo(map);
layer.setStyle({
color: '#9a0202',
weight: 4,
opacity: 0.8
});
});
Given a geojson object, returns a leaflet feature layer with the matched geometries. Since an asynchronous request is made for matching, you need to specify a callback function that runs when there is a successful response.
name | required? | description |
---|---|---|
profile |
required | Profile to match trace against. Options are driving , walking and cycling |
mapMatchAPI |
optional | Custom API endpoint to query. Overrides the profile option` |
gpsPrecision |
optional | Integer indicating the precision of the input geometries in metres (default: 5) |
return |
optional | Type of object to return after matching. Options are layer (default) returns a leaflet featureLayer, geojson returns a geojson feature collection |
This is a browserify project:
git clone git@github.com:mapbox/mapbox-match.js.git
cd mapbox-match.js
npm install
npm run build
mapbox-match.js
and mapbox-match.min.js
are built files generated
from index.js
by browserify
. If you find an issue, it either needs to be
fixed in index.js
, or in one of the libraries mapbox-mapmatch uses
to parse formats.
##Algorithm
- Read an input geojson FeatureCollection
- Tidy the geojson using geojson-tidy
- Match every feature using the Mapbox Map Matching API
- Return a leaflet featureLayer with the matched features or just a geojson object