我有以下问题:我在 QWebView (Google Maps) 的代码中加载了地图表单 HTML 文件。在这个 HTML 文件中,我定义了一个 javascript 函数,它应该在地图上以指定的坐标添加一个带标签的标记。这是代码:
JavaScript 函数:
function addLMarker(lat, lng, label) {
var marker = new MarkerWithLabel({
position: new google.maps.LatLng(lat, lng),
draggable: false,
raiseOnDrag: false,
map: map,
labelContent: label,
labelAnchor: new google.maps.Point(0, 0),
labelClass: "labels",
labelStyle: {opacity: 0.75}
});
markers.push(marker);
return true;
}
C++ 函数:
QString SCRIPT_ADDMARKERWITHLABEL = tr("addLMarker(%1, %2, \"%3\")");
void addMarkerWithLabel(QPointF pos, QString label) {
page()->mainFrame()->evaluateJavaScript(SCRIPT_ADDMARKERWITHLABEL.arg(pos.x()).arg(pos.y()).arg(label));
}
我确定从我的应用程序中正确调用了 JS 函数,但是它对我的 QWebView 框架没有影响。当我在浏览器中调用此函数时,它会正确执行并在地图上的给定位置放置一个标记。问题出在哪里?我错过了什么吗?
编辑:
它突然开始工作。我意识到函数代码没有正确执行(尽管在浏览器中工作)所以我打开了 DeveloperExtras,这样我就可以在我的 QWebView 中检查 JS 的情况。我只是将这个:粘贴QWebSettings::globalSettings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
到我的主窗口的构造函数中,然后 javascript 代码开始工作。删除这条线后,它仍然可以正常工作。我不会称其为解决方案,但是,它以某种方式对我有用。