使用 bingmaps 8 显示流量数据时出错
Error showing traffic data with bingmaps 8
我正在以编程方式生成 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);
});
....
问题是交通模块是异步加载的,但你的代码是同步的,因此当你调用 show 函数时 trafficManager 为空。这是该功能的修改版本。
function showTraffic() {
if (!trafficManager) {
Microsoft.Maps.loadModule("Microsoft.Maps.Traffic", function () {
trafficManager = new Microsoft.Maps.Traffic.TrafficManager(map);
trafficManager.show();
});
}else{
trafficManager.show();
}
}
我正在以编程方式生成 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);
});
....
问题是交通模块是异步加载的,但你的代码是同步的,因此当你调用 show 函数时 trafficManager 为空。这是该功能的修改版本。
function showTraffic() {
if (!trafficManager) {
Microsoft.Maps.loadModule("Microsoft.Maps.Traffic", function () {
trafficManager = new Microsoft.Maps.Traffic.TrafficManager(map);
trafficManager.show();
});
}else{
trafficManager.show();
}
}