L.Control.MousePosition = L.Control.extend({ options: { position: 'bottomleft', separator: ' : ', emptyString: 'Unavailable', lngFirst: false, numDigits: 5, lngFormatter: undefined, latFormatter: undefined, prefix: "" }, onAdd: function (map) { this._container = L.DomUtil.create('div', 'leaflet-control-mouseposition'); L.DomEvent.disableClickPropagation(this._container); map.on('mousemove', this._onMouseMove, this); this._container.innerHTML=this.options.emptyString; return this._container; }, onRemove: function (map) { map.off('mousemove', this._onMouseMove) }, _onMouseMove: function (e) { var lng = this.options.lngFormatter ? this.options.lngFormatter(e.latlng.lng) : L.Util.formatNum(e.latlng.lng, this.options.numDigits); var lat = this.options.latFormatter ? this.options.latFormatter(e.latlng.lat) : L.Util.formatNum(e.latlng.lat, this.options.numDigits); var value = this.options.lngFirst ? lng + this.options.separator + lat : lat + this.options.separator + lng; var prefixAndValue = this.options.prefix + ' ' + value; this._container.innerHTML = prefixAndValue; } }); L.Map.mergeOptions({ positionControl: false }); L.Map.addInitHook(function () { if (this.options.positionControl) { this.positionControl = new L.Control.MousePosition(); this.addControl(this.positionControl); } }); L.control.mousePosition = function (options) { return new L.Control.MousePosition(options); };