var LatLngSwitch = function (parent) { this.Parent = parent; this.Startup = function () { $('#first-lng-copy-btn').on('click', this.OnFirstLngCopyClick.bind(this)); $('#first-lat-copy-btn').on('click', this.OnFirstLatCopyClick.bind(this)); $('#second-lng-copy-btn').on('click', this.OnSecondLngCopyClick.bind(this)); $('#second-lat-copy-btn').on('click', this.OnSecondLatCopyClick.bind(this)); $('#first-lng-switch-btn').on('click', this.onFirstLngSwitchClick.bind(this)); $('#first-lat-switch-btn').on('click', this.onFirstLatSwitchClick.bind(this)); $('#second-lng-switch-btn').on('click', this.onSecondLngSwitchClick.bind(this)); $('#second-lat-switch-btn').on('click', this.onSecondLatSwitchClick.bind(this)); $('#close-lat-lng-switch-dialog').on('click', this.HideDialog.bind(this)); $('#dialog-lat-lng-switch-cancel').on('click', this.HideDialog.bind(this)); }; this.ShowDialog = function (point) { $('#dialog-lat-lng-switch').show(); var lng = this.getLatLng(point.lng); var lat = this.getLatLng(point.lat); var decimalLng = this.changeToDecimal(lng); var decimalLat = this.changeToDecimal(lat); // change to degree var firstLngDegree = $('#first-lng-degree').val(decimalLng.degree); var firstLngMinute = $('#first-lng-minute').val(decimalLng.minute); var firstLngSecond = $('#first-lng-second').val(decimalLng.second); var firstLatDegree = $('#first-lat-degree').val(decimalLat.degree); var firstLatMinute = $('#first-lat-minute').val(decimalLat.minute); var firstLatSecond = $('#first-lat-second').val(decimalLat.second); var degreeLng = this.changeToDegree(firstLngDegree.val(), firstLngMinute.val(), firstLngSecond.val()); var degreeLat = this.changeToDegree(firstLatDegree.val(), firstLatMinute.val(), firstLatSecond.val()); $('#first-lng-decimal').val(degreeLng); $('#first-lat-decimal').val(degreeLat); // change to decimal $('#second-lng-decimal').val(lng); $('#second-lat-decimal').val(lat); $('#second-lng-degree').val(decimalLng.degree); $('#second-lng-minute').val(decimalLng.minute); $('#second-lng-second').val(decimalLng.second); $('#second-lat-degree').val(decimalLat.degree); $('#second-lat-minute').val(decimalLat.minute); $('#second-lat-second').val(decimalLat.second); $('#hide-lng').val(decimalLng.degree + "°" + decimalLng.minute + "'" + decimalLng.second + "\""); $('#hide-lat').val(decimalLat.degree + "°" + decimalLat.minute + "'" + decimalLat.second + "\""); }; this.getLatLng = function (value) { value = value.toString() let index = value.indexOf('.') if (index !== -1) { value = value.substring(0, 6 + index + 1) } else { value = value.substring(0) } return parseFloat(value).toFixed(6) } this.onFirstLngSwitchClick = function () { var value = this.changeToDegree($('#first-lng-degree').val(), $('#first-lng-minute').val(), $('#first-lng-second').val()); $('#first-lng-decimal').val(value); }; this.onFirstLatSwitchClick = function () { var value = this.changeToDegree($('#first-lat-degree').val(), $('#first-lat-minute').val(), $('#first-lat-second').val()); $('#first-lat-decimal').val(value) } this.onSecondLngSwitchClick = function () { var value = this.changeToDecimal($('#second-lng-decimal').val()); $('#second-lng-degree').val(value.degree); $('#second-lng-minute').val(value.minute); $('#second-lng-second').val(value.second); }; this.onSecondLatSwitchClick = function () { var value = this.changeToDecimal($('#second-lat-decimal').val()); $('#second-lat-degree').val(value.degree); $('#second-lat-minute').val(value.minute); $('#second-lat-second').val(value.second); } this.changeToDecimal = function (value) { var text = value.split("."); var degree = text[0]; var temp = "0." + text[1]; var temp = String(temp * 60); var str = temp.split("."); var minute = str[0]; temp = "0." + str[1]; temp = temp * 60; var second = temp; return { degree: degree, minute: minute, second: second } } this.changeToDegree = function (degree, minute, second) { var str = parseFloat(minute) + parseFloat(second / 60); var value = parseFloat(str / 60) + parseFloat(degree); return value; } this.HideDialog = function () { $('#dialog-lat-lng-switch').hide(); $('#map').css('cursor', 'grab'); this.Parent.isSwitch = false; }; this.OnFirstLngCopyClick = function () { var selected = document.querySelector('#first-lng-decimal'); selected.select(); document.execCommand('Copy'); }; this.OnFirstLatCopyClick = function () { var selected = document.querySelector('#first-lat-decimal'); selected.select(); document.execCommand('Copy'); }; this.OnSecondLngCopyClick = function () { var selected = document.querySelector('#hide-lng'); selected.select(); document.execCommand('Copy'); }; this.OnSecondLatCopyClick = function () { var selected = document.querySelector('#hide-lat'); selected.select(); document.execCommand('Copy'); }; }