2017-10-09 114 views
0

我正在編程生成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); 
     }); 
.... 

回答

1

的問題是交通模塊被加載異步的,但你的代碼是同步的,因此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