javascript - 如何使用angularjs计算两个纬度和经度之间的距离?

标签 javascript angularjs mongodb google-maps

$http.get('*****').success(function(data,dealers,response)
{    
 $scope.items = data;
 $scope.item ='';
 console.log(data);
var shoplatit=data.S_Location.Latitude;
 var shoplong=data.S_Location.Longitude;
															
});

$scope.nearme = function($scope) {
 if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (position) {
                mysrclat = position.coords.latitude; 
                mysrclong = position.coords.longitude;
                console.log(mysrclat);
                console.log(mysrclong);
        });
        
    }
  i tried like this but its not working getting  deg2rad is not defined erro
var lat1 =15.008809;
var lat2 =78.659096;

var lon1 =13.90457539;
var lon2 =78.5855514

  var R = 6371; // Radius of the earth in km
  var dLat = deg2rad(lat2-lat1);  // deg2rad below
  var dLon = deg2rad(lon2-lon1); 
  var a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * 
    Math.sin(dLon/2) * Math.sin(dLon/2)
    ; 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c; // Distance in km
   console.log(d);
<div ng-controller="ListingCtrl" >
  <div data-ng-init="nearme()">
    
    <div class="list card" data-ng-repeat="item in items">
    <h2>{{item.Store_Name}} </h2>{{item.S_Location.Latitude}}<br>{{item.S_Location.Longitude}}
    <p>{{item.S_Address}}</p> 
   <h1>here i want show distance in km</h1>
  </div>
    </div>
  </div>

我已经在 mongodb 中存储了经纬度。在列表页面中,我使用 navigator.geolocation 获取客户纬度和经度。我想计算两个纬度和经度之间的距离。我附上了我的代码

最佳答案

lat-long debug可以帮助您轻松调试地理距离等方面。

下面是计算它的函数式JS代码;它还具有 deg2rad() 函数,用于将以度为单位的数字转换为弧度等效值(您的代码中似乎缺少该值)。

我使用了你提供的两个坐标,返回的距离是123.04 km,也通过谷歌地图进行了交叉核对以验证相同。

/* 
Title: Get Distance from two Latitude / Longitude in Kilometers.

Description: This Javascript snippet calculates great-circle distances between the two points 
—— that is, the shortest distance over the earth’s surface; using the ‘Haversine’ formula.
*/

function _getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {
  var R = 6371; // Radius of the earth in kilometers
  var dLat = deg2rad(lat2 - lat1); // deg2rad below
  var dLon = deg2rad(lon2 - lon1);
  var a =
    Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
    Math.sin(dLon / 2) * Math.sin(dLon / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var d = R * c; // Distance in KM
  return d;
}

function deg2rad(deg) {
  return deg * (Math.PI / 180)
}



// Point 1: 15.008809, 78.659096
// Point 2: 13.90457539, 78.5855514

var _lat1 = 15.008809;
var _lon1 = 78.659096;

var _lat2 = 13.90457539;
var _lon2 = 78.5855514;

// precise value
var _d = "Precise value: " + _getDistanceFromLatLonInKm(_lat1, _lon1, _lat2, _lon2);
console.log(_d); // alert(_d);


// round value
_d = "Round value: " +
  Math.round(_getDistanceFromLatLonInKm(_lat1, _lon1, _lat2, _lon2) * 100) / 100 +
  " km";
console.log(_d); // alert(_d);

关于javascript - 如何使用angularjs计算两个纬度和经度之间的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31332989/

相关文章:

javascript - 如何使 `eslint`解析展开运算符?

angularjs - TypeScript 构造函数中的私有(private)变量声明以引发 DI

javascript - Angular 不工作

php - 如何安全地将 apiKey/客户端密码从 AngularJS 传递到 REST API

javascript - 按文档中的键汇总总计

python - 如何在 pymongo 中存储和检索 pandas 数据框列表?

javascript - SetTimeout 内的 SetTimeout 未触发

javascript - JS 中只删除字符串中的一些逗号

javascript - 将 knockout.js observablearray 对象传递给 MVC Controller Action?

java - 使用 DropWizard 和 MongoDB 在多个值中搜索关键字