You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向Google Map添加折线时触发EXC_BAD_ACCESS错误求助

Google Maps添加折线触发EXC_BAD_ACCESS崩溃问题

我在给Google Map添加折线时遇到EXC_BAD_ACCESS (code=1, address=0x8)错误,只要注释掉polyline.map = mapView这一行,程序就能正常运行。错误信息模糊,不确定是模拟器性能问题还是其他根本原因,目前无法在真机测试。崩溃并非立即发生,添加折线后缩小地图时崩溃频率最高。

初始实现代码

let path = GMSMutablePath()
for coordinate in route.polyline.geoJsonLinestring.coordinates {
    path.add(CLLocationCoordinate2D(latitude: coordinate[1], longitude: coordinate[0]))
    print(coordinate)
}

let bounds = GMSCoordinateBounds(path: path)
let cameraUpdate = GMSCameraUpdate.fit(bounds, withPadding: 16)

DispatchQueue.main.async { [self] in
    let polyline = GMSPolyline(path: path)
    polyline.strokeColor = UIColor(named: "AccentColor")!
    polyline.strokeWidth = 5
    polyline.map = mapView
    
    mapView?.moveCamera(cameraUpdate)
}

后续排查尝试

  • 修改Edit Scheme中的GPU Frame Capture设置,无效果
  • 创建仅包含地图和硬编码两点折线的简化视图,仍会崩溃,代码如下:
override func viewDidLoad() {
    super.viewDidLoad()
    
    var coordinates = [
        [-2.9287110999999997, 54.8929171],
        [-2.8932368, 54.8968314],
    ]
    let path = GMSMutablePath()
    for coordinate in coordinates {
        path.add(CLLocationCoordinate2D(latitude: coordinate[1], longitude: coordinate[0]))
    }
    
    let bounds = GMSCoordinateBounds(path: path)
    let cameraUpdate = GMSCameraUpdate.fit(bounds, withPadding: 16)
    let polyline = GMSPolyline(path: path)
    polyline.strokeColor = UIColor(named: "AccentColor")!
    polyline.strokeWidth = 10
    polyline.map = mapView
    
    mapView?.moveCamera(cameraUpdate)
}

补充信息

Google Maps在模拟器中整体性能极差,地图视图通常需要1分钟以上才能完全加载(先显示带Google标志的灰色视图,之后才加载地图瓦片),上述简化视图中地图完全加载后约1分钟就会崩溃。

内容的提问来源于stack exchange,提问作者alstr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:55:14