added fix for touch enabled devices using the layer control
This commit is contained in:
		
							parent
							
								
									308b8e5f48
								
							
						
					
					
						commit
						2e71ad3060
					
				| @ -16,8 +16,46 @@ or see http://www.gnu.org/licenses/agpl.txt. | |||||||
| */ | */ | ||||||
| 
 | 
 | ||||||
| // queryable Layers control
 | // queryable Layers control
 | ||||||
| // [simply Control.Layers extended by query functions]
 | // [simply Control.Layers extended by query functions and some fixes for touch screens]
 | ||||||
| L.Control.QueryableLayers = L.Control.Layers.extend({ | L.Control.QueryableLayers = L.Control.Layers.extend({ | ||||||
|  | 	 | ||||||
|  | // changes to leaflet behaviour
 | ||||||
|  | _initLayout: function () { | ||||||
|  | 	this._container = L.DomUtil.create('div', 'leaflet-control-layers'); | ||||||
|  | 	L.DomEvent.disableClickPropagation(this._container);							// change to Leaflet: always disable click propagation 
 | ||||||
|  | 
 | ||||||
|  | 	this._form = L.DomUtil.create('form', 'leaflet-control-layers-list'); | ||||||
|  | 
 | ||||||
|  | 	if (this.options.collapsed) { | ||||||
|  | 		L.DomEvent.addListener(this._container, 'mouseover', this._expand, this); | ||||||
|  | 		L.DomEvent.addListener(this._container, 'mouseout', this._collapse, this); | ||||||
|  | 
 | ||||||
|  | 		var link = this._layersLink = L.DomUtil.create('a', 'leaflet-control-layers-toggle'); | ||||||
|  | 		link.href = '#'; | ||||||
|  | 		link.title = 'Layers'; | ||||||
|  | 
 | ||||||
|  | 		if (L.Browser.touch) { | ||||||
|  | 			L.DomEvent.addListener(link, 'click', this._expand, this); | ||||||
|  | 			L.DomEvent.disableClickPropagation(link);								// change to Leaflet: disable click propagation
 | ||||||
|  | 		} else { | ||||||
|  | 			L.DomEvent.addListener(link, 'focus', this._expand, this); | ||||||
|  | 		} | ||||||
|  | 		this._map.on('movestart', this._collapse, this); | ||||||
|  | 		// TODO keyboard accessibility
 | ||||||
|  | 
 | ||||||
|  | 		this._container.appendChild(link); | ||||||
|  | 	} else { | ||||||
|  | 		this._expand(); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	this._baseLayersList = L.DomUtil.create('div', 'leaflet-control-layers-base', this._form); | ||||||
|  | 	this._separator = L.DomUtil.create('div', 'leaflet-control-layers-separator', this._form); | ||||||
|  | 	this._overlaysList = L.DomUtil.create('div', 'leaflet-control-layers-overlays', this._form); | ||||||
|  | 
 | ||||||
|  | 	this._container.appendChild(this._form); | ||||||
|  | }, | ||||||
|  | 
 | ||||||
|  | // new query functionality
 | ||||||
| getActiveLayerName: function () { | getActiveLayerName: function () { | ||||||
| 	var i, input, obj, | 	var i, input, obj, | ||||||
| 	inputs = this._form.getElementsByTagName('input'), | 	inputs = this._form.getElementsByTagName('input'), | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user