我正在开发一个网页,用户可以在其中创建活动,其他人则可以通过搜索功能找到它们。当您创建活动时,您必须指定它将发生的确切位置,在谷歌地图的帮助下我检索纬度和经度。现在,在进行搜索时,我希望能够找到靠近指定位置的所有活动(也可以通过谷歌地图协助)。
所以我有一组带坐标的活动,我想在附近找到活动的点的坐标,我想要返回的活动不超过5公里(或英里或任何你喜欢的)远离这一点。
我有这个想法,我可以通过计算最大/最小纬度和经度来解决这个问题,并在sql-query中使用这些作为参数,我使用where子句进行过滤...问题我m面向这里首先计算这些最大/最小值,其次是圆形区域(半径5km),而不是矩形
非常感谢这里的任何输入! 感谢:!)
答案 0 :(得分:2)
你获得的坐标可能不是x和y,而是纬度和经度;你将需要spherical distance,除非你的所有点都在相当小的范围内,例如几百英里。
如果你有很多分数,直接穷举搜索会变得太慢,无论是否为球形。幸运的是,GIS扩展程序同时提供for MySQL和for Postgres。商业DB也具有空间扩展。这些可以有效地搜索附近的对象。
答案 1 :(得分:1)
如果你真的停下来思考它,你的矩形和圆圈都是畸形的......但这无论如何都不相关。
另外,请查看此内容,这将扩展距离测量并提及其他一些想法:http://www.movable-type.co.uk/scripts/gis-faq-5.1.html
答案 2 :(得分:1)