之前自己写了一个基于高德在线地图的动态轨迹绘制程序,绘制轨迹函数使用高德的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"
});
}

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

被折叠的 条评论
为什么被折叠?



