QWebView: крайне медленный при перетаскивании карты, при использовании карт Google - PullRequest
1 голос
/ 11 марта 2012

Я использовал QWebView, чтобы показать простую HTML-страницу, загружающую карты Google. Но при перетаскивании карты загрузка изображений происходит очень медленно, и кажется, что они не кешируются, поскольку во второй раз также происходит медленное перемещение.

Кто-нибудь видел нечто подобное и нашел решение?

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

1 Ответ

1 голос
/ 11 марта 2012

Вы можете попробовать добавить QNetworkDiskCache к вашему QNetworkAccessManager, чтобы посмотреть, будет ли он лучше:

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