diff --git a/CHANGELOG.md b/CHANGELOG.md index ad69edde..c410ce2e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ An in-progress version being developed on the master branch. * Replaced ugly control position constants (e.g. L.Control.Position.TOP_LEFT) with light strings ('topleft', 'bottomright', etc.) * Removed `Map` `locateAndSetView` method (use `locate` with `setView: true` option) * Changed popup `minWidth` and `maxWidth` options to be applied to content element, not the whole popup. + * Moved `prefix` argument to `options` in `Control.Attribution` constructor. #### Other API improvements diff --git a/src/Leaflet.js b/src/Leaflet.js index f6797c28..222b8221 100644 --- a/src/Leaflet.js +++ b/src/Leaflet.js @@ -5,7 +5,7 @@ ROOT_URL: root.L_ROOT_URL || (function () { var scripts = document.getElementsByTagName('script'), - leafletRe = /\/?leaflet[\-\._]?([\w\-\._]*)\.js\??/; + leafletRe = /\/?leaflet[\-\._]?([\w\-\._]*)\.js\??/; var i, len, src, matches; diff --git a/src/control/Control.Attribution.js b/src/control/Control.Attribution.js index cf0cc721..59fe5935 100644 --- a/src/control/Control.Attribution.js +++ b/src/control/Control.Attribution.js @@ -1,52 +1,51 @@ L.Control.Attribution = L.Control.extend({ options: { - position: 'bottomright' + position: 'bottomright', + prefix: 'Powered by Leaflet' }, - initialize: function (prefix, options) { + initialize: function (options) { L.Util.setOptions(this, options); - this._prefix = prefix || 'Powered by Leaflet'; this._attributions = {}; }, onAdd: function (map) { + this._map = map; + this._container = L.DomUtil.create('div', 'leaflet-control-attribution'); L.DomEvent.disableClickPropagation(this._container); - this._map = map; + this._update(); return this._container; }, setPrefix: function (prefix) { - this._prefix = prefix; + this.options.prefix = prefix; this._update(); }, addAttribution: function (text) { - if (!text) { - return; - } + if (!text) { return; } + if (!this._attributions[text]) { this._attributions[text] = 0; } this._attributions[text]++; + this._update(); }, removeAttribution: function (text) { - if (!text) { - return; - } + if (!text) { return; } + this._attributions[text]--; this._update(); }, _update: function () { - if (!this._map) { - return; - } + if (!this._map) { return; } var attribs = []; @@ -57,8 +56,9 @@ L.Control.Attribution = L.Control.extend({ } var prefixAndAttribs = []; - if (this._prefix) { - prefixAndAttribs.push(this._prefix); + + if (this.options.prefix) { + prefixAndAttribs.push(this.options.prefix); } if (attribs.length) { prefixAndAttribs.push(attribs.join(', ')); diff --git a/src/layer/GeoJSON.js b/src/layer/GeoJSON.js index 7556f46f..29fbc03b 100644 --- a/src/layer/GeoJSON.js +++ b/src/layer/GeoJSON.js @@ -13,7 +13,7 @@ L.GeoJSON = L.FeatureGroup.extend({ addGeoJSON: function (geojson) { var features = geojson.features, - i, len; + i, len; if (features) { for (i = 0, len = features.length; i < len; i++) { @@ -23,8 +23,8 @@ L.GeoJSON = L.FeatureGroup.extend({ } var isFeature = (geojson.type === 'Feature'), - geometry = isFeature ? geojson.geometry : geojson, - layer = L.GeoJSON.geometryToLayer(geometry, this.options.pointToLayer); + geometry = isFeature ? geojson.geometry : geojson, + layer = L.GeoJSON.geometryToLayer(geometry, this.options.pointToLayer); this.fire('featureparse', { layer: layer, @@ -41,8 +41,8 @@ L.GeoJSON = L.FeatureGroup.extend({ L.Util.extend(L.GeoJSON, { geometryToLayer: function (geometry, pointToLayer) { var coords = geometry.coordinates, - layers = [], - latlng, latlngs, i, len, layer; + layers = [], + latlng, latlngs, i, len, layer; switch (geometry.type) { case 'Point': @@ -87,16 +87,15 @@ L.Util.extend(L.GeoJSON, { coordsToLatLng: function (coords, reverse) { // (Array, Boolean) -> LatLng var lat = parseFloat(coords[reverse ? 0 : 1]), - lng = parseFloat(coords[reverse ? 1 : 0]); + lng = parseFloat(coords[reverse ? 1 : 0]); return new L.LatLng(lat, lng, true); }, coordsToLatLngs: function (coords, levelsDeep, reverse) { // (Array, Number, Boolean) -> Array var latlng, - latlngs = [], - i, - len; + latlngs = [], + i, len; for (i = 0, len = coords.length; i < len; i++) { latlng = levelsDeep ? diff --git a/src/layer/vector/Polyline.Edit.js b/src/layer/vector/Polyline.Edit.js index 68217f3b..efa65ff3 100644 --- a/src/layer/vector/Polyline.Edit.js +++ b/src/layer/vector/Polyline.Edit.js @@ -180,8 +180,8 @@ L.Handler.PolyEdit = L.Handler.extend({ _getMiddleLatLng: function (marker1, marker2) { var map = this._poly._map, - p1 = map.latLngToLayerPoint(marker1.getLatLng()), - p2 = map.latLngToLayerPoint(marker2.getLatLng()); + p1 = map.latLngToLayerPoint(marker1.getLatLng()), + p2 = map.latLngToLayerPoint(marker2.getLatLng()); return map.layerPointToLatLng(p1._add(p2).divideBy(2)); } diff --git a/src/map/Map.js b/src/map/Map.js index 42ddfee2..0a608bb3 100644 --- a/src/map/Map.js +++ b/src/map/Map.js @@ -70,7 +70,7 @@ L.Map = L.Class.extend({ } var center = options.center, - zoom = options.zoom; + zoom = options.zoom; if (center && typeof zoom !== 'undefined') { this.setView(center, zoom, true); @@ -108,7 +108,7 @@ L.Map = L.Class.extend({ fitWorld: function () { var sw = new L.LatLng(-60, -170), - ne = new L.LatLng(85, 179); + ne = new L.LatLng(85, 179); return this.fitBounds(new L.LatLngBounds(sw, ne)); }, @@ -152,12 +152,12 @@ L.Map = L.Class.extend({ panInsideBounds: function (bounds) { var viewBounds = this.getBounds(), - viewSw = this.project(viewBounds.getSouthWest()), - viewNe = this.project(viewBounds.getNorthEast()), - sw = this.project(bounds.getSouthWest()), - ne = this.project(bounds.getNorthEast()), - dx = 0, - dy = 0; + viewSw = this.project(viewBounds.getSouthWest()), + viewNe = this.project(viewBounds.getNorthEast()), + sw = this.project(bounds.getSouthWest()), + ne = this.project(bounds.getNorthEast()), + dx = 0, + dy = 0; if (viewNe.y < ne.y) { // north dy = ne.y - viewNe.y; @@ -288,7 +288,7 @@ L.Map = L.Class.extend({ getCenter: function (unbounded) { // (Boolean) var viewHalf = this.getSize().divideBy(2), - centerPoint = this._getTopLeftPoint().add(viewHalf); + centerPoint = this._getTopLeftPoint().add(viewHalf); return this.unproject(centerPoint, this._zoom, unbounded); }, @@ -299,37 +299,37 @@ L.Map = L.Class.extend({ getBounds: function () { var bounds = this.getPixelBounds(), - sw = this.unproject(new L.Point(bounds.min.x, bounds.max.y), this._zoom, true), - ne = this.unproject(new L.Point(bounds.max.x, bounds.min.y), this._zoom, true); + sw = this.unproject(new L.Point(bounds.min.x, bounds.max.y), this._zoom, true), + ne = this.unproject(new L.Point(bounds.max.x, bounds.min.y), this._zoom, true); return new L.LatLngBounds(sw, ne); }, getMinZoom: function () { var z1 = this.options.minZoom || 0, - z2 = this._layersMinZoom || 0, - z3 = this._boundsMinZoom || 0; + z2 = this._layersMinZoom || 0, + z3 = this._boundsMinZoom || 0; return Math.max(z1, z2, z3); }, getMaxZoom: function () { var z1 = typeof this.options.maxZoom === 'undefined' ? Infinity : this.options.maxZoom, - z2 = typeof this._layersMaxZoom === 'undefined' ? Infinity : this._layersMaxZoom; + z2 = typeof this._layersMaxZoom === 'undefined' ? Infinity : this._layersMaxZoom; return Math.min(z1, z2); }, getBoundsZoom: function (bounds, inside) { // (LatLngBounds, Boolean) -> Number var size = this.getSize(), - zoom = this.options.minZoom || 0, - maxZoom = this.getMaxZoom(), - ne = bounds.getNorthEast(), - sw = bounds.getSouthWest(), - boundsSize, - nePoint, - swPoint, - zoomNotFound = true; + zoom = this.options.minZoom || 0, + maxZoom = this.getMaxZoom(), + ne = bounds.getNorthEast(), + sw = bounds.getSouthWest(), + boundsSize, + nePoint, + swPoint, + zoomNotFound = true; if (inside) { zoom--;