小程序云开发实现根据地理位置范围内搜索数据
关注“青年码农”,回复“特效“
获取各种资料粒子特效、可视化等源码
业余时间在开发一个类似时间胶囊的小程序,由于微信提供云开发,所以省了不少事,最近在研究根据当前地理位置,在指定半径内获取已经埋藏的时间胶囊,在实际开发过程中,遇到了一点小问题,最后也很好的解决了,因此记录下。
功能描述
其实功能很简单,就是获取当前地理位置,在根据当前地理位置半径为500米(可自由设定半径)获取已经埋藏好的时间胶囊,
实现步骤
云开发里面新建一个集合,里面放用户数据,不过多讲解,官方文档写的很清楚。
集合里面的数据有个字段是存用户地理位置的,这个要详细讲讲,因为这个并不是我们之前以对象形式保存的,
需要用到这种数据格式
应该可以看到,我们是以geopoint形式保存的,保存的云函数要用下面这种方式。
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),因为之后查询要用
如果集合里没有数据可以自己创建一条测试数据,接下来我们就要对字段设置索引,官方文档这里一带而过,不熟悉的人肯定会一脸蒙,我刚开始也是,最后才看到有人提供详细步骤。
这块是官方一笔带过的,只是写了要配置索引。但是没有具体讲解,首先你的字段名字叫什么,我的是loaction,那就打开
点击你的集合名称,找到索引管理
添加索引
新建查询云函数,如果你只根据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
})
}
如何调用这里应该不用说了,最后正常调用就可以获取数据了。
本文来自「青年码农」公众号,作者:青年码农,转载请注明原文链接:https://www.cnblogs.com/nmgwap/p/16331549.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)