VEmap 未在 Firefox 中定义

VEmap is not defined in firefox

我在我的代码中使用 Bing 地图,我使用的 url 是 https://dev.virtualearth.net/REST/v1/Locations/

在 loadMap() 函数中,我将对象初始化为 VEMap。它在 IE 和 Chrome 中工作正常,但在 Firefox 中它给出 "VEmap is not defined" 错误。可能的问题是什么。我该如何解决?

Div块

<div id='map' style="position: relative; height: 240px;z-index:0;">

我的代码

function loadMap()
{ 
map = new VEMap('map');
mapCenter= new VELatLong(51.8756, -97.9956)
}

您似乎正在尝试使用 Bing 地图的 6.3 版。如果这是一个使用 Bing Maps 版本 7 的新开发项目,版本 6.3 即将结束(已经宣布)。

至于您的问题,可能是时间问题或脚本引用不正确。对于您当前的代码,您应该在页面头部有一个脚本引用,如下所示:

<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3"></script>

如果您没有这个,那么这可能是您的问题。如果您在页面底部有这个,那么很可能在加载地图脚本之前调用了 loadMap 函数。你可以做一些不同的事情来处理这个问题。一种方法是通过检查 VEMap 已定义的加载映射函数来确保加载地图脚本,如果未定义,则稍等片刻,然后再次尝试加载地图,如下所示:

function loadMap()
{ 
    if(typeof(VEMap) === 'undefined'){
        setTimeout(loadMap, 150);
        return;
    }

    map = new VEMap('map');
    map.SetCredentials("BingMapsKey"); 
    mapCenter= new VELatLong(51.8756, -97.9956)
}

综上所述,您应该使用 Bing 地图的 v7,因为它速度更快,功能更多,是使用 Bing 地图进行开发的人们使用的主要地图控件,而不是接近生命的尽头。如果您有大型应用程序需要迁移到 v7,您可以在此处找到指南:http://social.technet.microsoft.com/wiki/contents/articles/20958.migrating-bing-maps-v6-3-to-v7.aspx#Loading_a_Map

或者,您可以在此处找到 V7 的文档和资源:

https://msdn.microsoft.com/en-us/library/gg427610.aspx

https://www.bingmapsportal.com/ISDK/AjaxV7

https://bingmapsv7modules.codeplex.com/

http://blogs.msdn.com/b/rbrundritt/archive/2014/09/04/the-art-of-intellisense-three-ways-to-use-intellisense-with-bing-maps-apis.aspx