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 进行演示。