2014-09-21 162 views
0

我可以检索用户的经度和纬度,并因此通过GPS获取其位置坐标。 例如让我说我有纬度67和经度-25,并且可以说我想限制搜索到100km,它会是+ 20当前纬度和+ - 10当前经度吗?计算距离范围

如果您需要澄清,请告诉我。 在此先感谢

+1

这比编程一个数学问题。 – 2014-09-21 21:32:01

+1

将十进制度数坐标转换为公里并不是恒定的,我建议使用JTS来执行缓冲区操作,或将数据存储在类似PostGIS的地方,以便将其存储为几何图形并执行空间查询......取决于您的目标 – markg 2014-09-21 21:33:23

+0

感谢你的回应。用户的纬度和经度信息被直接记录到Parse中,所以我得到了这些信息。我同意这更像是一个数学问题。 – John 2014-09-21 22:04:38

回答

1

解析使这非常简单。他们已经建立了称为:withinKilometers:withinMiles:withinRadians:的功能。以下查询参数将返回“位置”在用户当前位置100公里内的所有行。由于您已经计算了用户的经度和纬度,因此您可以使用这些值创建PFGeoPoint

斯威夫特语法

let userLocation = PFGeoPoint(latitude: userLatitude, longitude: userLongitude) 
query.whereKey("location", nearGeoPoint:userLocation, withinKilometers: 100) 
+0

感谢您的及时回应。我相信android的等价物是query.whereWithinKilometers(“location”,ParseGeoPoint point,double maxDistance);对于这一点,我已经设法通过GPS存储用户的纬度和经度,所以不知道该点会被引用到什么位置或“位置”,因为我的解析没有列“位置” – John 2014-09-22 02:52:11

+1

更新我的答案@ user3907211至于你的“位置”列,它是你比较PFGeoPoint的任何列。注意:您不应该将用户的经度和纬度保存为Parse。而是保存一个PFGeoPoint。 – Dehli 2014-09-22 03:25:02

+0

谢谢你的回应。我想知道不会通过解析使用GPS大幅增加请求数量,从而增加费用。假设我有2000个用户每天平均花费30分钟的时间,每秒钟不会超过30个请求,因为不断询问应用程序的当前位置 – John 2014-09-22 04:13:25