虚拟地球 - 仅渲染地图

时间:2014-09-02 13:38:02

标签: javascript css asp.net bing-maps virtual-earth

我正面临这个奇怪的问题。 bing map不会显示在我的页面上,因为所有控件甚至pushpins都会正确显示 我google了很多,同样的功能在我的其他项目中也很有效

enter image description here

我怀疑dev.virtualearth.net的引用有问题,或者我错过了什么

这是我的代码: ASCX(位于动态生成的aspx的内容占位符内):

<script charset="UTF-8" type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=de-de">
</script>

<div>
       .
       .
       .
       <div id="bigMapContainer">
                <div id="eventMap">
                </div>
       </div>

</div>

代码背后:

string script = @"
            function GetVEMap() {
               map = new VEMap('eventMap');
               map.SetDashboardSize(VEDashboardSize.Small);
               map.LoadMap();
               DisplayEventsOnMap();
            }

   function DisplayEventsOnMap() {
                var eventMapLayer = new VEShapeLayer();
                eventMapLayer.Id = 'eventMapLayer';
                var points = null;
                       .
                       .
                       .
                //Code to get the data for pin display etc
                       .
                       .
               map.AddShapeLayer(eventMapLayer);
               map.SetMapView(eventMapLayer.GetBoundingRectangle());
               map.SetZoomLevel(15);

              });
            }

            $(window).load(function() {
                       GetVEMap();
                      }
            );";

     ScriptManager.RegisterStartupScript(this, typeof(Page), "MapDisplay", script, true);

CSS:

   #bigMapContainer {display: block;}
   #eventMap { position: absolute; width: 550px height: 500px; }

我在母版页面上添加了一些与地图无关但可能与我的地图实现发生冲突的参考文献(?)

<script type="text/javascript" src="/js/modernizr-2.0.6.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="/js/script.js"></script>
<script type="text/javascript" src="/js/superfish.js"></script>
<script type="text/javascript" src="/js/jquery.flexslider-min.js"></script>
<script type="text/javascript" src="/js/jquery.ui.totop.js"></script>
<script type="text/javascript" src="/js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="/js/jquery.responsivemenu.js"></script>
<script type="text/javascript" src="/js/client.js"></script>
<script type="text/javascript" src="/js/jquery-ui.js"></script>

非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

首先,看起来你指的是几年前已弃用的Virtual Earth 6.2,现在指向v6.3。那说v6.3真的很旧,不推荐用于新的开发项目。如果这是一个新项目,您应该使用Bing Maps V7,这是Bing Maps的最新版本(虚拟地球在2009年更名为Bing Maps)。 V7速度更快,功能更多,而且体积更小。

假设这是一个刚开始出现问题的现有项目。查看代码,我立即注意到的一件事是加载地图时没有指定凭据。这是必需的。在调用LoadMap方法之前,您应该有一行代码:

map.SetCredentials('YOUR_BING_MAPS_KEY');

如果您没有Bing地图密钥,可以在Bing Maps门户网站中创建Bing地图帐户:http://bingmapsportal.com以下是创建密钥的一些文档:http://msdn.microsoft.com/en-us/library/ff428642.aspx

接下来,eventMap div,你为此指定任何样式吗?它应该具有指定为CSS类或内联样式的位置,宽度和高度。如果没有这个,你会在某些浏览器中得到奇怪的渲染。

答案 1 :(得分:1)

经过大规模研究后,我发现问题出在css上。谢谢@rbrunditt的帮助

http://ecn.dev.virtualearth.net/mapcontrol/v6.3/css/bin/6.3.20091207154938.04/de/mapcontrol.css内的{p> mapcontrol.css有一个地图容器类.MSVE_Map,它具有属性position:absolute,使得切片显示在屏幕外。

我已经将课程重写为position:relative,这实际上解决了这个问题。