“已达到纹理图集的最大数量,无法分配更多”使用 Google 地图

Rec*_*iwe 6 google-maps ios swift

我正在构建一个使用谷歌地图和大量叠加层的应用程序,似乎当我尝试加载大量叠加层时它会停止并为我提供“((null)) is false: Reached the max number of texture atlases ,不能分配更多。”

我只是通过这种方式将图像添加为叠加层:

...
if (image != nil) {
                let image: CGImage = (image?.cgImage)!
                let icon = UIImage(cgImage: image)

                let overlay = GMSGroundOverlay(bounds: overlayBounds, icon: icon)
                overlay.bearing = 0
                overlay.map = map
                overlay.zIndex = 10

                self.overlays.append(overlay);
Run Code Online (Sandbox Code Playgroud)

有关如何解决此问题的任何建议?

lax*_*089 5

问题似乎是您正在为每个标记/覆盖分配一个单独的 UIImage 实例。这意味着当您在 GMSMapView 实例上绘制标记时,每个标记都有一个单独的 UIImage。

如果您要使用同一图像创建多个标记,请为每个标记使用相同的 UIImage 实例。这有助于在显示许多标记时提高应用程序的性能。

简而言之,您需要限制附加的覆盖。您的图像是动态的还是静态的?如果是同一张图像,一个简单的解决方案是定义图像一次,然后在附加叠加层时添加对同一张图像的引用。如果图像是动态的,您可以将图像合并到代码中,然后仅在地图中使用一个叠加层。