cuiqian2004
2025-10-11 bcfb05f5e7782ef23e4deb1b38a1ca4b4085181a
test
4个文件已修改
409 ■■■■■ 已修改文件
api/vehicle.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/map/index.vue 196 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/map/js/ctx.js 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/map/scene.vue 127 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
api/vehicle.js
@@ -871,6 +871,27 @@
}
/**
 * GET 6000/api/get_map_server_phase
 * 获取构图程序阶段
 * @param
 * @returns
 * "data": 1,  # 1:未启动2:启动中3:启动完成4:构图保存中5:构图保存完成6:构图保存失败
 */
export const getMapServerPhase = (ip) => {
    var header = {
        "Content-Type": "application/json;charset=UTF-8"
    };
    var url = `http://${ip}:5000/api/get_map_server_phase/`;
    return http.request({
        method: "GET",
        url,
        header,
    })
}
/**
 * POST 5000/api/update_scene_id
 * 修改场景名称
 * @param 
pages/map/index.vue
@@ -211,17 +211,21 @@
                <view class="bottom-content" v-if="mapOperationStatus =='teaching'">
                    <view class="tip">路径记录中...</view>
                    <view v-if="mapOperationType =='public_teaching'">
                        <!-- 主路/支路 -->
                        <view>正在记录搬运车行进路径,完成后点按钮以结束示教。在示教过程中可以添加站点。</view>
                        <!--         <view class="switch-type">可随时切换主路/支路示教,
                        <view class="switch-type">可随时切换示教模式
                            <view class="switch-button-group">
                                <view class="switch-button"
                                    :class="teachingModeCur.main_road ==1?'switch-button-checked':''"
                                    @click="onTeachingModeMainRoad(1)">主路示教</view>
                                    :class="teachingModeCur.mode_type ==0?'switch-button-checked':''"
                                    @click="onTeachingModeType(0)">默认</view>
                                <view class="switch-button "
                                    :class="teachingModeCur.main_road ==0?'switch-button-checked':''"
                                    @click="onTeachingModeMainRoad(0)">支路示教</view>
                                    :class="teachingModeCur.mode_type ==1?'switch-button-checked':''"
                                    @click="onTeachingModeType(1)">双向</view>
                                <view class="switch-button "
                                    :class="teachingModeCur.mode_type ==2?'switch-button-checked':''"
                                    @click="onTeachingModeType(2)">智能</view>
                            </view>
                        </view> -->
                        </view>
                    </view>
                    <view v-else>
@@ -258,17 +262,20 @@
                <view class="bottom-content" v-else>
                    <view class="tip">即将开始公共示教</view>
                    <view>
                        请选择要进行主路还是支路示教,点【开始记录】后将记录搬运车的行进路线作为公共示教路线。开始记录后可随时切换主路/支路示教。
                        请选择要进行主路还是支路示教,点【开始记录】后将记录搬运车的行进路线作为公共示教路线。开始记录后可随时切换示教模式。
                    </view>
                    <view class="text-button-group">
                        <view class="switch-type">
                            <view class="switch-button-group">
                                <view class="switch-button"
                                    :class="teachingModeCur.main_road ==1?'switch-button-checked':''"
                                    @click="onTeachingModeMainRoad(1)">主路示教</view>
                                    :class="teachingModeCur.mode_type ==0?'switch-button-checked':''"
                                    @click="onTeachingModeType(0)">默认</view>
                                <view class="switch-button "
                                    :class="teachingModeCur.main_road ==0?'switch-button-checked':''"
                                    @click="onTeachingModeMainRoad(0)">支路示教</view>
                                    :class="teachingModeCur.mode_type ==1?'switch-button-checked':''"
                                    @click="onTeachingModeType(1)">双向</view>
                                <view class="switch-button "
                                    :class="teachingModeCur.mode_type ==2?'switch-button-checked':''"
                                    @click="onTeachingModeType(2)">智能</view>
                            </view>
                        </view>
                        <a-button type="primary" class="button" :disabled="loading"
@@ -383,6 +390,39 @@
                </view>
            </uni-popup>
            <uni-popup ref="refPopupTeachingUpdate" type="dialog">
                <uni-popup-dialog type="info" cancelText="取消" confirmText="确定" title="示教更新"
                    @confirm="dialogTeachingUpdateConfirm" @close="dialogTeachingUpdateClose">
                    <view>
                        <radio-group @change="radioTeachinMainRoadChange">
                            <label class="radio">
                                <radio :value="1" :checked="selectTeachingMode.main_road == 1" />主路
                            </label>
                            <label class="radio">
                                <radio :value="0" :checked="selectTeachingMode.main_road != 1" />支路
                            </label>
                        </radio-group>
                    </view>
                    <view>
                        <radio-group @change="radioTeachinBidirectionChange">
                            <label class="radio">
                                <radio :value="1" :checked="selectTeachingMode.bidirection == 1" />双向
                            </label>
                            <label class="radio">
                                <radio :value="0" :checked="selectTeachingMode.bidirection != 1" />单向
                            </label>
                        </radio-group>
                    </view>
                </uni-popup-dialog>
            </uni-popup>
        </view>
    </view>
@@ -423,6 +463,9 @@
        delTeachingMode,
        delTeachingModeData,
        checkAgvLocationDistanceError,
        splitTeachingMode,
        updateSplitTeachingData,
        deleteSplitTeachingData
    } from "@/api/vehicle.js"
    export default {
        name: "PagesMap",
@@ -760,7 +803,10 @@
                                if (this.mapOperationStatus == 'end' || this.mapOperationStatus ==
                                    'save') {
                                    try {
                                        await delTeachingMode(this.vehicleIp, [this.teachingModeCur])
                                        //    await delTeachingMode(this.vehicleIp, [this.teachingModeCur])
                                        await deleteSplitTeachingData(this.vehicleIp, this.teachingModeCur
                                            .edge_name, this.teachingModeCur.name)
                                        listDataStr.push({
                                            method: "remove_teaching_path",
                                            param: {
@@ -788,7 +834,7 @@
                    }
                } else {
                    const eventChannel = this.getOpenerEventChannel();
                    eventChannel.emit('check_connect', !this.unlinked);
                    uni.navigateBack({
@@ -1029,7 +1075,7 @@
                        height: param.view?.height || 0,
                    }
                    const angle = this.getStantardAngle(this.stationEdit.angle * 180 / Math.PI)
                    this.angleSvg = `/static/images/angle${angle}.svg`
                    this.mapOperationType = ""
@@ -1143,14 +1189,17 @@
                    } else if (param.type == "public") {
                        this.selectTeachingMode = {
                            mode: "Public",
                            edge_name: param.data?.edge_name || "",
                            name: param.data?.name || "",
                            point: param.point
                            point: param.point,
                            main_road: param.data?.main_road || 0,
                            bidirection: param.data?.name || 0,
                        }
                    }
                    this.$refs.refPopupOperateTeaching.open("bottom")
                } else if (param.method == "cancel_positioning_agv") {
                    if (this.mapOperationType == "public_teaching"
                    && this.mapOperationStatus == "teaching") {
                    if (this.mapOperationType == "public_teaching" &&
                        this.mapOperationStatus == "teaching") {
                        this.positioningAgv = true
                    } else
                        this.positioningAgv = false
@@ -1208,7 +1257,7 @@
                this.mapOperationStatus = ""
                this.teachingModeCur = {
                    mode: "Public",
                    main_road: 1,
                    mode_type: 0,
                }
                this.positioningAgv = true
                this.mapOperationType = "public_teaching"
@@ -1230,7 +1279,7 @@
            async loadSceneList() {
                try {
                    const _this = this
                    const res = await getAllScene(this.vehicleIp) || []
                    const list = res?.sceneList || []
@@ -1263,7 +1312,7 @@
                } catch (ex) {
                    showError(ex)
                }
                }
            },
            clickDelete() {
                const _this = this
@@ -1928,7 +1977,7 @@
                try {
                    const {
                        data
                    } = await getTeachingMode(this.vehicleIp)
                    } = await splitTeachingMode(this.vehicleIp)
                    return data || {
                        Public: [],
                        Stations: []
@@ -2196,7 +2245,9 @@
                        if (res) {
                            try {
                                this.loading = true
                                await delTeachingMode(_this.vehicleIp, [_this.teachingModeCur])
                                //await delTeachingMode(_this.vehicleIp, [_this.teachingModeCur])
                                await deleteSplitTeachingData(_this.vehicleIp, _this.teachingModeCur.edge_name,
                                    _this.teachingModeCur.name)
                                _this.mapOperationStatus = ""
                                const listDataStr = []
                                listDataStr.push({
@@ -2263,15 +2314,15 @@
                        }
                    } else {*/
                    const main_road = this
                    const mode_type = this
                        .teachingModeCur
                        .main_road
                        .mode_type
                    this.teachingModeCur = {
                        mode: "Public",
                        src_dst: ``,
                        name: "",
                        teaching_flag: 1,
                        main_road
                        mode_type
                    }
                    const res2 =
                        await teachingModeFlag(
@@ -2300,10 +2351,12 @@
                    // } else {
                    //     this.askTeachingBiDirection(this.teachingModeCur)
                    // }
                    this.askTeachingBiDirection(
                        this
                        .teachingModeCur
                    )
                    // this.askTeachingBiDirection(
                    //     this
                    //     .teachingModeCur
                    // )
                    this.teachingModeCur.teaching_flag = 0
                    await this.finishTeaching(this.teachingModeCur)
                } catch (ex) {
                    showError(ex)
                } finally {
@@ -2311,22 +2364,28 @@
                }
            },
            async onTeachingModeMainRoad(val) {
            async onTeachingModeType(val) {
                try {
                    if (this.mapOperationStatus) {
                        if (this.teachingModeCur.main_road == val) {
                        if (this.teachingModeCur.mode_type == val) {
                            return
                        }
                        this.teachingModeCur.teaching_flag = 0
                        const oldName = this.teachingModeCur.name
                        await teachingModeFlag(this.vehicleIp, this.teachingModeCur)
                        this.teachingModeCur.main_road = val
                        this.teachingModeCur.mode_type = val
                        this.teachingModeCur.teaching_flag = 1
                        this.teachingModeCur.mode = "Public"
                        this.teachingModeCur.name = ""
                        const res = await teachingModeFlag(this.vehicleIp, this.teachingModeCur)
                        if (val == 0)
                        if (val == 1)
                            showToast("已将示教切换成双向模式")
                        else if (val == 2)
                            showToast("已将示教切换成智能模式")
                        else
                            showToast("已将示教切换成默认模式")
                        /*if (val == 0)
                            showToast(
                                "已将该路段路径保存为主路示教路线"
                            )
@@ -2339,7 +2398,7 @@
                        const {
                            data
                        } = await getTeachingMode(this.vehicleIp)
                        } = await splitTeachingMode(this.vehicleIp)
                        const publicList = data.Public || []
                        const curIndex = publicList.findIndex((a) => a.name == oldName)
@@ -2354,12 +2413,10 @@
                            }])
                        }
*/
                    } else {
                        this.teachingModeCur
                            .main_road =
                            val
                        this.teachingModeCur.mode_type = val
                    }
                } catch (ex) {
@@ -2377,16 +2434,48 @@
            },
            clickTeachingEdit() {
                this.$refs
                    .refPopupOperateTeaching
                    .close()
                this.mapOperationType =
                    "edit_teaching"
                this.ctxDataStr = JSON
                    .stringify([{
                        method: "edit_teaching",
                        param: this.selectTeachingMode,
                    }])
                this.$refs.refPopupOperateTeaching.close()
                this.$refs.refPopupTeachingUpdate.open("")
                // this.mapOperationType =
                //     "edit_teaching"
                // this.ctxDataStr = JSON
                //     .stringify([{
                //         method: "edit_teaching",
                //         param: this.selectTeachingMode,
                //     }])
            },
            radioTeachinMainRoadChange(e) {
                this.selectTeachingMode.main_road = evt.detail.value
            },
            radioTeachinBidirectionChange(evt) {
                this.selectTeachingMode.bidirection = evt.detail.value
            },
            async dialogTeachingUpdateConfirm() {
                try {
                    uni.showLoading({
                        title: "更新示教中"
                    })
                    const item = this.selectTeachingMode
                    await updateSplitTeachingData(this.vehicleIp, item)
                    this.ctxDataStr =
                        JSON.stringify(
                            [{
                                method: "update_teaching",
                                param: item,
                            }])
                    this.selectTeachingMode = {}
                    showToast("更新示教成功")
                } catch (ex) {
                    showError(
                        ex)
                } finally {
                    uni.hideLoading()
                }
            },
            dialogTeachingUpdateClose() {
                this.$refs.refPopupTeachingUpdate.close()
            },
            async removeTeachingMode(item) {
@@ -2394,13 +2483,15 @@
                    uni.showLoading({
                        title: "删除示教中"
                    })
                    await delTeachingMode(this.vehicleIp, [item])
                    await deleteSplitTeachingData(this.vehicleIp, item.edge_name, item.name)
                    //await delTeachingMode(this.vehicleIp, [item])
                    this.ctxDataStr =
                        JSON.stringify(
                            [{
                                method: "remove_teaching_path",
                                param: item,
                            }])
                    showToast("删除示教成功")
                } catch (ex) {
                    showError(
                        ex)
@@ -2413,7 +2504,9 @@
                    uni.showLoading({
                        title: "删除示教数据中"
                    })
                    await delTeachingModeData(this.vehicleIp, data)
                    await deleteSplitTeachingData(this.vehicleIp, data.edge_name, data.name)
                    //await delTeachingModeData(this.vehicleIp, data)
                    showToast("删除示教成功")
                    this.reloadTeachingMode()
                } catch (ex) {
                    showError(ex)
@@ -2862,7 +2955,8 @@
                    .switch-button-checked {
                        box-shadow: 0px 2px 8px 0px #0000000C;
                        background-color: #fff;
                        color: #262626;
                        color: #1890FF;
                    }
                }
pages/map/js/ctx.js
@@ -2114,11 +2114,11 @@
                fromY = pt2.y
            }
            let strokeWidth = 5
            let stroke = "#95DE64"
            let stroke = "#69C0FF"
            if (main_road == 1) {
                stroke = "#69C0FF"
            }
            // if (main_road == 1) {
            //     stroke = "#69C0FF"
            // }
            const objPath = new fabric.Path(
                path2, {
                    id: "current_teaching",
@@ -2154,7 +2154,7 @@
            const theta = 20;
            let headlen = 10;
            var main_road = 1
            var main_road = teachingData.main_road || 0
            const len = pos_list.length
            let fromX = 0,
@@ -2238,10 +2238,11 @@
                    // }
                    path2 += ` L${pt2.x} ${pt2.y}`
                } else {
                    main_road = pt.main_road
                    if (main_road == 1) {
                        headlen = 15
                    }
                    if (pt.main_road)
                        main_road = pt.main_road
                    // if (main_road == 1) {
                    //     headlen = 15
                    // }
                    path2 = `M${pt2.x} ${pt2.y}`
                }
                fromX = pt2.x
@@ -2252,19 +2253,21 @@
            // console.log("addTeachingPath",path2)
            // path2 += " Z"
            let strokeWidth = 2
            let stroke = "#95DE64"
            let strokeWidth = 1.5
            let stroke = "#69C0FF"
            if (type == "station_teaching") {
                stroke = "#69C0FF"
            } else {
                if (main_road == 1) {
                    stroke = "#69C0FF"
                    if (teachingData.bidirection == 1) {
                        stroke = "#FF00FF"
                    }
                } else {
                    //stroke = "#69C0FF"
                    if (teachingData.bidirection == 1) {
                        stroke = "#ffaa00"
                    }
                    strokeWidth = 3
                } else {
                    if (teachingData.bidirection == 1) {
                        stroke = "#FF00FF"
                    }
                }
            }
@@ -2302,6 +2305,7 @@
            return objPath
        },
        isObjectFullyContained(outerObj, innerObj) {
            const outer = outerObj.getBoundingRect(true, true);
            const inner = innerObj.getBoundingRect(true, true);
@@ -3649,6 +3653,35 @@
                        const teachingMode = item.param
                        _this.showEditTeachingPath(teachingMode)
                    } else if (item.method == "update_teaching") {
                        let list = _this.canvas.getObjects() || []
                        list = list.filter((a) => a.eleType == "public_teaching")
                        const id = `public_teaching_${item.param.name}`
                        const curIndex = list.findIndex((a) => a.id == id)
                        if (curIndex > -1) {
                            const obj = list[curIndex]
                            let strokeWidth = 1.5
                            let stroke = "#69C0FF"
                            if (item.param.main_road == 1) {
                                //stroke = "#69C0FF"
                                if (item.param.bidirection == 1) {
                                    stroke = "#ffaa00"
                                }
                                strokeWidth = 3
                            } else {
                                if (item.param.bidirection == 1) {
                                    stroke = "#FF00FF"
                                }
                            }
                            obj.set({strokeWidth,stroke})
                        }
                    } else if (item.method == "set_selectable") {
                        if (item.param)
                            _this.setAllObjectSelectable(true)
pages/map/scene.vue
@@ -43,7 +43,8 @@
            <view class="bottom-content" v-else-if="opSceneType =='scan'">
                <view class="tip">场景构建中</view>
                <view>
                    请操作搬运车扫描地图覆盖的区域
                    <!-- 请操作搬运车扫描地图覆盖的区域 -->
                    {{mapServerPhase=== 1  ?"场景构建服务:未启动":mapServerPhase===2 ?"场景构建服务:启动中":mapServerPhase===3  ?"场景构建中":mapServerPhase}}
                </view>
                <view class="text-button-group">
@@ -51,13 +52,17 @@
                </view>
            </view>
            <view class="bottom-content" v-else-if="opSceneType =='finish'">
                <view class="tip"> “{{sceneName}}”{{opType == "extend"?"场景扩展完成"+"":"场景构建完成"}}</view>
            <!--     <view> 已成功构建“{{sceneName}}”</view> -->
                <view class="loading-view">{{saveMapIsOk?"构图保存完成":"等待构图保存完成..."}}
                    <view v-if="!saveMapIsOk" class="auto-circle"></view>
                <view class="tip"> “{{sceneName}}”{{opType == "extend"?"场景扩展结束"+"":"场景构建结束"}}</view>
                <!--     <view> 已成功构建“{{sceneName}}”</view> -->
                <view class="loading-view">
                    构图状态:{{mapServerPhase===5?"保存成功":mapServerPhase===4?"保存中":mapServerPhase===6?"保存失败":mapServerPhase}}
                    <view v-if="mapServerPhase === 4" class="auto-circle"></view>
                </view>
                <view class="text-button-group">
                    <a-button type="primary" class="button" :disabled=" !saveMapIsOk || loading" @click="clickFinish">{{opType == "extend"?"扩展完成":"构建完成"}}</a-button>
                    <a-button type="primary" class="button" v-if="mapServerPhase === 6"
                        @click="clickRecreate">{{opType == "extend"?"重现扩展":"重现构建"}}</a-button>
                    <a-button type="primary" class="button" v-else :disabled=" mapServerPhase !==5 || loading"
                        @click="clickFinish">{{opType == "extend"?"扩展完成":"构建完成"}}</a-button>
                </view>
            </view>
        </view>
@@ -81,13 +86,15 @@
        createScene,
        addMap,
        stopMap,
        delScene,
        //getAgvState,
        getMapLaserData,
        saveDBData,
        checkMapServerIsStart,
        startOrStopMapServer,
        checkMapServerIsOk,
        checkSaveMapIsOk,
        // checkMapServerIsStart,
        // startOrStopMapServer,
        // checkMapServerIsOk,
        // checkSaveMapIsOk,
        getMapServerPhase,
        getMapUrl
    } from "@/api/vehicle.js"
@@ -110,7 +117,7 @@
                localSceneList: [],
                positioningAgv: true,
                robotPos: {},
                mapserverIsOk: false,
                mapServerPhase: 1,
                extendBase64Img: "",
                saveMapIsOk: false,
                destroyFlag: false,
@@ -210,7 +217,6 @@
            async loadData() {
                try {
                    // this.loadMapServerState()
                    if (this.opType == "") {
                        this.localSceneList = await this.loadLocalScene()
                    } else {
@@ -218,7 +224,9 @@
                            this.opSceneType = "add_name"
                        }
                        if (this.opType == "extend") {
                            this.mapServerPhase = 1
                            await addMap(this.ip, this.sceneName, "extend")
                            this.checkMapServerPhase()
                            this.opSceneType = 'scan'
                        }
                        // if (this.opType == "extend") {
@@ -234,7 +242,7 @@
                        // }
                    }
                    this.refreshMapLaserData()
@@ -252,58 +260,22 @@
                    return {}
                }
            },
            async loadMapServerState() {
            async checkMapServerPhase() {
                try {
                    this.mapserverIsOk = false
                    const res = await checkMapServerIsStart(this.ip)
                    if (res) {
                        this.mapserverIsOk = true
                    } else {
                        this.mapserverIsOk = false
                        const res = await startOrStopMapServer(this.ip, 1)
                        if (res) {
                            this.checkMapServerState()
                        }
                    const res = await getMapServerPhase(this.ip)
                    this.mapServerPhase = res || 1
                    if (this.mapServerPhase === 3) {
                        return
                    }
                } catch (ex) {
                    showError(ex)
                }
            },
            async checkMapServerState() {
                try {
                    const res = await checkMapServerIsOk(this.ip)
                    if (res) {
                        this.mapserverIsOk = true
                    } else {
                        this.mapserverIsOk = false
                        setTimeout(this.checkMapServerState, 1000);
                    }
                } catch (ex) {
                    showError(ex).then((res) => {
                        setTimeout(this.checkMapServerState, 1000);
                    })
                }
            },
            async checkSaveMapState() {
                try {
                    const res = await checkSaveMapIsOk(this.ip)
                    if (res) {
                    if (this.mapServerPhase === 5 || this.mapServerPhase === 6) {
                        this.saveMapIsOk = true
                    } else {
                        this.saveMapIsOk = false
                        setTimeout(this.checkSaveMapState, 1000);
                        return
                    }
                    setTimeout(this.checkMapServerPhase, 1000);
                } catch (ex) {
                    showError(ex).then((res) => {
                        setTimeout(this.checkSaveMapState, 1000);
                    })
                    showToast(ex)
                    setTimeout(this.checkMapServerPhase, 1000);
                }
            },
@@ -383,7 +355,9 @@
                try {
                    this.mapId = ""
                    if (this.opType == "extend") {
                        this.mapServerPhase = 1
                        await addMap(this.ip, this.sceneName, "extend")
                        this.checkMapServerPhase()
                        this.opSceneType = 'scan'
                    } else {
                        this.opSceneType = "add_name"
@@ -437,6 +411,7 @@
                    this.sceneName = name
                    await createScene(this.ip, name, 1)
                    await addMap(this.ip, name)
                    this.checkMapServerPhase()
                    uni.showLoading({
                        title: "开始扫描地图"
                    })
@@ -476,8 +451,8 @@
                    })
                    this.saveMapIsOk = false
                    await stopMap(this.ip, this.sceneName)
                    // await startOrStopMapServer(this.ip, 2)
                    // this.checkSaveMapState();
                    this.mapServerPhase = 4
                    this.checkMapServerPhase();
                    // if (this.opType == "extend") {
                    //     this.opSceneType = ""
                    //     const eventChannel = this.getOpenerEventChannel();
@@ -486,13 +461,12 @@
                    //         delta: 1, //返回层数,2则上上页
                    //     })
                    // }
                    setTimeout(() => {this.saveMapIsOk = true}, 5000);
                } catch (ex) {
                    console.log(ex)
                    showModal("请检查车辆连接,并重新开始构建场景", "场景构建失败", false, "确定").then((res) => {
                        this.opSceneType = ''
                        // this.loadMapServerState()
                    })
                } finally {
                    this.loading = false
@@ -519,9 +493,28 @@
                    this.loading = false
                    uni.hideLoading()
                }
            },
            async clickRecreate() {
                try {
                    if (this.opType == "extend") {
                        this.mapServerPhase = 1
                        await addMap(this.ip, this.sceneName, "extend")
                        this.checkMapServerPhase()
                        this.opSceneType = 'scan'
                    } else {
                        this.mapServerPhase = 1
                        await delScene(this.ip, this.sceneName)
                        await createScene(this.ip, this.sceneName, 1)
                        await addMap(this.ip, this.sceneName)
                        this.checkMapServerPhase()
                        this.opSceneType = 'scan'
                    }
                } catch (ex) {
                    console.log(ex)
                }
            },
            async loadMapLaserData() {
                try {
                    const info = await getMapLaserData(this.ip, this.mapId)
@@ -603,7 +596,7 @@
                            }
                        }
                    }
                    setTimeout(this.refreshMapLaserData, 1000);
                } catch (ex) {
                    showToast(ex)