获取各种资料粒子特效、可视化等源码
业余时间在开发一个类似时间胶囊的小程序,由于微信提供云开发,所以省了不少事,最近在研究根据当前地理位置,在指定半径内获取已经埋藏的时间胶囊,在实际开发过程中,遇到了一点小问题,最后也很好的解决了,因此记录下。
其实功能很简单,就是获取当前地理位置,在根据当前地理位置半径为500米(可自由设定半径)获取已经埋藏好的时间胶囊,
应该可以看到,我们是以geopoint形式保存的,保存的云函数要用下面这种方式。
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return await db.collection('你的集合').add({
data: {
location: db.Geo.Point(event.location.longitude, event.location.latitude),
},
})
}
其余字段我已经删掉,这里保存loaction时一定要用这种方式保存(db.Geo.Point),因为之后查询要用
点击你的集合名称,找到索引管理
添加索引
3. 新建查询云函数,如果你只根据location字段搜索,我下面的你可以直接复制,把参数传进来,替换Point里面的坐标即可。
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
const _ = db.command
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
return await db.collection('你的集合').where({
location: _.geoNear({
geometry: db.Geo.Point(113.323809, 23.097732),
minDistance: 0,
maxDistance: 500,
})
}).get().then(res => {
return res
})
}
4. 如何调用这里应该不用说了,最后正常调用就可以获取数据了。