在Firefox中没有定义VEmap

时间:2015-04-14 09:53:52

标签: asp.net-mvc-3 bing-maps

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

在loadMap()函数中,我将对象初始化为VEMap。它在IE和Chrome中运行良好,但在Firefox中它提供了" VEmap未定义" 错误。什么是可能的问题。我该如何解决?。

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)
}

1 个答案:

答案 0 :(得分:1)

看起来您正在尝试使用Bing Maps 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函数。你可以做几件事来处理这个问题。一个是确保地图脚本在你的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