QWebView:使用谷歌地图拖动地图时非常滞后

QWebView: Extremely laggy when dragging the map around, when using google maps

本文关键字:地图 非常 滞后 拖动 谷歌地图 QWebView      更新时间:2023-10-16

我使用QWebView显示了一个加载谷歌地图的简单html页面。但是,当拖动地图时,加载图像的速度非常慢,而且它似乎不会缓存图像,因为第二次移动时速度也很慢。

有人看到类似的东西并得到了解决方案吗?

    #define MAP_HTML "<html><head><script type="text/javascript" " 
    "src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>" 
    "<script  type="text/javascript">" 
    "var map; function initialize(lat, lng) { "
    "map = new google.maps.Map(document.getElementById("map_canvas"), " 
    "{ zoom: 15, center: new google.maps.LatLng(lat, lng), " 
    "disableDefaultUI: true, mapTypeId: google.maps.MapTypeId.ROADMAP  });" 
    "} </script>" 
    "</head><body style="margin:0px; padding:0px;" onload="initialize(55.786033,12.521667)">" 
    "<div id="map_canvas" style="width:100%; height:100%"></div>" 
    "</body></html>"

GMapWidget::GMapWidget(QWidget *parent)
    : QWebView(parent)
    , m_accessManager(new QNetworkAccessManager(this))
    , m_initMap(false)
{
    connect(m_accessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(slotNetworkReply(QNetworkReply*)));
    connect(this, SIGNAL(loadFinished(bool)), this, SLOT(slotLoadFinished(bool)));
    setHtml(MAP_HTML);
//  auto t = QUrl::fromLocalFile("index.html").path();
//  load(QUrl::fromLocalFile("index.html"));
}

您可以尝试在QNetworkAccessManager中添加一个QNetworkDiskCache,看看它是否更好:

QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
diskCache->setCacheDirectory("cacheDir");
m_accessManager->setCache(diskCache);