跳到主要内容

LBS 系统

LBS 的全称是:Location Based Services,就是基于位置的服务,也可以理解为地理位置系统。常见于 O2O、社交等场景,比如典型的外卖配送和陌陌社交之类的产品。

这里我们用一个基础的 LBS 系统来展示清林云自定义应用能力。基础版本能满足基础需求,但是每家组织的 LBS 系统需求都不相同,所以你也可以在这个基础上再自行添加更多高级的个性化功能。

需求

在现阶段,基于地理位置的服务越来越多,打车、外卖、物联网设备管理、社交等等。

作为该类产品的开发者,我们需要能通过经纬度地址去计算一些地理位置信息,比如说我们需要查询距离自身三公里内的设备,或者是查询手机屏幕长方形坐标系中的商店。

所以这里我们就需要一个基础的 LBS 系统。

功能分析

首先,由于地理位置信息不可避免需要相关硬件,所以这里我们统一将手机、传感器、位置硬件等称为设备。

根据以上需求,我们需要实现设备的地理位置信息 CRUD。这个比较简单,也可以再加一些基本的 metadata。

然后得益于 S1 引擎的能力,天然可以使用地理距离查询、地理矩形查询和地理多边形查询。这样就不用再部署额外的空间数据库或是复杂计算。

所以我们只需要实现设备的位置查询和单查,然后通过元信息去交互别的应用即可。

数据库结构

Device 设备

很简单,只需要一张表,选择 S1 引擎:

API

createDevice

创建设备,需要管理员权限,一般用在其他应用的其他API步骤中。

createDevice

updateDevice

更新设备,需要简单权限,在设备更新位置信息时需要有附带lbs权限组的 token。

updateDevice

deleteDevice

删除设备,需要管理员权限。

deleteDevice

getDevice

查询单个设备信息。

getDevice

getManyDevice

根据 deviceId 排序查询多个设备信息。

getManyDevice

searchDistance

距离查询,由近及远排序,也可以通过 type 去限定查询设备的类型。

API 参数需要在该步骤对象内加上centerPoint中心点(格式为 string,纬度在前,经度在后,且纬度范围为[-90,+90],经度范围为[-180,+180]。例如"30.23,-90.01142")和distance距离(格式为 int,单位为米)。具体可见 API 格式章节。

searchDistance

searchRectangle

矩形查询,由近及远排序,也可以通过 type 去限定查询设备的类型。

API 参数需要在该步骤对象内加上topLeft左上点和bottomRight(格式同上中心点)右下点确定矩形。具体可见 API 格式章节。

searchRectangle

searchPolygon

多边形查询,由近及远排序,也可以通过 type 去限定查询设备的类型。

API 参数需要在该步骤对象内加上points即组成多边形的坐标点(格式为 Array,数组项同上中心点)右下点确定矩形。具体可见 API 格式章节。

searchPolygon

searchDevice

设备查询,可以通过类型、名称和嵌套查询自定义元数据去查询。按更新时间排序。

searchDevice

界面

暂无前端示例,后续将会开源一个地理位置社交 APP 进行演示。