首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Heremaps交互式javascript : maptile事件

Heremaps交互式javascript : maptile事件
EN

Stack Overflow用户
提问于 2019-07-30 10:02:16
回答 1查看 482关注 0票数 6

我在一个角度应用程序中实现了heremaps,并使用它来使用wkhtmltopdf打印PDF,问题是我需要听一个可靠的事件,以便通知wkhtmltopdf,我的地图已经完全加载并可以打印了。具体来说,在打印PDF时,有些瓷砖要么没有加载,要么仍然处于模糊状态。

我试着侦听mapviewchangeend事件,但它不会在加载时抛出。我还试着侦听呈现引擎的render事件,但是每次加载瓷砖时都会抛出一个事件,我不知道我应该等待多少块

代码语言:javascript
复制
// add a listener on the map ready event
this.map.getEngine().addEventListener("render", (event: H.util.Event) => {
    if (this.map.getEngine() === event.target) {
        map.mapReadyAction();
    }
});

是否有可靠的方法知道何时我的地图瓷砖是完全加载和准备打印?

编辑:使用注释中链接的post,我找到了一种可靠地计算加载瓷砖数量的方法。不幸的是,我找不到确定地图需要加载的瓷砖总数的方法(代码中的getTileNumber())

代码语言:javascript
复制
this.nbLoadedTiles = 0;
this.map
    .getBaseLayer()
    .getProvider()
    .addEventListener("update", () => {
        this.nbLoadedTiles++;
        console.log(`tile loaded : ${this.nbLoadedTiles}`);

        if (this.nbLoadedTiles === this.getTileNumber()) {
            console.log("All tiles loaded");
            map.mapReadyAction();
            this.nbLoadedTiles = 0;
        }
    });

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-08-01 03:15:15

这是,不是,是一个可接受的答案,但这是我在等待合适的解决方案时使用的解决方法:

我使用原始文章中描述的“加载”事件来启动计时器,如果在这段时间内没有加载额外的瓷砖,那么我认为地图已经加载。

代码语言:javascript
复制
// add a listener on the map ready event
this.map
    .getBaseLayer()
    .getProvider()
    .addEventListener("update", () => {
        // a new tile was succesfully loaded: reset the timer
        clearTimeout(this.tileTimer);
        this.tileTimer = setTimeout(() => {
            map.mapReadyAction();
        }, DELAY_TILE_LOADED);
    });

我使用3s延迟运行,以便在拥有最大的满载映射的机会和可接受的延迟之间有一个可接受的折衷方案。请注意,我的用户不是客户,所以等待3s是可以的,但是对于在线应用程序来说,这可能是不成功的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57269105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档