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

iOS项目集成Google Maps 8.3.0 CocoaPods崩溃问题求助

Google Maps 8.3.0 崩溃问题:key cannot be nil in GMSStyleTableService

项目使用Google Maps 8.3.0版本,原本运行正常,突然出现崩溃,错误日志如下:

*** -[__NSDictionaryM setObject:forKeyedSubscript:]: key cannot be nil -[GMSStyleTableService checkStyleTableMemoryCacheForKey:callbackQueue:handler:]

已尝试通过判断self.mapView是否为空排查,但问题仍存在,相关代码如下:

if(self.mapView==nil) return;

self.mapView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);

GMSPath *path = [GMSPath pathFromEncodedPath:pathString];

GMSCoordinateBounds *bounds = [[GMSCoordinateBounds alloc] initWithPath:path];

GMSPolyline *polyline = [GMSPolyline polylineWithPath:path];
polyline.strokeWidth = 3;
polyline.strokeColor = color.blue;
polyline.map = self.mapView;

GMSCameraPosition *camera = [self.mapView cameraForBounds:bounds insets:UIEdgeInsetsMake(32, 32, 32, 32)];
self.mapView.camera = camera;

GMSMarker *myMarker = [[GMSMarker alloc] init];
myMarker.position = self.myCoords;
myMarker.icon = [UIImage imageNamed:@"dot.png"];
myMarker.map = self.mapView;

问题分析

这个崩溃的核心是GMSStyleTableService在操作字典时传入了nil的key,和你贴出的polyline、marker操作逻辑无直接关联,更偏向地图样式加载或缓存的底层问题:

  • 可能是自定义地图样式(JSON格式)存在语法错误,或包含空的样式key
  • Google Maps 8.3.0版本本身存在样式缓存相关的已知bug
  • 地图初始化或样式设置时机不当,比如mapView未完全初始化就触发了样式相关操作

解决方案

  1. 排查自定义地图样式

    • 如果项目使用了GMSMapStyle自定义样式,检查JSON文件的语法,确保featureType、elementType等必填字段无空值
    • 暂时切换回默认地图样式,测试是否还会崩溃,确认是否是样式文件导致的问题
  2. 补全代码中的nil判断

    • 当前代码中pathString或self.myCoords为空时,会导致后续对象初始化异常,虽然不一定直接触发当前崩溃,但建议补充判断:
      if (!pathString.length || !self.myCoords) {
          return;
      }
      GMSPath *path = [GMSPath pathFromEncodedPath:pathString];
      if (!path) {
          return;
      }
      
  3. 清理地图缓存

    • 尝试清理App沙盒中Google Maps相关的缓存目录,或调用[GMSServices clearCache];(注意该方法在8.3.0版本中的可用性)
  4. 升级Maps版本

    • 8.3.0属于较旧版本,存在不少已知bug,升级到最新稳定版本可大概率解决这类底层缓存问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:15