NaN результат расчета расстояния - PullRequest
0 голосов
/ 08 октября 2019

Я просмотрел здесь и 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);
    }
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...