美文网首页iOS开发经验与心得的积累
关于高德地图的海量点绘制小结

关于高德地图的海量点绘制小结

作者: xymspace | 来源:发表于2017-09-02 13:31 被阅读74次

最近工作中碰到了海量点绘制需求,由于坐标点的数量级达到了200多万,研究过程耗费了不少的时间。最后完成了这项需求,还是很开心的。总结一番吧~

  • 关于选用SDK遇到的坑

    • 海量点绘制高德的SDK提供了海量点绘制接口。这个功能是在5.2.0版本开始的是我目前使用的绘制方式。
    • 百度地图SDK提供了覆盖物功能,而并没有这样海量点的绘制功能,我使用百度SDK绘制到20多万坐标点数据时,界面会变得非常卡顿。移动一下都举步维艰...
    • 百度web版提供了海量点绘制。使用oc与js交互的方式,加载web版的百度地图进行海量点绘制,我尝试过加载200多万坐标点,这种情况下界面流畅度比直接使用SDK好很多。
  • 关于使用高德SDK绘制时遇到的坑与解决办法

    • 使用高德地图海量点,官方建议坐标点数量在10万左右。目前我认为是一个海量点对象最适宜添加10万坐标点。(实际上我最多时添加了20多万)。这里想说明的坑是,引起界面卡顿最主要的原因是由于界面上加载了太多的对象,导致帧率偏低。所以请尽量将坐标点放入一个海量点对象中。


      高德海量点官方简介.png
    • 加载数据并绘制UI的过程,是一个很吃内存的过程,需要在didReceiveMemoryWorning中做好内存释放工作。避免崩溃问题。
  • 具体实现思路 :

    • 加载点的过程一定是要在子线程中进行。
    • 子线程的开辟会占用一定的内存,并且需要绘制的点越多,内存占用量就越大。建议采用递归方式处理线程的开启与销毁,我的做法是通过for循环进行点的解析与加载的。
    • 首先解析文件,将文件中的点放在一个数组中。使用for循环遍历这个数组。
    • 设置一个循环最大次数值n,让for循环n+1次,保存每次遍历得到的点。判断当for循环达到最大次数,则将当前循环得到的点进行一次绘制。并跳出循环,并将这些绘制过的点从数组中移除。
    • 之后将剩余点个数与最大次数进行比较,大于最大次数,开辟新的子线程,使用递归方式,开始新一轮的绘制,直到小于等于最大次数时,则将剩余点一次性添加到地图上。这样就可以有效的控制内存占用。
  • 之后会写一个Demo供参考.

相关文章

  • 关于高德地图的海量点绘制小结

    最近工作中碰到了海量点绘制需求,由于坐标点的数量级达到了200多万,研究过程耗费了不少的时间。最后完成了这项需求,...

  • vue 高德地图AMap.MassMarks添加海量点标记、AM

    高德地图添加海量点标记和创建自定义信息窗体的封装 假设已经正确引入了高德地图。那后面就直接看代码 这里说下geoJ...

  • iOS 高德地图的使用

    iOS:高德地图的使用 本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示、地图的绘制、地图的定位、地...

  • Android高德之旅(11)绘制海量点

    废话 第7篇说过绘制一个Marker,如果我要绘制多个Marker呢,很简单调用多次就可以了。但是如果绘制的数量非...

  • 关于高德地图的MAMapView踩坑

    关于高德地图的MAMapView踩坑 在使用高德地图的MAMapView地图的时候碰到无法设置size的情况: 地...

  • 高德地图绘制轨迹

    1.需求 将多个运动点绘制成平滑的运动轨迹,并标记起点终点。 2.先上一张效果图 3.使用高德或者百度地图实现这个...

  • 高德地图点 转 百度地图的点

    高德地图点 转 百度地图的点

  • 高德地图--集成

    目前的项目上需要集成高德地图,在这里整理一下关于高德地图的有关知识小点。 高德地图开发者平台 链接地址:https...

  • 高德地图使用小结

    前言 高德地图的api使用方法和百度地图差不多,照着Demo写也并不难,前段时间做的高德地图如今已经忘的差不多了,...

  • iOS基于高德地图轨迹回放

    基于高德地图demo海量轨迹回放修改的。话不多说直接上demo demo地址: https://github.co...

网友评论

  • c55e18e88aa4:请问下百度地图web的流畅度具体是怎么样的?能不能发个Demo参考下
    xymspace:流畅度一般,因为web百度地图的加载方式,在缩放过程中,逐一加载某一块地图,由于没有全部加载的缘故,内存和CPU占用量自然没有特别大,卡顿现象也就好了很多.
    说一下大致思路先:
    1.到官网搞到web百度地图文件,下载后拖到你的工程里,
    2.把你的代码在webView或者WKWebView的代理方法中,通过JS代码,注入到web版地图,最好用多线程,分布注入,比如说,200万点,异步线程,每次注入20万,

本文标题:关于高德地图的海量点绘制小结

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