0

このコードを使用して、javascript から getData を取得します。

 const QVariant myvar = this->page()->mainFrame()->
     evaluateJavaScript("measureDistance("+QString::fromStdString(prev->marker_id)+","+QString::fromStdString(stop->marker_id+");"));
 bool ok;
 const int myint = myvar.toInt(&ok);
 if (!ok)
   qWarning() << "Error getting int from JS";
 qDebug() << myint;
 getMapTimeDistance(location, QString::fromStdString(prev->getName()), stop, 10);

そしてJavaScriptの最後の行は次のとおりです。

function measureDistance(m1, m2) {
var wp = new Array();
var lstart = new google.maps.LatLng(markers[m1].position);
var lend = new google.maps.LatLng(markers[m2].position);
var request = {
    origin : lstart,
    destination : lend,
    waypoints : [],
    optimizeWaypoints: true,
    travelMode : google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
    if (status== google.maps.DirectionsStatus.OK) {
        response.routes[0].legs[0].duration.text;
    } else {
        document.getElementById('locationD').value = "drawRouteBad";
    }

});

}

このコードが機能しない理由を知っていますか? タイプのさまざまな組み合わせを試しましたが、何も役に立ちませんでした。おそらく、javasscripts の値がどの型なのかわかりません。たぶん、別の方法でqtに渡す必要がありますか?

4

1 に答える 1

0

response.routes[0].legs[0].duration.value;は、Google Maps API v3 Directions Serviceからのものです(最後の質問によると。このサービスは非同期であり、呼び出しから何も返すことができません。コールバック関数内で必要なデータを使用する必要があります (それが行われた場合)。サーバーから返され、利用可能です)。

于 2013-01-15T03:19:11.013 に答える