You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
5.5 KiB
141 lines
5.5 KiB
3 years ago
|
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');
|
||
|
};
|
||
|
}
|