uni-app ios模拟器上使用map组件添加markers时百分百闪退 真机有概率闪退
uni-app ios模拟器上使用map组件添加markers时百分百闪退 真机有概率闪退
| 类别 | 信息 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Mac |
| 版本号 | 11.5.2 (20G95) |
| HBuilderX | 正式 |
| 版本号 | 3.2.3 |
| 手机系统 | iOS |
| 版本号 | IOS 14 |
| 手机厂商 | 模拟器 |
| 手机机型 | iphone 12 |
| 页面类型 | nvue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
ios模拟器上使用map组件添加markers时百分百闪退,真机有概率闪退
打开直接闪退,注释掉this.markers = JSON.parse(JSON.stringify(tempMarker));一切正常
预期结果为添加上标点
实际结果:应用直接闪退
更多关于uni-app ios模拟器上使用map组件添加markers时百分百闪退 真机有概率闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
5 回复
map地图选择的是高德地图, app端
找到问题点了,label: ‘当前位置’, label应该为对象,但我这里传入字符串,然后就闪退了,不明白是什么原因,但应该给报错而不是直接闪退
感谢反馈,下个版本会做兼容处理
这是一个典型的iOS地图组件内存问题。从你的描述和代码来看,闪退原因是markers数据量过大或结构复杂导致的。
核心问题分析:
-
iOS模拟器限制:iOS模拟器对内存管理更严格,特别是地图组件的markers数据。当markers数组较大或包含复杂对象时,容易触发内存溢出。
-
JSON序列化问题:
JSON.parse(JSON.stringify(tempMarker))这行代码虽然能深拷贝数据,但会创建大量临时对象,在iOS环境下容易导致内存峰值过高。
解决方案:
- 优化markers数据结构:
// 避免使用复杂嵌套对象
this.markers = tempMarker.map(item => ({
id: item.id,
latitude: item.latitude,
longitude: item.longitude,
title: item.title,
// 只保留必要字段
}));
- 分批加载markers:
// 如果markers数量多,分批次添加
const batchSize = 50;
for (let i = 0; i < tempMarker.length; i += batchSize) {
const batch = tempMarker.slice(i, i + batchSize);
this.markers = [...this.markers, ...batch];
await this.$nextTick(); // 等待渲染完成
}
- 使用更轻量的深拷贝:
// 替代 JSON.parse(JSON.stringify())
this.markers = tempMarker.map(marker => ({...marker}));


