我正在构建一个使用GoogleMap和大量覆盖图的应用程序,似乎当我尝试加载大量覆盖图时,它会停止并向我提供 "((null))为假:已达到纹理Map集的最大数量,无法分配更多。"
我只是以这种方式添加图像作为叠加:
...
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);
对于如何解决此问题有何建议?
3条答案
按热度按时间umuewwlo1#
问题似乎是您为每个标记/覆盖图分配了一个单独的UIImage示例。这意味着当您在GMSMapView示例上绘制标记时,每个标记都有一个单独的UIImage。
如果要使用同一个图像创建多个标记,请对每个标记使用同一个UIImage示例。这有助于在显示多个标记时提高应用程序的性能。
简单地说,您需要限制要追加的覆盖图。您的图像是动态的还是静态的?如果是同一图像,一个简单的解决方案是定义一次图像,然后在追加覆盖图时添加对同一图像的引用。如果图像是动态的,则可以在代码中合并图像,并在“Map”中仅使用一个覆盖图。
qyzbxkaa2#
不是设置marker的iconView,而是设置marker的icon,这也会在for循环之外初始化图像:
b1zrtrql3#
试试看