使用AngularJS,我试图在两个坐标之间显示以英里为单位的距离。
以下是过滤器。我需要传递四个参数:开始纬度1,完成经度1,开始纬度2,完成经度2和单位(航海里程)。
app.filter('distanceFrom', function() {
return function(lat1, lon1, lat2, lon2, unit) {
var radlat1 = Math.PI * lat1/180
var radlat2 = Math.PI * lat2/180
var radlon1 = Math.PI * lon1/180
var radlon2 = Math.PI * lon2/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);
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 }
return dist
};
});
在视图中使用此表达式我试图传递所需的参数:
{{ distanceFromMiles | distanceFrom: 53.800043:-1.546669:53.8007554:-1.5490773999999874:106.85937254260821:N}}
然而,在页面上,表达式为Null。关于如何使上述过滤器工作的任何想法将非常感激。
答案 0 :(得分:0)
过滤函数中的第一个变量将获得过滤器表达式(distanceFromMiles)而不是纬度
http://tutorials.jenkov.com/angularjs/views-and-directives.html