问题:在地图上显示的点位信息没有实时更新,接口已经返回数据了,我也成功赋值了。
解决方法:
这是我的点位位置信息
mapData: [
{
//苏州中心地铁站
name: '苏州中心',
// 名称坐标
nameX: '77.91%',
nameY: '29.7%',
// 当前状态
status: 1,
//点位
x: '47%',
y: '35%',
// 弹出框坐标
floatWindowX: '-562px',
floatWindowY: '-70px',
isShow: false,
//选中放大
isShow2: false,
url: '1',
stationCode: 'CQLPHJDZ',
bigX: '77.91%',
bigY: '29.7%',
size: '22px',
}...]
可以看见我的定位信息是页面上写死固定了,但是需求是:站点的点位状态会变化,页面需要实时响应,下面是我接口调用的方法,这个问题很简单,但是粗心的话会很容易忽略,就是因为点位状态和接口返回的点位状态字段不一样,而我页面上定义的数据结构字段status并没有接口返回的字段stationStatus,就导致了接口字段会因为字段不存在而响应式失败。
async getStationPosition() {
const res = await stationPosition()
console.log('1111110站点信息获取', res)
console.log('地图信息', res)
if (res.code == '200') {
this.treeData = res.result
//非常关键,初始化 stationStatus,这样后续接口更新值时就不会因为字段不存在而响应失败,地图上的圆点颜色就可以进行联动
this.mapData = this.mapData.map((item) => ({
...item,
stationStatus: '0', // 或 null,确保字段存在
}))
//
this.treeData.forEach((item) => {
this.mapData.forEach((i) => {
if (item.stationName == i.name) {
i.stationStatus = item.stationStatus
}
})
})
console.log('mapData>>>>>>>>>>>>>>>>>>>>', this.mapData)
}
},
所以如果定义的字段不存在,那么即使接口返回字段也会失去响应式。