uni-app 移除marker之后再次添加marker不显示
uni-app 移除marker之后再次添加marker不显示
操作步骤:
- uniapp 移除marker之后再次添加marker不显示
预期结果:
- uniapp 移除marker之后再次添加marker不显示
实际结果:
- uniapp 移除marker之后再次添加marker不显示
bug描述:
- uniapp 移除marker之后再次添加marker不显示
| 信息类别 | 信息内容 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本号 | 10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.94 |
| 手机系统 | Android |
| 手机系统版本号 | Android 13 |
| 手机厂商 | 小米 |
| 手机机型 | xiaomi5 |
| 页面类型 | nvue |
| vue版本 | vue2 |
| 打包方式 | 离线 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 移除marker之后再次添加marker不显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
3 回复
能否提供一下复现该问题的简单demo
更多关于uni-app 移除marker之后再次添加marker不显示的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你用addmapMarker方法添加一个点,然后再用removeMarker方法移除这个点,再次调用addmapMarker方法重新绘制这个点,地图不会显示,必须把marker的id变了才会显示
在 Uni-App 中使用地图组件(如 map)时,如果你移除了 marker 之后再次添加 marker 但不显示,可能是由于以下几个原因导致的。以下是一些常见的排查步骤和解决方案:
1. 确保 markers 数据更新
- 在 Uni-App 中,
map组件的markers属性是通过数据绑定的方式控制的。如果你直接修改markers数组,但没有触发视图更新,可能会导致marker不显示。 - 解决方法:使用
this.$set或直接重新赋值markers数组,确保视图更新。
// 假设 this.markers 是当前的 markers 数组
this.markers = []; // 清空 markers
this.$nextTick(() => {
this.markers = newMarkers; // 重新添加新的 markers
});
2. 检查 marker 的经纬度
- 确保你添加的
marker的latitude和longitude是有效的,且在地图的可视范围内。 - 如果经纬度无效或超出地图范围,
marker将不会显示。
const newMarkers = [
{
id: 1,
latitude: 39.90923, // 有效的纬度
longitude: 116.397428, // 有效的经度
name: '标记点'
}
];
this.markers = newMarkers;
3. 检查 map 组件的 include-points
- 如果你添加的
marker不在当前地图的显示范围内,可能需要通过include-points属性动态调整地图的显示范围,以确保marker可见。
<map
:markers="markers"
:include-points="includePoints"
style="width: 100%; height: 300px;">
</map>
this.includePoints = [
{
latitude: 39.90923,
longitude: 116.397428
}
];
4. 检查 marker 的 iconPath
- 如果你为
marker指定了iconPath,确保路径是正确的,并且图标文件存在。 - 如果
iconPath无效,marker可能不会显示。
const newMarkers = [
{
id: 1,
latitude: 39.90923,
longitude: 116.397428,
iconPath: '/static/marker.png', // 确保路径正确
name: '标记点'
}
];
this.markers = newMarkers;
5. 确保 map 组件已加载完成
- 有时在
map组件还未完全加载时添加marker,可能会导致marker不显示。可以在map组件的@ready事件中确保地图加载完成后再添加marker。
<map
:markers="markers"
@ready="onMapReady"
style="width: 100%; height: 300px;">
</map>
methods: {
onMapReady() {
// 地图加载完成后添加 marker
this.markers = newMarkers;
}
}
6. 检查 map 组件的 id
- 如果你在同一个页面中有多个
map组件,确保你操作的map组件的id是正确的。
7. 重新渲染地图
- 如果你尝试了以上方法仍然无法显示
marker,可以尝试通过重新渲染地图来解决问题。例如,通过v-if控制map组件的显示与隐藏,强制重新渲染。
<map
v-if="mapVisible"
:markers="markers"
style="width: 100%; height: 300px;">
</map>
this.mapVisible = false;
this.$nextTick(() => {
this.mapVisible = true;
});

