2017-08-25 3 views
0

Ce code crée une page HTML qui charge des maps Bing pour une adresse spécifique (transmise par le programme), puis charge cette page dans un navigateur Chromium. J'ai testé le fichier HTML que cela produit et si je double-clique sur le fichier, mon navigateur par défaut s'ouvre et la page se charge correctement. Cependant, quand j'essaye de charger cette page dans une fenêtre de navigateur de Chromium dans le programme (qui a fonctionné dans le passé pour d'autres pages) seulement l'en-tête montre (matériel de div id = "TitleDiv") mais la carte ne montre jamais . J'essaye de comprendre pourquoi le HTML ne charge pas quand chargé par programme dans le navigateur quand il charge correctement quand chargé manuellement.Chargement de la page de mappage de bing dans le navigateur Chromium (en Delphi)

J'ai essayé ceci avec et sans le ChromWebPage.Browser.Reload; ligne.

Ceci est mon code Delphi exact, sauf que j'ai omis notre clé de cartes Bing ici. (Meilleure façon d'obtenir du texte à déposer auprès de Delphi que je sais si est un TStringList qui est la raison pour laquelle le code est formaté comme ça.)

mMap := TStringList.Create; 
    with mMap do begin 
    Add('<!DOCTYPE html> '); 
    Add('<html> '); 
    Add('<head>'); 
    Add('<title>' + sCaption + '</title> '); 
    Add(' <meta charset="utf-8" /> '); 
    Add(' <script type="text/javascript"> '); 
    Add(' var map, searchManager; '); 
    Add(' function GetMap() { '); 
    Add('  map = new Microsoft.Maps.Map("#myMap", { '); 
    Add('   credentials: "KEY-HERE" '); 
    Add('  }); '); 
    //Make a request to geocode passed address 
    Add('  geocodeQuery("' + sAddress + '"); '); 
    Add(' } '); 
    Add(' function geocodeQuery(query) { '); 
    //If search manager is not defined, load the search module. 
    Add('  if (!searchManager) { '); 
    // Create an instance of the search manager and call the geocodeQuery function again. 
    Add('   Microsoft.Maps.loadModule("Microsoft.Maps.Search", function() { '); 
    Add('    searchManager = new Microsoft.Maps.Search.SearchManager(map); '); 
    Add('    geocodeQuery(query); '); 
    Add('   }); '); 
    Add('  } else { '); 
    Add('   var searchRequest = { '); 
    Add('    where: query, '); 
    Add('    callback: function (r) { '); 
    // Add the first result to the map and zoom into it. 
    Add('     if (r && r.results && r.results.length > 0) { '); 
    Add('      var pin = new Microsoft.Maps.Pushpin(r.results[0].location); '); 
    Add('      map.entities.push(pin); '); 
    Add('      map.setView({ bounds: r.results[0].bestView }); '); 
    Add('     } '); 
    Add('    }, '); 
    Add('    errorCallback: function (e) { '); 
    // If there is an error, alert the user about it. 
    Add('     alert("No results found."); '); 
    Add('    } '); 
    Add('   }; '); 
    //Make the geocode request. 
    Add('   searchManager.geocode(searchRequest); '); 
    Add('  } '); 
    Add(' } '); 
    Add(' </script> '); 
    Add(' <script type="text/javascript" src="/BingMapsCredentials.js"></script> '); 
    Add(' <script type="text/javascript" src="https://www.bing.com/api/maps/mapcontrol?callback=GetMap" async defer></script> '); 
    Add('</head> '); 
    Add('<body style="width:100%;height:100%"> '); 
    Add(' <div id="TitleDiv" style="padding-bottom: 15px; '); 
    Add('        padding-top: 5px; '); 
    Add('        font-family: Arial, Helvetica, sans-serif; '); 
    Add('        font-size: 14px; '); 
    Add('        font-weight: bold; '); 
    Add('        position:relative;">' + sCaption + '</div> '); 
    Add(' <div id="myMap" style="width:100vw;height:95vh;position:relative;"></div> '); 
    Add('</body> '); 
    Add('</html> '); 
    sTempFile := GetLocalAppDir + 'mymap.html'; 
    if fileExists(sTempFile) then DeleteFile(sTempFile); 
    savetofile(sTempFile); 
    mMap.free; 
    end; 
    ChromWebPage.DefaultUrl := sTempFile; 
    ChromWebPage.Browser.MainFrame.LoadUrl(sTempFile); 
    ChromWebPage.Browser.Reload; 

Répondre

0

Mise à niveau vers la dernière version de DCEF3 a résolu le problème. Suspecter que les scripts étaient incompatibles avec l'ancien DCEF3.