地图类业务优化方法

作者: brycegao | 来源:发表于2019-06-16 18:28 被阅读3次

    一、背景
    在百度地图、高德地图上显示Marker, 如果显示数量很多时,滑动地图会出现卡顿的现象。 根本原因是地图是个耗内存的功能, 我们看到的地图和marker都是Bitmap。 想想在手机屏幕上添加100个小的Bitmap和背景的大Bitmap需要多少内存? 这些图片没有复用机制,都是储存在Java堆里,显示的Marker越多占用的内存越多
    滑动地图时可能出现卡顿甚至ANR的现象, 其实就是内存开销太大了,地图上显示了过多的Marker。

    (Java_com_baidu_mapsdkplatform_comjni_map_basemap_JNIBaseMap_addOneOverlayItem+106)
      native: #06 pc 00003c47  /data/app/com.lianjia.beike-yIWV6AK0FFsvTyKR4wM2sA==/oat/arm/base.odex (Java_com_baidu_mapsdkplatform_comjni_map_basemap_JNIBaseMap_addOneOverlayItem__JLandroid_os_Bundle_2+110)
      at com.baidu.mapsdkplatform.comjni.map.basemap.JNIBaseMap.addOneOverlayItem(Native method)
      at com.baidu.mapsdkplatform.comjni.map.basemap.a.f(unavailable:-1)
      at com.baidu.mapsdkplatform.comapi.map.e.b(unavailable:-1)
     ...
    

    什么是“多”? 这个词缺少量化的标准。 不同性能的手机可以显示的Marker最大数量也是不同的。

    二、优化方法


    优化方法.png

    一些业务在滑动屏幕时会删除所有地图上的Marker, 然后添加新的Marker点。 这种操作方式不存在内存开销大的问题, 可以忽略上面的方法;

    使用缓存的优点是拖动屏幕时可以看到以前的Marker, 缺点是管理好Marker数量(避免内存开销大导致的卡顿)。

    三、目标
    缩放、滑动地图时可以看到缓存数据且操作流畅, 不会出现卡顿现象;

    由于手机性能限制, 既要充分利用手机资源又要保证地图操作流畅, 需要合理的管理Marker的添加、删除行为。 每个Marker都是张Bitmap,太多了手机扛不住。

    相关文章

      网友评论

        本文标题:地图类业务优化方法

        本文链接:https://www.haomeiwen.com/subject/rbwgfctx.html