Я просмотрел здесь и Google, хотя не нашел исправления, этот код ниже, казалось, будет работать. Я пытаюсь получить расстояние от двух широт и долгот для использования с картой Google. Я могу получить все стандартные способы работы на другом сервере, например, API Google и т. Д. Я не могу рассчитать 'dist'. На сервере, который я использую, есть проблемы с XML. Я потратил часы на это и догадался, что это простое исправление (мозговой туман играет роль)
test html
FROM<br>
<input id="lat1" type="text" value="">Latitude<br>
<input id="lon1" type="text" value="">Longitude<br>
TO<br>
<input id="lat2" type="text" value="">Latitude<br>
<input id="lon2" type="text" value="">Longitude<br>
<hr>
<input id="dist" type="text" value="">Distance<br>
<br>
<button id="calc">Calculate</button>
<br>
<div id="dist_text"></div>
<div id="lat1_text"></div>
<div id="lon1_text"></div>
<div id="lat2_text"></div>
<div id="lon2_text"></div>
<div id="radtheta_text"></div>
script
$('#calc').click(function()
{
var lat1=$('#lat1').val();
var lon1=$('#lon1').val();
var lat2=$('#lat2').val();
var lon2=$('#lon2').val();
var dist='0';
var unit = 'M';
if ((lat1 == lat2) && (lon1 == lon2)) {
$('#dist').val('ERROR');
}
else {
var radlat1 = Math.PI * lat1/180;
var radlat2 = Math.PI * lat2/180;
var theta = lon1-lon2;
var radtheta = Math.PI * theta/180;
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
// Edited to remove this below, incase anyone else finds it where i did.
//var dist = lon1-lon2;
if (dist > 1) {
dist = 1;
}
dist = Math.acos(dist);
dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;
if (unit=="K") { dist = dist * 1.609344 }
if (unit=="N") { dist = dist * 0.8684 }
//var dist2 = dist.toFixed(4);
//return dist;
$('#dist').val(dist.toFixed(4));
$('#dist_text').text('Distance: ' + dist);
$('#lat1_text').text('Latitude 1: ' + lat1);
$('#lon1_text').text('Longitude 1: ' + lon1);
$('#lat2_text').text('Latitude 2: ' + lat1);
$('#lon2_text').text('Longitude 2: ' + lon2);
$('#radtheta_text').text('radtheta: ' + radtheta);
}
});