移动端使用高德XYZ栅格图层问题

作者: 乘风御上者 分类: JavaScript 发布时间: 2019-09-21 18:17

公司项目使用高德地图的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内存大量占用,地图卡顿就出现了。

解决办法也非常简单,后端接口检测图片不存在时,同样返回一张透明图即可。

解决这个问题,只用了一分钟,但是发现这个问题却用了几个小时。– 论为什么大佬是大佬

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表回复