【问题标题】:Very high memory and CPU usage when using Google Maps SDK for iOS使用适用于 iOS 的 Google Maps SDK 时内存和 CPU 使用率非常高
【发布时间】:2016-05-09 13:08:20
【问题描述】:

我正在创建一个应用程序,我必须在其中在地图上显示注册用户。我必须显示他们的个人资料图片。可能有很多,可能是 1000、2000 或 3000。

问题是,通过添加每张图片,它的内存使用量会增加并且应用程序会变慢。例如,我只使用了这段代码:

UIImageView * imgView = imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"like_r.png"]];
for(int i=0;i<1000;i++)
{
    GMSMarker *marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(31.4514885, 74.2642593);
    marker.iconView = imgView;
    marker.map=_mapView;
}

有没有在地图上显示所有用户的好方法?

【问题讨论】:

    标签: ios google-maps google-maps-sdk-ios


    【解决方案1】:

    尝试设置marker.tracksViewChanges = NO; 以允许CPU 空闲。

    或者,设置marker.image = [UIImage imageNamed:@"like_r.png"];而不是设置iconView,应该有类似的效果。

    这些更改应该有助于 CPU,但可能无法解决与内存相关的问题。

    【讨论】:

      【解决方案2】:

      如果您使用自定义标记并将其分配给标记的customView 属性,首先您应该设置marker.tracksViewChanges = false

      如果您想在选择时为自定义标记设置动画:

      您应该启用marker.tracksViewChanges = true,然后在动画完成后,设置marker.tracksViewChanges = false

      这个技巧可以让你克服谷歌地图的高 cpu 使用率

      【讨论】:

      • 你拯救了我的一天!我试图用一个简单的自定义 iconView 显示大约 50 个标记,并且 CPU 达到 100%。通过该修复,它保持在 40% 左右
      • 我得到了 18% 的使用率,因为 3 个标记一直在移动。有点高我试过苹果地图,它保持在 3% 以下。切换到 mapKit .....
      【解决方案3】:

      用户不可能同时看到所有 1000 个图钉。您可能应该通过将密切的用户分组在一起来减少显示的图钉数量。放大后,您可以通过增加分组因子来分隔这些引脚。

      【讨论】:

      • 我无法放大我的地图,因为我显示了 1000 个标记,我担心当用户到达 10000 时?发生了什么?
      • 你建议我做集群吗?
      • 我的意思是您一次最多只能显示 50-100 个引脚。如果您需要显示 10000 个引脚,则这些引脚中的大多数将彼此重叠。如果它们非常靠近,您应该将它们显示为一个图钉。也许您可以使用带有计数器的自定义别针。 (在该引脚附近显示用户数量)看看这个链接:developers.google.com/maps/documentation/android-api/images/…
      猜你喜欢
      • 2013-10-27
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 1970-01-01
      • 2013-05-11
      • 2014-05-07
      • 2022-07-26
      • 1970-01-01
      相关资源
      最近更新 更多