我正在构建我的第一个iOS应用程序,它可以帮助人们在地图上放置注释,以便其他人看到。我使用Parse作为我的后端服务。
我有什么:
Parse上一个名为"Pins"的类,它有一个"location"列(类型:GeoPoint
)和一个occurrence列(类型:number
)。
工作原理:
用户可以在地图上单击创建注释,该注释与其GeoPoint
一起发送到服务器。其他用户在打开应用程序时可以看到它。
我想要实现的:
当用户将一个注释放置在另一个已经存在的注释附近时,我希望增加附近对象的"出现次数",而不是创建一个新对象。
我在创建beforeSave函数的过程中发现Parse已经有一个方法可以做到这一点:{Parse。查询}near(key, point)
不幸的是,我在实现它时有很多麻烦,文档缺乏一些例子。所以我的问题是:
我如何查询"Pins"类的注释是在100米内的一个用户正在创建?
这就像一个普通的查询:
如果你知道新删除的注释的位置:
// say your annotation answers a location with lat and long
PFGeoPoint *point = [PFGeoPoint geoPointWithLatitude:lat longitude:long];
像这样查询您的自定义类附近的实例:
PFQuery *query = [PFQuery queryWithClassName:@"Pins"];
[query whereKey:@"location" nearGeoPoint:point];
// do your regular find stuff with query.
如果问题是关于js的(从标签上看不清楚),它是相同的概念,使用:
var Pins = Parse.Object.extend("Pins");
var query = new Parse.Query(Pins);
query.near("location", point);
或者在一个给定的半径周围做,那么:
query.withinKilometers("location", point, 0.1); // 100 meters
query.find().then( /* return to client */ )