0

上的许多地图我有手风琴(twitter-bootstrap),每个地图上都有。 在foreach中生成手风琴块。地图生成为局部视图,该视图使用经纬度和块ID进行建模。谷歌地图js api。页面

它调用的foreach:

@if (item.Latitude != null) 
{ 
    <p>Map:</p> 
    <div class="map-margin"> 
     @{Html.RenderAction("Map", "Default", new {model = item});} 
    </div> 
} 

和行动返回这个局部视图:

@model MPS.Administration.Models.ReportModel 

<div id="[email protected]()" style="width: 470px; height: 270px;"></div> 

<script type="text/javascript"> 
    $('#[email protected]').ready(function() { 
     initialize(); 
    }); 

    function initialize() { 

     var lat = @Model.Latitude; 
     var lng = @Model.Longitude; 

     var latlng = new google.maps.LatLng(@Model.Latitude, @Model.Longitude); 
     debugger; 

     var mapOptions = { 
      center: latlng, 
      zoom: 17, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 

     var name = 'map-canvas-' + @Model.Id.ToString(); 
     var map = new google.maps.Map(document.getElementById(name),mapOptions); 

     debugger; 

     // create a marker 
     var image = '../Content/Images/map_icon.png'; 
     var marker = new google.maps.Marker({ 
      position: latlng, 
      map: map, 
      icon: image 
     }); 
    } 
</script> 

在布局中,我有JS API的脚本。

现在我有4块,但只有最后有地图块(它只有google标志和灰色背景没有地图:()在调试器中,我看到lat和lng是相同的所有4倍。问题是我如何调用initialize()map。请帮我解决这个问题

回答

0

地图si只显示在可见的div中,对于其他你只能看到一个灰色的背景,在某些情况下只有一小部分

要在每个块中查看地图,您应该使用map.resize()或更高版本,每次显示新地图时都使用genaration函数。初始化tipcally仅在调用时才会调用窗户被创建并且这种情况下地图不可见失败