相关疑难解决方法(0)

使用Google Maps SDK for iOS优化自定义标记图像性能

我最近在iOS应用中整合了Google Maps for iOS SDK.此应用程序旨在检索飞机的位置(包括飞机模型,纬度/经度,速度 - 飞机的基本值),然后在谷歌地图上绘制它们.

现在,最近,API(我正在使用的)返回的飞机数量增加了一倍,几乎增加了两倍.之前我没有遇到任何问题我每次尝试运行应用程序时都会崩溃,并给出以下错误:

((null)) was false: Reached the max number of texture atlases, can not allocate more.
Run Code Online (Sandbox Code Playgroud)

我在SDK的Google代码上找到了此问题页面:https://code.google.com/p/gmaps-api-issues/issues/detail?id = 5756 - 在这里,我被认为是与我的问题崩溃是我正在使用的自定义标记图像的数量.每个飞机模型都有不同的图像,这些图像在渲染时加载,UIImage分配给GMSMarker.

现在,我遇到的问题是有大量的结果,我得到了这个崩溃.同时,我还希望为每个标记提供单独的图像.

我的问题是,有没有一种方法,而不是为每个标记分配特定飞机的UIImage,我可以一次参考每个图像来优化性能吗?

感谢您的帮助,如果我没有说清楚,请告诉我!

google-maps objective-c ios google-maps-sdk-ios

16
推荐指数
1
解决办法
4055
查看次数

自定义标记性能iOS,崩溃结果"((null)"为false:达到纹理地图集的最大数量,不能分配更多."

我已在我的应用程序中集成了Google地图,并使用了Google Places API.在我从Google Places API(大约60)获得所有结果后,我将在自定义标记的帮助下显示它们.我制作的自定义标记包含"Place Image"和"Place Name",因为我必须首先在UIView中绘制它,然后借助以下函数将其渲染为UIImage

- (UIImage *)imageFromView:(UIView *) view
{
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {

        UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, [[UIScreen mainScreen] scale]);
    } else {
        UIGraphicsBeginImageContext(view.frame.size);
    }
    [view.layer renderInContext: UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}
Run Code Online (Sandbox Code Playgroud)

首先,所有标记都可以轻松渲染和绘制.

现在我有一个100米到5千米的滑块,它可以作为搜索半径优化器.当滑块移动时(假设值为2km),则移除所有标记,并且仅再次绘制与用户位置的距离小于滑块值的那些标记.当我测试滑块功能时,应用程序崩溃说

((null))为false:达到纹理图集的最大数量,不能分配更多.

我正在上传屏幕截图,以便清楚了解情况.请帮忙.

半径为5km时的图像

半径为2.4km时的图像

半径为1.7km时的图像

另外,在屏幕中,您将看到绿色标记以及蓝色标记.蓝色标记是靠近用户位置的标记,而绿色标记远离特定距离.由于用户位置将发生变化,因此有两种情况:

  1. 如果它接近绿色标记,则它将变为蓝色标记
  2. 如果它远离蓝色标记,那么它将变为绿色标记.

google-maps objective-c uiimage google-maps-markers ios

8
推荐指数
1
解决办法
1806
查看次数