угловой: расстояние между двумя точками - PullRequest
0 голосов
/ 20 мая 2018

У меня есть две координаты местоположения.Мне нужно проверить расстояние между двумя координатами.Я искал и нашел несколько кодов в PHP, C ++, C # и Java.

Я использую Angular1, и мне нужно выполнить вычисления на стороне клиента.Итак, я ищу помощь в Angular.Вот код, написанный на JavaScript, и мне нужно преобразовать его в Angular.

    function degreesToRadians(degrees) {
                                return degrees * Math.PI / 180;
                              }

                              function distanceInKmBetweenEarthCoordinates(lat1, lon1, lat2, lon2) {
                                var earthRadiusKm = 6371;


var dLat = degreesToRadians(lat2-lat1);
                        var dLon = degreesToRadians(lon2-lon1);

                        lat1 = degreesToRadians(lat1);
                        lat2 = degreesToRadians(lat2);

                        var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
                                Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
                        var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
                        return earthRadiusKm * c;
                      }

Проблема в том, что я никогда не создавал функцию в Angular.Как я могу его запустить?

Я пробовал вот так

$scope.distance = distanceInKmBetweenCoordinates($scope.userlatitude, $scope.userlongitude, $scope.mylatitude, $scope.mylongitude);

 alert($scope.distance);

Это дает мне ошибку:

ReferenceError: distanceInKmBetweenCoordinates не определено

1 Ответ

0 голосов
/ 20 мая 2018

в вашем контроллере:

function degreesToRadians(degrees) {
        return degrees * Math.PI / 180;
    }

function distanceInKmBetweenEarthCoordinates(lat1, lon1, lat2, lon2) {
        var earthRadiusKm = 6371;

        var dLat = degreesToRadians(lat2-lat1);
        var dLon = degreesToRadians(lon2-lon1);

        lat1 = degreesToRadians(lat1);
        lat2 = degreesToRadians(lat2);

        var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
        var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
        return earthRadiusKm * c;
}

$scope.distance = distanceInKmBetweenEarthCoordinates($scope.userlatitude, $scope.userlongitude, $scope.mylatitude, $scope.mylongitude);
alert($scope.distance);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...