由于前不久我们在EasyGBS上添加了视频通道的实时GPS定位功能,根据更多的项目需求,我们现需在EasyCVR添加国标通道的GPS位置获取功能,和其他功能一样,这个功能我们也是通过接口调用来实现,本文分享一下我们的实现过程。
分析需求,首先需要获取历史位置信息,所以需要将每次新的GPS位置信息记录下来,然后在根据用户传入的搜索条件去查询通道历史的经纬度信息。
设计数据库添加如下表,添加设备名称,创建时间,设备id,通道id,通道名称,经纬度字段等:
添加如下代码,根据前端传入的q搜索字段,来查询对应设备的经纬度
q := db.SQLite.Model(models.Channel{}).Where("[index]=?", uint(id))
q.Find(&gbschannels)
if len(gbschannels) != 1 {
c.AbortWithStatusJSON(http.StatusBadRequest, "channel 值错误")
return
}
gbsdevices := make([]*models.Device, 0)
q = db.SQLite.Model(models.Device{}).Where("[index]=?", uint(dev))
q.Find(&gbsdevices)
if len(gbsdevices) != 1 {
c.AbortWithStatusJSON(http.StatusBadRequest, "device 值错误")
return
}
type Animal struct {
CreateTime models2.JSONTime
DeviceID string
ChannelID string
Longitude float64
Latitude float64 //纬度
}
项目现场调用接口测试,能够成功的出现经纬度,该功能添加完成。