LBS 系统
LBS 的全称是:Location Based Services,就是基于位置的服务,也可以理解为地理位置系统。常见于 O2O、社交等场景,比如典型的外卖配送和陌陌社交之类的产品。
这里我们用一个基础的 LBS 系统来展示清林云自定义应用能力。基础版本能满足基础需求,但是每家组织的 LBS 系统需求都不相同,所以你也可以在这个基础上再自行添加更多高级的个性化功能。
需求
在现阶段,基于地理位置的服务越来越多,打车、外卖、物联网设备管理、社交等等。
作为该类产品的开发者,我们需要能通过经纬度地址去计算一些地理位置信息,比如说我们需要查询距离自身三公里内的设备,或者是查询手机屏幕长方形坐标系中的商店。
所以这里我们就需要一个基础的 LBS 系统。
功能分析
首先,由于地理位置信息不可避免需要相关硬件,所以这里我们统一将手机、传感器、位置硬件等称为设备。
根据以上需求,我们需要实现设备的地理位置信息 CRUD。这个比较简单,也可以再加一些基本的 metadata。
然后得益于 S1 引擎的能力,天然可以使用地理距离查询、地理矩形查询和地理多边形查询。这样就不用再部署额外的空间数据库或是复杂计算。
所以我们只需要实现设备的位置查询和单查,然后通过元信息去交互别的应用即可。
数据库结构
Device 设备
很简单,只需要一张表,选择 S1 引擎:
API
createDevice
创建设备,需要管理员权限,一般用在其他应用的其他API
步骤中。
updateDevice
更新设备,需要简单权限,在设备更新位置信息时需要有附带lbs
权限组的 token。
deleteDevice
删除设备,需要管理员权限。
getDevice
查询单个设备信息。
getManyDevice
根据 deviceId 排序查询多个设备信息。
searchDistance
距离查询,由近及远排序,也可以通过 type 去限定查询设备的类型。
API 参数需要在该步骤对象内加上centerPoint
中心点(格式为 string,纬度在前,经度在后,且纬度范围为[-90,+90],经度范围为[-180,+180]。例如"30.23,-90.01142"
)和distance
距离(格式为 int,单位为米)。具体可见 API 格式章节。
searchRectangle
矩形查询,由近及远排序,也可以通过 type 去限定查询设备的类型。
API 参数需要在该步骤对象内加上topLeft
左上点和bottomRight
(格式同上中心点)右下点确定矩形。具体可见 API 格式章节。
searchPolygon
多边形查询,由近及远排序,也可以通过 type 去限定查询设备的类型。
API 参数需要在该步骤对象内加上points
即组成多边形的坐标点(格式为 Array,数组项同上中心点)右下点确定矩形。具体可见 API 格式章节。
searchDevice
设备查询,可以通过类型、名称和嵌套查询自定义元数据去查询。按更新时间排序。
界面
暂无前端示例,后续将会开源一个地理位置社交 APP 进行演示。