我想要做的是根据用户的需要生成“自定义”地图。对于我使用GeoCharts,其基本上是在html中包含2个javascript,另一个用于所选信息。
所以我创建了QWebView以呈现HTML(将在每个请求上自动生成),如下所示:
GeoXML::GeoXML(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::GeoXML)
{
ui->setupUi(this);
QWebSettings::globalSettings()->setAttribute(QWebSettings::JavascriptEnabled, true);
QString excRoute = QDir::currentPath ();
QFile file(excRoute+"/index.html");
if(!file.open(QIODevice::ReadOnly)) {
QMessageBox::information(0, "error", file.errorString());
}
QString html= "";
QTextStream in(&file);
html = in.readAll();
file.close();
ui->webView->setHtml(html, QUrl("file:///"+excRoute+"/"));
}
HTML:
<html>
<head>
<script type='text/javascript' src='res/loader.js'></script>
<script type="text/javascript" src="res/jsapi.js"></script>
<link rel="stylesheet" type="text/css" href="res/index.css"/>
<script type='text/javascript'>
google.charts.load('current', {'packages': ['geochart']});
google.charts.setOnLoadCallback(drawMarkersMap);
function drawMarkersMap() {
var data = google.visualization.arrayToDataTable([
['Country', 'Poblacion'],
['Costa Rica', 'Norte de Costa Rica'],
['Mexico', 'Sur de Mexico'],
['Nicaragua', 'Nicaragua']
]);
var options = {
sizeAxis: { minValue: 0, maxValue: 100 },
region: '013', // Western Europe
displayMode: 'regions',
colorAxis: {colors: ['#e7711c', '#4374e0']} // orange to blue
};
var chart = new google.visualization.GeoChart(document.getElementById('chart_div'));
chart.draw(data, options);
};
</script>
</head>
<body>
<div id="chart_div" style="width: 900px; height: 500px;">
</div>
</body>
</html>
它确实渲染了我的页面。我看到我放在css中的红色背景颜色,但我无法看到地图。如果我在chrome中打开html它确实有效,但不在qt的QWebView中。
我在qrc中同时包含了两个js文件,把它们作为外部文件(托管在goolges网站上)和localy(如下面的代码片段),但是它没有用,也认为是this和{{ 3}}没有运气的帖子。
此外,this读取:
使用此方法时,WebKit假定外部资源如 JavaScript程序或样式表以UTF-8编码,除非 另有规定。例如,外部脚本的编码 可以通过HTML脚本标记的charset属性指定。 或者,也可以由Web服务器指定编码。
这让我认为它应该默认渲染我的地图。