我正在创建一个应用程序,我必须在地图上显示注册用户。我必须显示他们的个人资料照片。可能有很多,可能是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;
}
有没有一种方法可以在地图上显示所有用户?
答案 0 :(得分:20)
尝试设置marker.tracksViewChanges = NO;
以允许CPU空闲。
或者,设置marker.image = [UIImage imageNamed:@"like_r.png"];
而不是设置iconView,这应该具有类似的效果。
这些更改应该有助于CPU,但可能无法解决与内存相关的问题。
答案 1 :(得分:3)
如果您使用自定义标记并将其分配给标记的customView
属性,首先应设置marker.tracksViewChanges = false
然后,如果您想在选择中为自定义标记设置动画:
你应该启用marker.tracksViewChanges = true
然后在动画完成后设置marker.tracksViewChanges = false
这个技巧可以让你克服谷歌地图的高CPU使用率
答案 2 :(得分:1)
用户无法同时看到所有1000个引脚。您应该通过将关闭用户分组在一起来减少显示的引脚数。放大后,您可以通过增加分组因子来分离这些引脚。