2

我创建了一个子类 QWebView 的 Google 地图小部件。基本上,所有谷歌地图的东西都是用Javascript(使用谷歌的Javascript API)编写的,并保存在本地存储的html文件中。然后,小部件只显示 html....并做一些其他的事情,但这无关紧要。

我遇到的问题是,与我在 Chrome 或 Safari 中打开相同的 html 文件相比,加载地图图块的时间要长得多。Chrome 和 Safari 不是基于 Qt 使用的同一个 WebKit 吗?

有没有人遇到过类似的情况?有没有办法缓存地图图块,这样每次显示更新时就不必重新获取它们?理想情况下,我希望能够永久缓存它们,以便我的程序可以离线运行,但我知道这违反了 Google 的 TOS。我将满足于能够缓存切片以加快平移/缩放。

在搜索各种论坛时,使用 QNetworkDiskCache 已成为一种潜在的解决方案,但似乎没有人能够使其工作。我似乎无法弄清楚为什么相同的 html/javascript 在 Chrome 和 Safari 中的运行速度比在 QWebView 中快得多

4

1 回答 1

0

QNetworkDiskCache 在谷歌地图上运行良好,与未启用时相比,速度显着提高。这应该可以解决问题:

QNetworkAccessManager *manager = new QNetworkAccessManager(this);
QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);

diskCache->setCacheDirectory(QCoreApplication::applicationDirPath() + "/cache");
manager->setCache(diskCache);

然后将管理器添加到您的 webView:

frame->page()->setNetworkAccessManager(manager);
frame->page()->settings()->setMaximumPagesInCache(10);

然后继续加载你的html

frame->setHtml(...);
于 2013-07-29T12:47:44.427 回答