具有多个参数的AngularJS表达式过滤器

时间:2014-12-14 11:24:19

标签: javascript angularjs

使用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。关于如何使上述过滤器工作的任何想法将非常感激。

1 个答案:

答案 0 :(得分:0)

过滤函数中的第一个变量将获得过滤器表达式(distanceFromMiles)而不是纬度

http://tutorials.jenkov.com/angularjs/views-and-directives.html