移动端使用高德XYZ栅格图层问题
公司项目使用高德地图的xyz栅格系统,解决了移动端查看地图图层因渲染效率低而造成的卡顿问题。
刚开始测试一切顺利,但是当对接真实环境,发现手机展示地图依旧非常卡顿。尤其是真实环境下每个放大级别都会切出大量瓦片,更是卡出翔。
大佬亲自出手对前端一顿操作,从uniapp各种测试,再到 apicloud,最后到将锅仍回给我。原来是我写的接口,在给高德返回图片资源时做了一个判断,当图片存在就返回图片资源,返回header同样设置成图片格式。而图片不存在时,只返回一个字符串 not found,问题就在这个字符串。
// 高德栅格调用瓦片
var xyzTileLayer = new AMap.TileLayer({
// 图块取图地址
getTileUrl: 'https://接口地址/api?x=[x]&y=[y]&z=[z]',
zIndex: 100
});
高德地图加载时,调用上述接口地址,该接口返回数据会被高德当成图片资源渲染到对应的瓦片位置。
就这样返回的字符串 not found 被当成图片资源渲染,造成手机cpu内存飙升。多个图片返回 not found就会造成手机cpu内存大量占用,地图卡顿就出现了。
解决办法也非常简单,后端接口检测图片不存在时,同样返回一张透明图即可。
解决这个问题,只用了一分钟,但是发现这个问题却用了几个小时。– 论为什么大佬是大佬