Как правильно отобразить направление, связав карту с 2 городами с помощью карты Google в Qt? - PullRequest
0 голосов
/ 11 октября 2010

Я попытался с помощью следующего кода правильно отобразить линию направления между двумя городами, однако линия между двумя городами установлена ​​неправильно.Если расстояние между двумя городами достаточно велико, то отображается значок одного города, и чтобы увидеть значок другого города, отображаемый на карте, мне нужно перейти к месту.

, пожалуйста, проверьте код ниже:

void ShowDirection::on_webView_loadFinished(bool)
{

    QStringList scriptStr;
    scriptStr
            << "var map = new google.maps.Map2(document.getElementById(\"map\"));"
            << "var bounds = new GLatLngBounds();"
            << "var colors = ['#FF0000'];"
            << "var baseStartIcon = new GIcon();"
            << "var baseEndIcon = new GIcon();"
            << "baseStartIcon.image = 'qrc:images/green.png';"
            << "baseEndIcon.image = 'qrc:images/red.png';"
            << "baseStartIcon.iconSize = new GSize(37, 37);"
            << "baseEndIcon.iconSize = new GSize(37, 64);"
            << "baseStartIcon.iconAnchor = new GPoint(18, 37);"
            << "baseEndIcon.iconAnchor = new GPoint(0, 64);"
            << "map.addControl(new GLargeMapControl());"
            << "var directions = new GDirections();"
            << "GEvent.addListener(directions,\"load\", function() {"
            << "var poly=directions.getPolyline();"
            << "map.setCenter(poly.getVertex(0),8);"
            << "map.addOverlay(new GMarker(poly.getVertex(0),baseStartIcon));"
            << "map.addOverlay(new GMarker(poly.getVertex(poly.getVertexCount()-1),baseEndIcon));"
//            << "bounds.extend(poly.getBounds());"
//            << "map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));"
            << "poly.setStrokeStyle({color:colors[0],weight:3,opacity: 0.7});"
            << "map.addOverlay(poly);"
            << "});"


    << QString ("directions.loadFromWaypoints([\"%1\",\"%2\"],{getPolyline:true});")
                                .arg(fromCurrentLocationShowDirection)
                                .arg(toEventLocationShowDirection);
    ui->webView->page()->mainFrame()->evaluateJavaScript(scriptStr.join("\n"));
}

Как связать линию направления 2 городских локаций на карте, чтобы на карте отображалось расстояние, на которое указывают оба направления.

Спасибо ...

1 Ответ

0 голосов
/ 11 октября 2010

После изменения кода он теперь работает:

void ShowDirection::on_webView_loadFinished(bool)
{

    QStringList scriptStr;
    scriptStr
            << "var map = new google.maps.Map2(document.getElementById(\"map\"));"
            << "var bounds = new GLatLngBounds();"
            << "var colors = ['#FF0000'];"
            << "var baseStartIcon = new GIcon();"
            << "var baseEndIcon = new GIcon();"
            << "baseStartIcon.image = 'qrc:images/currentlocation-green.png';"
            << "baseEndIcon.image = 'qrc:images/iPhone_redFlag-events.png';"
            << "baseStartIcon.iconSize = new GSize(37, 37);"
            << "baseEndIcon.iconSize = new GSize(37, 64);"
            << "baseStartIcon.iconAnchor = new GPoint(18, 37);"
            << "baseEndIcon.iconAnchor = new GPoint(0, 64);"
            << "map.addControl(new GLargeMapControl());"
            << "var directions = new GDirections();"
            << "GEvent.addListener(directions,\"load\", function() {"
            << "var poly=directions.getPolyline();"
            << "bounds.extend(poly.getVertex(0));"
            << "bounds.extend(poly.getVertex(poly.getVertexCount()-1)); "
            << "map.setCenter(bounds.getCenter(),map.getBoundsZoomLevel(bounds));"
            << "map.addOverlay(new GMarker(poly.getVertex(0),baseStartIcon));"
            << "map.addOverlay(new GMarker(poly.getVertex(poly.getVertexCount()-1),baseEndIcon));"

            << "poly.setStrokeStyle({color:colors[0],weight:3,opacity: 0.7});"
            << "map.addOverlay(poly);"
            << "});"


    << QString ("directions.loadFromWaypoints([\"%1\",\"%2\"],{getPolyline:true});")
                                .arg(fromCurrentLocationShowDirection)
                                .arg(toEventLocationShowDirection);
    ui->webView->page()->mainFrame()->evaluateJavaScript(scriptStr.join("\n"));
}

Это было бы полезно для любого, кто хочет отобразить GDirection с цветной линией поли с пользовательскими значками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...