使用bingmaps 8

时间:2017-10-09 18:47:22

标签: bing-maps bing-api

我以编程方式生成HTML来显示bing地图。以下生成的HTML正确标记了地址,但showTraffic()部分似乎没有任何效果。为了保护隐私,我改变了地址,省略了bing-maps凭据,并截断了结尾(我已经确定了它正在工作),否则这就是生成的实际html。

<!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 个答案:

答案 0 :(得分:1)

问题是流量模块是异步加载的,但是您的代码是同步的,因此当您调用show函数时trafficManager为null。以下是此功能的修改版本。

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