javascript - Heremaps 交互式 javascript API : maptile load event

标签 javascript here-api

我在一个 Angular 应用程序中实现了 heremaps 并使用它来使用 wkhtmltopdf 打印 PDF,问题是我需要有一个可靠的事件来收听以便通知 wkhtmltopdf 我的 map 已完全加载并准备好打印.特别是在打印 PDF 时,某些图 block 未加载或仍处于模糊状态。

我尝试监听 mapviewchangeend 事件,但它不会在图 block 加载时抛出。我还尝试监听渲染引擎的 render 事件,但每次加载一个图 block 时都会抛出一个事件,我不知道我应该等待多少个图 block

// 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();
    }
});

有没有一种可靠的方法可以知道我的 map 图 block 何时已完全加载并准备好打印?

编辑:使用评论中链接的帖子,我找到了一种可靠地计算已加载图 block 数量的方法。不幸的是,我找不到确定我的 map 需要加载的图 block 总数的方法(代码中的getTileNumber())

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;
        }
    });

谢谢!

最佳答案

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

我正在使用原始帖子中描述的“图 block 加载”事件来启动计时器,如果在这段时间内没有加载其他图 block ,我认为 map 已加载。

// 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);
    });

我以 3 秒的延迟运行此程序,以便在获得满载 map 的最大机会和可接受的延迟之间取得可接受的折衷。请注意,我的用户不是客户,所以等待 3 秒是可以的,但对于在线应用程序来说,这可能是不行的

关于javascript - Heremaps 交互式 javascript API : maptile load event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269105/

相关文章:

javascript - 在一个div中找一个关键字,然后得到冒号后面的字符串,转为变量

javascript - 如何从随机生成的数组中排除某些值

javascript - 这里映射了如何禁用双击缩放

android - 这里 SDK v3.5.0_466 java.lang.ClassNotFoundException : Didn't find class "android.webkit.RenderProcessGoneDetail"

javascript - 在 Ember js 中使用 Promise 对一系列函数进行排序

javascript - 使用 onclick 函数更改变量

android - 如何在 HERE SDK 中获取 Turn By Turn 指令中的文本和图标

javascript - javascript中字母递增

javascript - 为什么我的express.js 无法运行?

javascript - 以 http 格式放置诺基亚 map 的搜索 api?