uni-app使用V3编译器后,map组件中无法实时呈现polyline路线
uni-app使用V3编译器后,map组件中无法实时呈现polyline路线
以前使用HBuliderX2.5.1非V3模式开发,可以实现地图polyline实时绘制、实时呈现;但是目前HBuilderX2.8.3采用V3编译器后,无法实时加载路线,需要手动刷新才会加载,详见附件录屏
============
polyline: [{
points: [],
color: "#00ff7f",
width: 8,
}],
that.polyline[0].points.push({
latitude: point.latitude,
longitude: point.longitude
});
更多关于uni-app使用V3编译器后,map组件中无法实时呈现polyline路线的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
这个不是bug,vue不能检测到JS 数组和对象的变化,参考https://cn.vuejs.org/v2/guide/list.html#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9,
push的问题可以用计算属性处理,参考 https://ask.dcloud.net.cn/question/91041
更多关于uni-app使用V3编译器后,map组件中无法实时呈现polyline路线的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在V3编译器下,map组件的polyline数据更新确实存在渲染机制变化的问题。这是由于V3编译器对数据响应式处理方式的调整导致的。
解决方案建议:
- 直接重新赋值整个polyline数组而非修改其内部元素:
that.polyline = [{
points: [...that.polyline[0].points, {
latitude: point.latitude,
longitude: point.longitude
}],
color: "#00ff7f",
width: 8
}];
- 或者使用$set强制更新:
that.$set(that.polyline[0], 'points', [
...that.polyline[0].points,
{latitude: point.latitude, longitude: point.longitude}
]);
- 如果仍无效,可以尝试在数据更新后调用map组件的update方法:
this.$nextTick(() => {
this.$refs.map.update()
});