UNPKG

leaflet.mousecoordinate

Version:
75 lines (65 loc) 2.22 kB
/** * Created by Johannes Rudolph <johannes.rudolph@gmx.com> on 01.09.2016. */ /** * * @type {{fromLatLng: QTH.fromLatLng}} */ var QTH = { /** * * @param {{lat: number, lng: number}} * @returns {string} */ fromLatLng: function(latlng){ /* Long/Lat to QTH locator conversion largely */ /* inspired from the DL4MFM code found here : */ /* http://members.aol.com/mfietz/ham/calcloce.html */ var ychr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var ynum = "0123456789"; var yqth, yi, yk, ydiv, yres, ylp; var y = 0; var ycalc = [0,0,0]; var yn = [0,0,0,0,0,0,0]; ycalc[1] = latlng.lng+ 180; ycalc[2] = latlng.lat + 90; for (yi = 1; yi < 3; ++yi) { for (yk = 1; yk < 4; ++yk) { if (yk != 3) { if (yi == 1) { if (yk == 1) ydiv = 20; if (yk == 2) ydiv = 2; } if (yi == 2) { if (yk == 1) ydiv = 10; if (yk == 2) ydiv = 1; } yres = ycalc[yi] / ydiv; ycalc[yi] = yres; if (ycalc[yi]>0) ylp = Math.floor(yres); else ylp = Math.ceil(yres); ycalc[yi] = (ycalc[yi] - ylp) * ydiv; } else { if (yi == 1) ydiv = 12; else ydiv = 24; yres = ycalc[yi] * ydiv; ycalc[yi] = yres; if (ycalc[yi] > 0) ylp = Math.floor(yres); else ylp = Math.ceil(yres); } ++y; yn[y] = ylp; } } yqth = ychr.charAt(yn[1]) + ychr.charAt(yn[4]) + ynum.charAt(yn[2]); yqth += ynum.charAt(yn[5]) + ychr.charAt(yn[3])+ ychr.charAt(yn[6]); return yqth; } };