1

次の問題があります: QWebView (Google マップ) のコードにマップ フォーム 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