使用bingmaps显示流量数据时出错8

使用bingmaps显示流量数据时出错8

问题描述:

我正在编程生成HTML以显示bing地图。以下生成的HTML正确标记了地址,但showTraffic()部分似乎没有效果。为了保护隐私,我更改了地址,省略了bing-maps凭证,并截断了结尾(我已经建立了这个结果),否则这就是实际生成的html。使用bingmaps显示流量数据时出错8

<!DOCTYPE html> 
<html> 
<head> 
<title>Job Site--Map</title> 
<meta charset="utf-8" /> 
<script type="text/javascript"> 
var map, searchManager,trafficManager; 
function GetMap() { 
    map = new Microsoft.Maps.Map("#myMap", { 
     credentials: "*** VALID CREDENTIALS OMITTED HERE ***" 
    });   
    geocodeQuery("1000 Dairy Ashford, Houston, TX 77077");  
    showTraffic();  
} 
function showTraffic() { 
    if (!trafficManager) { 
     Microsoft.Maps.loadModule("Microsoft.Maps.Traffic", function() { 
      trafficManager = new Microsoft.Maps.Traffic.TrafficManager(map); 
     }); 
    } 
    trafficManager.show(); 
} 
function geocodeQuery(query) { 
    if (!searchManager) { 
     Microsoft.Maps.loadModule("Microsoft.Maps.Search", function() { 
      searchManager = new Microsoft.Maps.Search.SearchManager(map); 
      geocodeQuery(query); 
     }); 
.... 

的问题是交通模块被加载异步的,但你的代码是同步的,因此trafficManager为空当你调用显示功能。这是您为此功能的修改版本。

function showTraffic() { 
    if (!trafficManager) { 
     Microsoft.Maps.loadModule("Microsoft.Maps.Traffic", function() { 
      trafficManager = new Microsoft.Maps.Traffic.TrafficManager(map); 
      trafficManager.show(); 
     }); 
    }else{ 
     trafficManager.show(); 
    } 
} 
+0

谢谢。每一个bing地图的调用总是异步?还是仅仅是这种呼叫的方式? (对不起,javascript和bing地图都不在我的专业知识范围内,所以我试图填补空白。) – Eric

+1

加载模块时,它是异步的,因为它必须下载该模块的代码。如果它同步执行,则可能会冻结浏览器,直到代码被下载,这会导致糟糕的体验。 – rbrundritt