2017-08-25 11 views
0

このコードは、プログラムによって渡された特定のアドレスのbingマップを読み込んだHTMLページを作成し、そのページをChromiumブラウザに読み込みます。私は、これが生成するHTMLファイルをテストしました。ファイルをダブルクリックすると、デフォルトのブラウザが開き、ページが正しく読み込まれます。ただし、このページをプログラム内のChromiumブラウザウィンドウに読み込もうとすると(以前は他のページで使用されていました)、ヘッダのみが表示されます(div id = "TitleDiv"の素材) 。私は、HTMLがロードされていない理由を理解しようとしています。bing mapsページをChromiumブラウザに読み込みます(Delphi)

ChromWebPage.Browser.Reload; の有無にかかわらずこれを試しました。行。

これは、ここで私たちのBingマップキーを省略したことを除いて、私の正確なデルファイコードです。 (コードは次のようにフォーマットされている理由であるTStringListのであれば、私は知っているデルファイのファイルにテキストを取得する最も簡単な方法。)

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; 

答えて

0

DCEF3の最新バージョンへのアップグレードは問題を解決しました。スクリプトが古いDCEF3と互換性がないことを疑う。

関連する問題