(威尼斯人线上娱乐官网) ios的MKMapView在缩放时内存暴涨
威尼斯人线上娱乐官网
威尼斯人线上娱乐官网
当前位置 : 威尼斯人线上娱乐官网 > 威尼斯人线上娱乐官网

(威尼斯人线上娱乐官网) ios的MKMapView在缩放时内存暴涨

ios的mkmapview在zoom时内存会暴涨,并且降不下来。
我在网上搜了很多,也尝试了很多解决方案,比如切换地图显示模式(MKMapType)、不用时释放掉地图。但是并没有明显的解决缩放时的内存问题。

这个内存会暴涨到大几十兆吧,是正常的。

mapview使用的是tiledLayer(瓦片Layer),为了渲染速度,会在内存中缓存地图的图块。
缩放的时候,地图图块在不同层次都会缓存。

我猜想内存吃紧的时候,MKMapView应该会自己清理缓存,所以我觉得不用操心这个题。

PS:1 这是stackoverflow给的方案,真不明白为啥。

- voidapplyMapViewMemoryHotFix{

    switch self.mapView.mapType {
        case MKMapTypeHybrid:
        {
            self.mapView.mapType = MKMapTypeStandard;
        }

            break;
        case MKMapTypeStandard:
        {
            self.mapView.mapType = MKMapTypeHybrid;
        }

            break;
        default:
            break;
    }


    self.mapView.mapType = MKMapTypeStandard;



}
-voidmapView:MKMapView *mapView regionDidChangeAnimated:BOOLanimated
{
    [self applyMapViewMemoryHotFix];
}

PS:

个人更倾向于

override func viewDidDisappearanimated: Bool {
    super.viewDidDisappearanimated
    mapView.removeFromSuperview
}

在viewDidDisappear方法中把map释放,然后在需要他的时候,重新初始化。

1

对的,我用的就是你所提到的第一种方法,加上了zoomlevel的判断,用户体验会好点。

第二种我也一并用了。但是它只会在页面消失才会起作用,且作用有限。(zoom以后就不起作用)

jiny_and_me · 2016年01月21日

展开评论

已找到解决方案:

在mapview的regionDidChange方法中,判断map.zoomLevel如果小于一定范围就交替mapType

这样可以有效降低内存峰值。

因为当地图缩小到一定范围,上面的商铺之类的细节早就应该清除掉,以节省内存。

在mapview的regionDidChange方法中,判断map.zoomLevel如果小于一定范围就交替mapType

这样可以有效降低内存峰值。
是怎么做的?????mapView 有 zoomLevel 这个属性吗???

该答案已被忽略,原因:不符合答题规范:内容不是答案,可用评论、投票替代,无意义的内容:赞、顶、同问等毫无意义的内容

广告位

威尼斯人线上娱乐官网