2012-03-11 2 views
1

Я использовал QWebView, чтобы показать простую html-страницу, загружающую карты google. Но при перетаскивании карты это очень медленно при загрузке изображений, и похоже, что они не кэшируют их, так как во второй раз медленно перемещать их.QWebView: Чрезвычайно лагги при перетаскивании карты, при использовании карт 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

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

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

Оно не изменит ничего. Тем не менее при панорамировании и загрузке изображений он медленный. –

Смежные вопросы