产品服务
解决方案
文档与支持
定价

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
地理围栏
注意
下面的接口介绍创建围栏示例代码以圆形服务围栏为例,多边形围栏、线型围栏 可下载demo 参考
Android
iOS
//mapopen-website-wiki.cdn.bcebos.com/demos/andDemos/yingyan/地理围栏.mp4
扫码体验
使用产品
下载源码
核心接口
接口
描述
LBSTraceClient
createFence(CreateFenceRequest request, OnFenceListener listener)
创建围栏
CreateFenceRequest
buildServerCircleRequest(int tag, long serviceId, java.lang.String fenceName, java.lang.String monitoredPerson, LatLng center, double radius, int denoise, CoordType coordType)
创建服务端圆形围栏请求实例
重点介绍

围栏报警支持推送至鹰眼SDK,统一由OnTraceListener监听器中的onPushCallback()推送回调接口接收。 开发者可在报警回调中触发自身业务,如发送短信至其他监控者、推送至开发者服务端等。

当接收报警的手机断网或网络状态不好时,会导致报警推送失败,鹰眼服务端将在后续的10分钟之内每隔15s推送一次,直至收到成功响应。若10分钟之后仍未成功,将不再推送,但报警记录将存储在鹰眼服务端。为避免因此造成报警漏接收,开发者可定期使用历史报警查询接口同步报警信息。
核心代码
注意:请求和回调是相对应关系。
1.发起检索请求
JAVA
/**
* 创建圆形服务围栏
*/
private void createFence() {
    // 请求标识
    int tag = 3;
    // 轨迹服务ID
    long serviceId = 0123443l;
    // 围栏名称
    String fenceName = "server_circle";
    // 监控对象 "#allentity" 为监控全部entity的特殊字符
    String monitoredPerson = "#allentity";
    // 围栏圆心
    com.baidu.trace.model.LatLng center = new com.baidu.trace.model.LatLng(39.9151190000, 116.4039630000);
    // 围栏半径(单位 : 米)
    double radius = 2000;
    // 去噪精度
    int denoise = 200;
    // 坐标类型
    CoordType coordType = CoordType.bd09ll;

    // 创建服务端圆形围栏请求实例
    CreateFenceRequest request = CreateFenceRequest.buildServerCircleRequest(tag, serviceId, fenceName, monitoredPerson, center, radius, denoise, coordType);
    // 创建围栏
    trackApp.mClient.createFence(request, fenceListener);
                    
复制
深色
复制成功
2.检索结果处理
JAVA
OnFenceListener fenceListener = new OnFenceListener() {
@Override
public void onCreateFenceCallback(CreateFenceResponse response) {
    // 创建围栏回调接口
}

@Override
public void onUpdateFenceCallback(UpdateFenceResponse response) {
    // 更新围栏回调接口
}

@Override
public void onDeleteFenceCallback(DeleteFenceResponse response) {
    // 删除围栏回调处理
}

@Override
public void onFenceListCallback(FenceListResponse response) {
    // 查询围栏列表回调接口

}

@Override
public void onMonitoredStatusCallback(MonitoredStatusResponse response) {
    // 查询监控对象状态回调接口
}

@Override
public void onMonitoredStatusByLocationCallback(MonitoredStatusByLocationResponse response) {
    // 查询指定位置监控对象状态回调接口
}

@Override
public void onHistoryAlarmCallback(HistoryAlarmResponse response) {
    // 查询围栏历史报警信息回调接口
}

@Override
public void onAddMonitoredPersonCallback(AddMonitoredPersonResponse response) {
    // 添加服务端围栏需要监控的对象(轨迹entity)
}

@Override
public void onDeleteMonitoredPersonCallback(DeleteMonitoredPersonResponse response) {
    // 删除服务端围栏需要监控的对象(轨迹entity)
}

@Override
public void onListMonitoredPersonCallback(ListMonitoredPersonResponse response) {
    // 查询围栏监控的所有entity
}
};
}
                
复制
深色
复制成功
3.围栏报警推送
JAVA
traceListener = new OnTraceListener() {
    ......
    /**
     * 推送消息回调接口
     *
     * @param messageType 状态码
     * @param pushMessage 消息
     *                  
     *                  0x01:配置下发
     *                  0x02:语音消息
     *                  0x03:服务端围栏报警消息
     *                  0x04:本地围栏报警消息
     *                  0x05~0x40:系统预留
     *                  0x41~0xFF:开发者自定义
     */
    @Override
    public void onPushCallback(byte messageType, PushMessage pushMessage) {
        if (messageType < 0x03 || messageType > 0x04) {
            viewUtil.showToast(TracingActivity.this, pushMessage.getMessage());
            return;
        }
        FenceAlarmPushInfo alarmPushInfo = pushMessage.getFenceAlarmPushInfo();
        if (null == alarmPushInfo) {
            viewUtil.showToast(TracingActivity.this,
                    String.format("onPushCallback, messageType:%d, messageContent:%s ", messageType,
                            pushMessage));
            return;
        }
        StringBuffer alarmInfo = new StringBuffer();
        alarmInfo.append("您于")
                .append(CommonUtil.getHMS(alarmPushInfo.getCurrentPoint().getLocTime() * 1000))
                .append(alarmPushInfo.getMonitoredAction() == MonitoredAction.enter? "进入": "离开")
                .append(messageType == 0x03? "云端": "本地")
                .append("围栏:").append(alarmPushInfo.getFenceName());

        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
            Notification notification = new Notification.Builder(trackApp)
                    .setContentTitle(getResources().getString(R.string.alarm_push_title))
                    .setContentText(alarmInfo.toString())
                    .setSmallIcon(R.mipmap.icon_app)
                    .setWhen(System.currentTimeMillis()).build();
            notificationManager.notify(notifyId++, notification);
        }
    }

};

                    
复制
深色
复制成功
  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消