1

我有以下问题:我在 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 代码开始工作。删除这条线后,它仍然可以正常工作。我不会称其为解决方案,但是,它以某种方式对我有用。

4

0 回答 0