2010-10-11 3 views
0

J'ai essayé avec le code suivant pour afficher correctement la ligne de direction entre 2 villes, mais la ligne entre 2 villes n'est pas correctement définie. Si la distance entre 2 villes est assez longue, alors une icône de la ville est affichée et pour voir l'autre icône de la ville affichée sur la carte, je dois aller à l'endroit.Comment afficher la direction correctement en délimitant la carte avec 2 villes avec google map dans Qt?

s'il vous plaît vérifier le code ci-dessous:

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")); 
} 

Comment lié la ligne de direction 2 emplacements de ville sur la carte, de sorte que quelle que soit la distance les deux directions de l'emplacement afficher sur la carte.

Merci ...

Répondre

0

Après avoir modifié le code, il travaille maintenant:

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")); 
} 

Ce serait utile pour tout le monde, qui veut afficher GDirection avec la ligne de poly coloré avec des icônes personnalisées.

Questions connexes