基于高德在线地图的动态轨迹绘制,解决内存暴增问题(C#)

本文介绍了一种基于高德在线地图的动态轨迹绘制程序优化方案,针对内存占用不断攀升的问题,通过定期清除地图上的标记来避免内存泄漏,确保程序稳定运行。

之前自己写了一个基于高德在线地图的动态轨迹绘制程序,绘制轨迹函数使用高德的API(polyline 函数),在之后的调试过程中发现:随着轨迹绘制的启动,程序占用的内存,越来越高,呈现“暴增状态”,导致界面卡死。经过一番调试,最终解决了问题,在此做以记录。

问题所在:高德的polyline 函数其轨迹绘制是通过在地图上添加覆盖物实现的,因此,若不断的向地图中添加覆盖物,覆盖物的存在会导致程序内存的增加。若不定期进行覆盖物的清空,就很容易导致内存暴增,导致程序卡死。以下为优化后的轨迹绘制JS代码,主要使用了 map.clearMap()函数。水平有限,如有更好的方法实现,还望多多指教,谢谢!

        var lngX ;
        var latY ;
        function drawLine(value1, value2) 
        {
            lngX = value1;
            latY = value2;
            if (once == false)
            {
                    marker = new AMap.Marker({
                   // icon: "./plane.png", //marker图标,直接传递地址url  
                   // offset: new AMap.Pixel(-56, -53), //相对于基点的位置
                    autoRotation: true,
                    position: new AMap.LngLat(lngX, latY)
                });
                    marker.setMap(map);  //在地图上添加点
                    map.setFitView(); //调整到合理视野
                    once = true;
            }
            else
            {              
                lineArr.push(new AMap.LngLat(lngX, latY));           
            }
            map.clearMap(); //清除地图上的标记
            marker.setMap(map);  //在地图上添加点
            marker.setPosition(new AMap.LngLat(lngX, latY)); //更新点标记位置  
            var polyline = new AMap.Polyline
                ({               
                map: map,
                path: lineArr,
                strokeColor: "#f00",//线颜色  
                strokeOpacity: 1,//线透明度  
                strokeWeight: 10,//线宽  
                strokeStyle: "solid"
                });        

        }

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值