brouter-web/bower_components/leaflet-search/README.md
2014-05-14 15:31:54 +02:00

98 lines
2.5 KiB
Markdown

Leaflet.Control.Search
============
A leaflet control that search markers/features location by custom property.<br />
With ajax/jsonp autocompletion and JSON fields filter/remap
Copyright 2014 [Stefano Cudini](http://labs.easyblog.it/stefano-cudini/)
Tested in Leaflet 0.7.2
#Where
**Demo online:**
[labs.easyblog.it/maps/leaflet-search](http://labs.easyblog.it/maps/leaflet-search/)
**Source code:**
[Github](https://github.com/stefanocudini/leaflet-search)
[Bitbucket](https://bitbucket.org/zakis_/leaflet-search)
[NPM](https://npmjs.org/package/leaflet-search)
[Atmosphere](https://atmosphere.meteor.com/package/leaflet-search)
#Build
Since Version 1.4.7 this plugin support [Grunt](http://gruntjs.com/) for building process.
Therefore the deployment require [NPM](https://npmjs.org/) installed in your system.
After you've made sure to have npm working, run this in command line:
```bash
npm install
grunt
```
#Examples
(require src/leaflet-search.css)
Adding the search control to the map:
```javascript
map.addControl( new L.Control.Search({layer: searchLayer}) );
//searchLayer is a L.LayerGroup contains searched markers
```
Short way:
```javascript
var map = new L.Map('map', { searchControl: {layer: searchLayer} });
```
#Advanced Examples
Ajax request to search.php for retrieve elements locations:
```javascript
map.addControl( new L.Control.Search({url: 'search.php?q={s}'}) );
```
Request to third party JSONP service, implements Geocode Searching using OSM API:
```javascript
map.addControl( new L.Control.Search({
url: 'http://nominatim.openstreetmap.org/search?format=json&q={s}',
jsonpParam: 'json_callback',
propertyName: 'display_name',
propertyLoc: ['lat','lon']
}) );
```
Search and color features vector in GeoJSON layer:
```javascript
var searchControl = new L.Control.Search({layer: geojsonLayer, circleLocation:false});
searchControl.on('search_locationfound', function(e) {
e.layer.setStyle({fillColor: '#3f0'});
}).on('search_collapsed', function(e) {
featuresLayer.eachLayer(function(layer) {
featuresLayer.resetStyle(layer);
});
});
map.addControl(searchControl);
```
Static data source:
```
var data = [
{"loc":[41.575330,13.102411], "title":"aquamarine"},
{"loc":[41.575730,13.002411], "title":"black"},
{"loc":[41.219190,13.062145], "title":"cyan"}
];
map.addControl(new L.Control.Search({
markerLocation: true,
callData: function(text, callResponse) {
//here can use custom criteria or merge data from multiple layers
callResponse(data);
}
}) );
```