rdzwx-go/www/js/L.Control.MousePosition.js

101 wiersze
3.1 KiB
JavaScript

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;
//var locator = calcLocator(lat,lng);
this._container.innerHTML = prefixAndValue; // + " | " + locator ;
}
});
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);
};
function calcLocator(lat,lon)
{
//lon = document.getElementById("longitude").value;
//lat = document.getElementById("latitude").value;
var locator = "";
//lat=47.78689;
//lon=12.98875;
//lat=47.8093
//lon=12.9904
lon=parseFloat(lon);
lat=parseFloat(lat);
lat += 90;
lon += 180;
locator += String.fromCharCode(65 + Math.floor(lon / 20));
locator += String.fromCharCode(65 + Math.floor(lat / 10));
lon = lon % 20;
if (lon < 0) lon += 20;
lat = lat % 10;
if (lat < 0) lat += 10;
locator += String.fromCharCode(48 + Math.floor(lon / 2));
locator += String.fromCharCode(48 + Math.floor(lat / 1));
lon = lon % 2;
if (lon < 0) lon += 2;
lat = lat % 1;
if (lat < 0) lat += 1;
locator += String.fromCharCode(65 + Math.floor(lon * 12));
locator += String.fromCharCode(65 + Math.floor(lat * 24));
lon = lon % ( 1 / 12);
if (lon < 0) lon += 1 / 12;
lat = lat % ( 1 / 24);
if (lat < 0) lat += 1 / 24;
locator += String.fromCharCode(48 + Math.floor(lon * 120));
locator += String.fromCharCode(48 + Math.floor(lat * 240));
lon = lon % (1 / 120);
if (lon < 0) lon += 1 / 120;
lat = lat %( 1 / 240);
if (lat < 0) lat += 1 / 240;
locator += String.fromCharCode(65 + Math.floor(lon * 120 * 24));
locator += String.fromCharCode(65 + Math.floor(lat * 240 * 24));
lon = lon % ( 1 / 120 / 24);
if (lon < 0) lon += 1 / 120 / 24;
lat = lat % (1 / 240 / 24);
if (lat < 0) lat += 1 / 240 / 24;
if(/[A-Z0-9]{10}/.test(locator))
return locator;
}