X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/fe6e837cfe77e1414998c0216defe7912e34bf75..77b4ff6ceb81a326b7ed3c80cf5d65ec2a2b18d5:/vendor/assets/leaflet/leaflet.locationfilter.js diff --git a/vendor/assets/leaflet/leaflet.locationfilter.js b/vendor/assets/leaflet/leaflet.locationfilter.js index f4e256858..9a0af4db4 100644 --- a/vendor/assets/leaflet/leaflet.locationfilter.js +++ b/vendor/assets/leaflet/leaflet.locationfilter.js @@ -91,6 +91,8 @@ L.Control.ButtonContainer = L.Control.extend({ }); L.LocationFilter = L.Class.extend({ + includes: L.Mixin.Events, + options: { enableButton: { enableText: "Select area", @@ -112,8 +114,10 @@ L.LocationFilter = L.Class.extend({ onAdd: function(map) { this._map = map; - this._layer = new L.LayerGroup(); - this._initializeButtonContainer(); + + if (this.options.enableButton || this.options.adjustButton) { + this._initializeButtonContainer(); + } if (this.options.enable) { this.enable(); @@ -122,7 +126,9 @@ L.LocationFilter = L.Class.extend({ onRemove: function(map) { this.disable(); - this._buttonContainer.removeFrom(map); + if (this._buttonContainer) { + this._buttonContainer.removeFrom(map); + } }, /* Get the current filter bounds */ @@ -135,8 +141,10 @@ L.LocationFilter = L.Class.extend({ this._ne = bounds.getNorthEast(); this._sw = bounds.getSouthWest(); this._se = bounds.getSouthEast(); - this._draw(); - this._callCallback("onChange"); + if (this.isEnabled()) { + this._draw(); + this.fire("change", {bounds: bounds}); + } }, isEnabled: function() { @@ -187,10 +195,10 @@ L.LocationFilter = L.Class.extend({ var markerPos = that._moveMarker.getLatLng(), latDelta = markerPos.lat-that._nw.lat, lngDelta = markerPos.lng-that._nw.lng; - that._nw = new L.LatLng(that._nw.lat+latDelta, that._nw.lng+lngDelta); - that._ne = new L.LatLng(that._ne.lat+latDelta, that._ne.lng+lngDelta); - that._sw = new L.LatLng(that._sw.lat+latDelta, that._sw.lng+lngDelta); - that._se = new L.LatLng(that._se.lat+latDelta, that._se.lng+lngDelta); + that._nw = new L.LatLng(that._nw.lat+latDelta, that._nw.lng+lngDelta, true); + that._ne = new L.LatLng(that._ne.lat+latDelta, that._ne.lng+lngDelta, true); + that._sw = new L.LatLng(that._sw.lat+latDelta, that._sw.lng+lngDelta, true); + that._se = new L.LatLng(that._se.lat+latDelta, that._se.lng+lngDelta, true); that._draw(); }); this._setupDragendListener(this._moveMarker); @@ -216,8 +224,8 @@ L.LocationFilter = L.Class.extend({ latMarker = options.moveAlong.lat, lngMarker = options.moveAlong.lng; // Move follower markers when this marker is moved - latMarker.setLatLng(new L.LatLng(curPosition.lat, latMarker.getLatLng().lng)); - lngMarker.setLatLng(new L.LatLng(lngMarker.getLatLng().lat, curPosition.lng)); + latMarker.setLatLng(new L.LatLng(curPosition.lat, latMarker.getLatLng().lng, true)); + lngMarker.setLatLng(new L.LatLng(lngMarker.getLatLng().lat, curPosition.lng, true)); // Sort marker positions in nw, ne, sw, se order var corners = [that._nwMarker.getLatLng(), that._neMarker.getLatLng(), @@ -239,22 +247,13 @@ L.LocationFilter = L.Class.extend({ this._setupDragendListener(marker); }, - /* Call the callback (given by name) if it was supplied in options */ - _callCallback: function(callbackName) { - if (this.options[callbackName]) { - this.options[callbackName](this.getBounds()); - } - }, - - /* Call the onChange callback whenever dragend is triggered on the + /* Emit a change event whenever dragend is triggered on the given marker */ _setupDragendListener: function(marker) { - if (this.options.onChange) { - var that = this; - marker.on('dragend', function(e) { - that._callCallback("onChange"); - }); - } + var that = this; + marker.on('dragend', function(e) { + that.fire("change", {bounds: that.getBounds()}); + }); }, /* Create bounds for the mask rectangles and the location @@ -263,9 +262,9 @@ L.LocationFilter = L.Class.extend({ var mapBounds = this._map.getBounds(), outerBounds = new L.LatLngBounds( new L.LatLng(mapBounds.getSouthWest().lat-0.1, - mapBounds.getSouthWest().lng-0.1), + mapBounds.getSouthWest().lng-0.1, true), new L.LatLng(mapBounds.getNorthEast().lat+0.1, - mapBounds.getNorthEast().lng+0.1) + mapBounds.getNorthEast().lng+0.1, true) ); // The south west and north east points of the mask */ @@ -273,10 +272,10 @@ L.LocationFilter = L.Class.extend({ this._one = outerBounds.getNorthEast(); // Bounds for the mask rectangles - this._northBounds = new L.LatLngBounds(new L.LatLng(this._ne.lat, this._osw.lng), this._one), - this._westBounds = new L.LatLngBounds(new L.LatLng(this._sw.lat, this._osw.lng), this._nw), - this._eastBounds = new L.LatLngBounds(this._se, new L.LatLng(this._ne.lat, this._one.lng)), - this._southBounds = new L.LatLngBounds(this._osw, new L.LatLng(this._sw.lat, this._one.lng)); + this._northBounds = new L.LatLngBounds(new L.LatLng(this._ne.lat, this._osw.lng, true), this._one); + this._westBounds = new L.LatLngBounds(new L.LatLng(this._sw.lat, this._osw.lng, true), this._nw); + this._eastBounds = new L.LatLngBounds(this._se, new L.LatLng(this._ne.lat, this._one.lng, true)); + this._southBounds = new L.LatLngBounds(this._osw, new L.LatLng(this._sw.lat, this._one.lng, true)); }, /* Initializes rectangles and markers */ @@ -285,6 +284,8 @@ L.LocationFilter = L.Class.extend({ return; } + this._layer = new L.LayerGroup(); + // Calculate filter bounds this._calculateBounds(); @@ -294,7 +295,7 @@ L.LocationFilter = L.Class.extend({ this._eastRect = this._drawRectangle(this._eastBounds); this._southRect = this._drawRectangle(this._southBounds); this._innerRect = this._drawRectangle(this.getBounds(), { - fillColor: "transparent", + fillOpacity: 0, stroke: true, color: "white", weight: 1, @@ -378,7 +379,9 @@ L.LocationFilter = L.Class.extend({ // Update buttons - this._buttonContainer.addClass("enabled"); + if (this._buttonContainer) { + this._buttonContainer.addClass("enabled"); + } if (this._enableButton) { this._enableButton.setText(this.options.enableButton.disableText); @@ -411,8 +414,8 @@ L.LocationFilter = L.Class.extend({ this._enabled = true; - // Call the enabled callback - this._callCallback("onEnabled"); + // Fire the enabled event + this.fire("enabled"); }, /* Disable the location filter */ @@ -422,7 +425,9 @@ L.LocationFilter = L.Class.extend({ } // Update buttons - this._buttonContainer.removeClass("enabled"); + if (this._buttonContainer) { + this._buttonContainer.removeClass("enabled"); + } if (this._enableButton) { this._enableButton.setText(this.options.enableButton.enableText); @@ -440,8 +445,8 @@ L.LocationFilter = L.Class.extend({ this._enabled = false; - // Call the disabled callback - this._callCallback("onDisabled"); + // Fire the disabled event + this.fire("disabled"); }, /* Create a button that allows the user to adjust the location @@ -454,7 +459,7 @@ L.LocationFilter = L.Class.extend({ onClick: function(event) { that._adjustToMap(); - that._callCallback("onAdjustToZoomClick"); + that.fire("adjustToZoomClick"); } }).addTo(this._buttonContainer); }, @@ -474,11 +479,11 @@ L.LocationFilter = L.Class.extend({ if (!that._enabled) { // Enable the location filter that.enable(); - that._callCallback("onEnableClick"); + that.fire("enableClick"); } else { // Disable the location filter that.disable(); - that._callCallback("onDisableClick"); + that.fire("disableClick"); } } }).addTo(this._buttonContainer); @@ -486,4 +491,4 @@ L.LocationFilter = L.Class.extend({ this._buttonContainer.addTo(this._map); } -}); \ No newline at end of file +});