Javascript AngularJS:如何根据邮政编码的最近距离进行过滤?

Javascript AngularJS:如何根据邮政编码的最近距离进行过滤?,javascript,jquery,sql-server,angularjs,Javascript,Jquery,Sql Server,Angularjs,我面临一个来自我的客户的严格要求,那就是我们需要根据邮政编码过滤公司的地址。例如,大约有5家公司的邮政编码分别为2000、2005、2010、2015和2020。然后,当用户输入文本字段值2019时,结果应该是2020、2015、2010、2005、2000 目前,我正在使用基于文本字段postcode的AngularJS过滤器,但它只是基于匹配确切的关键字进行过滤 例如:当我键入2020时,它会显示一个地址为2020的结果,而它应该是:2020、2015、2010、2005、2000。最难的是

我面临一个来自我的客户的严格要求,那就是我们需要根据邮政编码过滤公司的地址。例如,大约有5家公司的邮政编码分别为2000、2005、2010、2015和2020。然后,当用户输入文本字段值2019时,结果应该是2020、2015、2010、2005、2000

目前,我正在使用基于文本字段postcode的AngularJS过滤器,但它只是基于匹配确切的关键字进行过滤

例如:当我键入2020时,它会显示一个地址为2020的结果,而它应该是:2020、2015、2010、2005、2000。最难的是2019关键词,它没有显示任何内容,而应该是2020年、2015年

最后,另一个要求是根据输入的邮政编码显示每个公司的距离

我筛选的JSON值是:

[
 {"CompanyName": "ABC", "Address": "XYZ", "PostCode": "2000"},
 {"CompanyName": "ABD", "Address": "XYYZZ", "PostCode": "2020"},
 {"CompanyName": "ABE", "Address": "XXYYZ", "PostCode": "2015"}, 
 ...
]
我真的很挣扎,希望有人能帮我。我真的很感激

更新
谢谢@Luze26。这确实显示了我所描述的。我用2个邮政编码之间的数学距离来显示区域距离。但当我在谷歌地图上搜索后,我意识到(根据@doldt),邮政编码之间的数学距离并不代表这些邮政编码区域之间的距离。我以为他们是一样的:)。真的为我的误会道歉。我仍在寻找正确的解决方案,如果有其他人的建议,我将不胜感激,并提前表示感谢。

我相信您需要在服务器端使用每个zipcode的地理位置数据。然后,您可以进行距离查询并设置限制


数据可从USPS获得。大约有80000个zipcodes

我认为您可以使用
orderBy
过滤器from Angular,并使用一个函数返回到输入邮政编码的距离


您可以看到JSFIDLE的示例:

有用于计算两个邮政编码之间距离的客户端服务。这是我同事写的一封信:


我希望这有帮助

到目前为止你做了什么?据我所知,他只是在寻找邮政编码之间的简单数学距离,而不是地理距离。@dolt还需要这方面的数据。单凭实际的zipcode号码是没有帮助的。数学距离和地理距离的区别是什么?@charlieftl我不是说邮政编码所代表的地区之间的数学距离,只是邮政编码本身作为数字的明显区别:)然后创建一个简单的自定义过滤器