uni-app nvue地图在ios上调用removeMarkers方法时,若markerIds数量超过471个会导致app闪退,安卓则无此问题
uni-app nvue地图在ios上调用removeMarkers方法时,若markerIds数量超过471个会导致app闪退,安卓则无此问题
nvue地图在ios上调用removeMarkers方法,当markerIds的数量超过471个后app闪退,安卓没问题
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
iOS |
那就控制数量,哈哈
更多关于uni-app nvue地图在ios上调用removeMarkers方法时,若markerIds数量超过471个会导致app闪退,安卓则无此问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好,能提供一下示例工程吗?
你好,暂时不能提供,后来研究了下发现,只要removeMarkers的markerIds数量为全部的markers数量就会闪退,删除时markerIds的markerIds.length - 1就不会闪退。意思就是只要不全部删除完坐标点,留一个就不会闪退,全部坐标点删除的话就会闪退。
只在IOS上有这个问题,安卓没问题
可以提供一个dmeo工程,能复现问题就好,不需要你们的工程
回复 DCloud_iOS_XHY: 我放百度网盘了,麻烦你下一下吧 链接: https://pan.baidu.com/s/1RGYSHEyBQQ6q5dzrr6qh-w?pwd=eq40 提取码: eq40
闪退复现条件:
回复 White007: 感谢反馈,问题已确认,下个版本会修复此问题
HX 3.4.9+ 版本已修复此问题
感谢反馈问题已确认,下个版本会修复此问题
另外需要注意一下 marker 的锚点问题,以示例demo中的 icon 为例,因为图片下面是留白一半的,这样就需要设置
anchor: {
x: 0.5,
y: 0.5
},
这样缩放的时候就很自然了
好的,感谢!
在使用 uni-app
的 nvue
地图组件时,如果在 iOS 平台上调用 removeMarkers
方法时,markerIds
的数量超过 471 个会导致应用闪退,而在 Android 平台上则没有这个问题。这可能是由于 iOS 平台在处理大量数据时存在内存或性能限制,导致应用崩溃。
解决方案
-
分批删除 Markers: 将
markerIds
分成多个小批次进行删除,而不是一次性删除所有markerIds
。这样可以避免一次性处理过多数据导致的内存问题。function removeMarkersInBatches(markerIds, batchSize = 100) { let index = 0; function removeNextBatch() { const batch = markerIds.slice(index, index + batchSize); if (batch.length > 0) { map.removeMarkers(batch); index += batchSize; setTimeout(removeNextBatch, 0); // 使用 setTimeout 避免阻塞主线程 } } removeNextBatch(); } // 使用示例 const markerIds = [...]; // 你的 markerIds 数组 removeMarkersInBatches(markerIds, 100);