【问题标题】:AngularJS: How to filter based on the closest distance of post code?AngularJS:如何根据邮政编码的最近距离进行过滤?
【发布时间】:2015-04-24 14:29:14
【问题描述】:

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

此时,我正在使用基于文本字段邮政编码的 AngularJS 过滤器,但它只是根据匹配的确切关键字进行过滤。

例如:当我输入2020时,它会显示1个地址为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)邮政编码之间的数学距离并不代表这些邮政编码区域之间的距离。我以为他们是一样的:)。真的为我的误解道歉。我仍在寻找正确的解决方案,如果有其他人提供的任何解决方案,我将不胜感激,并在此先感谢。

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: javascript jquery sql-server angularjs


【解决方案1】:

我认为您可以使用来自 Angular 的 orderBy 过滤器和返回与输入邮政编码的距离的函数。

您可以查看 jsfiddle 示例:https://jsfiddle.net/HB7LU/13149/

【讨论】:

    【解决方案2】:

    我相信您需要通过使用每个邮政编码的地理位置数据来执行此服务器端。然后您可以进行距离查询并设置您的限制。

    数据可以从 USPS 获得。大约有 80,000 个邮政编码

    【讨论】:

    • 据我了解,他只是在寻找邮政编码之间的简单数学距离,而不是地理距离。
    • @dolt 仍然需要数据。单独的实际邮政编码无济于事。数学距离和地理距离有什么区别?
    • @charlieftl 我不是指邮政编码所代表的区域之间的数学距离,只是邮政编码本身作为数字的明显区别:)
    • 然后创建一个简单的自定义过滤器
    【解决方案3】:

    有用于计算两个邮政编码之间距离的客户端服务。这是我的同事写的:https://github.com/TheBosZ/geocoder-service

    我希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2011-04-11
      • 2017-06-21
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 2023-03-06
      • 1970-01-01
      相关资源
      最近更新 更多