Simplify "report a problem" control
Defer to the standard attribution control methods as much as possible instead of duplicating them.
This commit is contained in:
parent
6ede8ca045
commit
899891fe8a
1 changed files with 20 additions and 54 deletions
|
@ -44,65 +44,31 @@ window.onload = function () {
|
|||
} else {
|
||||
map.fitWorld();
|
||||
}
|
||||
(new L.Control.OSMReportAProblem({})).addTo(map);
|
||||
|
||||
map.addControl(new L.Control.OSMReportAProblem());
|
||||
};
|
||||
|
||||
L.Control.OSMReportAProblem = L.Control.Attribution.extend({
|
||||
options: {
|
||||
position: 'bottomright',
|
||||
prefix: '<a href="http://www.openstreetmap.org/fixthemap?lat={x}&lon={y}&zoom={z}">Report a problem</a>'
|
||||
},
|
||||
_layerAdd: function(e)
|
||||
{
|
||||
if (e.layer.getAttribution) {
|
||||
this.addAttribution(e.layer.getAttribution());
|
||||
}
|
||||
},
|
||||
_layerRemove: function(e)
|
||||
{
|
||||
if (e.layer.getAttribution) {
|
||||
this.removeAttribution(e.layer.getAttribution());
|
||||
}
|
||||
},
|
||||
onAdd: function (map) {
|
||||
this._container = L.DomUtil.create('div', 'leaflet-control-attribution');
|
||||
L.DomEvent.disableClickPropagation(this._container);
|
||||
options: {
|
||||
position: 'bottomright',
|
||||
prefix: '<a href="http://www.openstreetmap.org/fixthemap#{z}/{x}/{y}">Report a problem</a>'
|
||||
},
|
||||
|
||||
// TODO ugly, refactor
|
||||
for (var i in map._layers) {
|
||||
if (map._layers[i].getAttribution) {
|
||||
this.addAttribution(map._layers[i].getAttribution());
|
||||
}
|
||||
}
|
||||
onAdd: function (map) {
|
||||
var container = L.Control.Attribution.prototype.onAdd.call(this, map);
|
||||
|
||||
this._update();
|
||||
map.on('moveend', this._update, this);
|
||||
map.on('layeradd', this._layerAdd, this);
|
||||
map.on('layerremove', this._layerRemove, this);
|
||||
map.on('moveend', this._update, this);
|
||||
|
||||
return this._container;
|
||||
},
|
||||
_update: function () {
|
||||
if (!this._map) { return; }
|
||||
return container;
|
||||
},
|
||||
|
||||
var attribs = [];
|
||||
_update: function () {
|
||||
L.Control.Attribution.prototype._update.call(this);
|
||||
|
||||
for (var i in this._attributions) {
|
||||
if (this._attributions[i]) {
|
||||
attribs.push(i);
|
||||
}
|
||||
}
|
||||
|
||||
var prefixAndAttribs = [];
|
||||
|
||||
if (this.options.prefix) {
|
||||
prefixAndAttribs.push(this.options.prefix);
|
||||
}
|
||||
if (attribs.length) {
|
||||
prefixAndAttribs.push(attribs.join(', '));
|
||||
}
|
||||
|
||||
this._container.innerHTML = prefixAndAttribs.join(' | ').replace('{x}', this._map.getCenter().lat).replace('{y}', this._map.getCenter().lng).replace('{z}', this._map.getZoom());
|
||||
}
|
||||
|
||||
});
|
||||
this._container.innerHTML =
|
||||
this._container.innerHTML
|
||||
.replace('{x}', this._map.getCenter().lat)
|
||||
.replace('{y}', this._map.getCenter().lng)
|
||||
.replace('{z}', this._map.getZoom());
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue