您当前的位置: 鹰眼iOS SDK > > 查询实时位置
查询实时位置

简介

实时查询entity最新位置、高度、速度、方向和相关属性信息,可通过调用BTRACEAction中的queryEntityList方法来实现。支持通过entity_name列表、可检索的属性字段、活跃时间三种条件组合查询entity。

坐标系的说明

输出参数坐标系均为百度经纬度坐标系(bd09ll)

通过entity_name查询

调用queryEntityList()接口时,在entityNames参数中指定查询的entity_name列表,则会返回这些entity最后更新的位置;若将entityNames参数设为nil,则表示查询所有entity。

例如,查询entity_name=car1和car2的两个终端

 [[BTRACEAction shared] queryEntityList:self serviceId:100001 entityNames:@"car1,car2" columnKey:nil activeTime:0 returnType:0 pageSize:20 pageIndex:1];

例如,查询所有entity

[[BTRACEAction shared] queryEntityList:self serviceId:100001 entityNames:nil  columnKey:nil activeTime:0 returnType:0 pageSize:20 pageIndex:1];

通过entity属性字段查询

使用web服务API的entity/addcolumn方法创建entity的属性字段,并设置为可精确搜索字段。在queryEntityList()方法中,通过指定columnKey,来根据属性进行查询,columnKey字段的格式为k1=v1,k2=v2。

例如开发者创建了team和city两个可检索的自定义属性字段,需要查询team=A且city=beijing的entity,示例如下:

  [[BTRACEAction shared] queryEntityList:self serviceId:100001 entityNames:nil columnKey:@"team=A,city=beijing" activeTime:0 returnType:0 pageSize:20 pageIndex:1];

以上例子会返回该service下所有的entity中,属于A队的,城市是beijing的所有entity的实时位置。

注:和trackAttr()所添加的基于轨迹点的自定义字段不同,属性信息是基于entity的,一个entity的属性是不会经常变动的。比如货运车辆所归属的车辆编队,或配送人员所管辖的区域信息等。而trackAttr()所添加的自定义字段是基于轨迹点的,类似于当前跑者的心跳等在每个轨迹点都会变化的信息。

通过活跃时间activeTime查询

支持查询在某个时间之后仍活跃的entity,如查询5分钟之内活跃的,则需将activeTime设为当前时间减去5分钟;如查询当天活跃的entity,则将activeTime设为当天0点:

如:查询在UNIX时间戳为1442824667之后仍活跃的所有entity

[[BTRACEAction shared] queryEntityList:self serviceId:100001 entityNames:nil  columnKey:nil activeTime:1442824667 returnType:0 pageSize:20 pageIndex:1];

组合查询

对于entity以及columnKey和activeTime这些字段,可以同时指定一个或多个字段,做联合查询,会返回同时满足这些条件的entity的实时位置。

[[BTRACEAction shared] queryEntityList:self serviceId:100001 entityNames:@"entity1,entity2" columnKey:@"team=A,region=haidian" activeTime:1442824667 returnType:0 pageSize:20 pageIndex:1];

以上例子就会查询在entity1和entity2这两个entity中,team是A,region是haidian,且在1442824667时间戳后仍有轨迹数据上传的entity的实时位置。

关于数据的实时性的说明

从数据上传到鹰眼服务端,到通过查询接口查询到该数据,在联网正常的情况下延时在毫秒级别,可认为是无延时地同步。

在上传时,受打包周期的限制,会存在一个打包周期的延迟。若开发者对实时性要求较高,可以将打包周期设置成采集周期,但需考虑流量的消耗。