Git Product home page Git Product logo

leaflet-search's Introduction

Leaflet Control Search

A Leaflet control that search markers/features location by custom property.
Support ajax/jsonp autocompletion and JSON data filter/remapping.

Copyright 2014 Stefano Cudini

Tested in Leaflet 0.7.2

Image

#Where

Demo online:
labs.easyblog.it/maps/leaflet-search

Source code:
Github
Bitbucket
NPM
Atmosphere

Websites that use Leaflet Control Search

#Examples (require src/leaflet-search.css)

Adding the search control to the map:

map.addControl( new L.Control.Search({layer: searchLayer}) );
//searchLayer is a L.LayerGroup contains searched markers

Short way:

var map = new L.Map('map', { searchControl: {layer: searchLayer} });

#Advanced Examples

Ajax request to search.php for retrieve elements locations:

map.addControl( new L.Control.Search({url: 'search.php?q={s}'}) );

Request to third party JSONP service, implements Geocode Searching using OSM API:

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:

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);

		return {	//called to stop previous requests on map move
			abort: function() {
				console.log('aborted request:'+ text);
			}
		};
	}
}) );

#Build

Since Version 1.4.7 this plugin support Grunt for building process. Therefore the deployment require NPM installed in your system. After you've made sure to have npm working, run this in command line:

npm install
grunt

leaflet-search's People

Contributors

aluisioasg avatar dmoed avatar fiskus avatar foxxmd avatar itbeyond avatar jaropolk2 avatar jketcham avatar llucile avatar lowfatcomputing avatar stefanocudini avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.