Bing地图没有使用asp.net mvc显示位置

时间:2016-02-17 14:06:55

标签: javascript asp.net-mvc typescript bing-maps

当我实现Bing地图以查看它工作正常时,我将相同的代码移动到Popup(模态)窗口,其显示如下:  Bing map is not showing location

我正在使用:

<script charset="UTF-8" type="text/javascript" 
                src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-us">
</script>
<div id="myMap" 
         style="position: relative!important;width:400px;height:400px;" 
         class="span9">
</div>

和:

$m(document).ready(function () {
    var map = null;
    var myMap = document.getElementById("myMap");
    myMap.style.display = '';
    map = new VEMap('myMap');
    map.SetDashboardSize(VEDashboardSize.Large);
    map.LoadMap(new VELatLong(43.79488907226601, -121.014), 10);//, VEMapStyle.Road, false, VEMapMode.Mode2D, true, 1);//oint, zoom, style, fixed, mode, showSwitch, tileBuffer
    //Add pushpin
    var pin = new VEShape(VEShapeType.Pushpin, new VELatLong(43.79488907226601, -121.014));
    pin.SetCustomIcon(null);
    pin.SetTitle('Test');
    pin.SetDescription("<br/>" + "<strong>Desp : Latitude:</strong>" + "<br/>" + "<strong>Longitude:</strong>");
    map.AddShape(pin);
    map.ShowDashboard();

});

当我将代码移到弹出窗口时,请告诉我出了什么问题

1 个答案:

答案 0 :(得分:1)

如果有人有兴趣......

我最近遇到了类似的问题。 我将Bing Maps v7中的代码移动到Bing Maps v8,并将Bing Maps v7中的javascript代码转换为Bing Maps v8 TypeScript。

对于版本7,我的Bing Map在模式体中使用此代码在引导模式中可见:

<div id="mapDivGeocode" style="height:250px;position:relative;"></div>

类似的东西:

...
<div class="modal-body">
  <form id="...">
    <div id="mapDivGeocode" style="height:250px;position:relative;"></div>
  </form>
</div>
...

这在Bing Maps v7中完美运行,而不是Bing Maps v8,这不再适用。

出于某种原因,它正在重置或忽略我的身高:250px。 一个解决方案是围绕它包装另一个div,如下所示:

<div style="height: 250px;">
      <div id="mapDivGeocode" style="position:relative; height:250px;"></div>
</div>

所以Bing Maps v8的bootstrap模式中的代码现在看起来像这样:

...
<div class="modal-body">
  <form id="...">
     <div style="height: 250px;">
        <div id="mapDivGeocode" style="position:relative; height:250px;"></div>
     </div>
  </form>
</div>
...

额外的附加信息:如果您的视图不可见,因此未在Bing Maps v8中正确设置,您的地理编码将失败并显示如下消息:

  

“errorDetails”:[“一个或多个参数无效。”,“userMapView:此参数值超出范围。”],“resourceSets”:[],“statusCode”:400,“statusDescription”: “糟糕的要求”

请注意,此信息在Microsoft.Maps.Search.IGeocodeRequestOptions的errorCallback中不可见,我不得不使用Microsoft Edge的F12开发人员工具并转到[网络]选项卡,选择向bing地图发出的请求并选择[身体]&gt; [响应主体]位于开发人员工具的右侧。你会看到errorDetails :-)(而不是在errorCallback中......)

在我的模态中正确显示地图后,我的地理编码不再调用errorCallback,并且Microsoft.Maps.Search.IGeocodeResult的回调再次开始工作!