Google Maps API V3灰色区域

时间:2012-06-26 19:30:52

标签: jquery api

我安装了Google Maps API V3,但是我无法让调整大小功能正常工作。我已经把脚本显示在一个分区中,当点击一个链接时它会下降,但是,它会在两侧显示灰色区域。我已经读过你需要在脚本中显示resize函数的实例,从我能理解的内容中显示除法,但是我在实现它时遇到了麻烦。

enter image description here

这是导致除法(class =“content”)的代码:

    $(function() {
$('.action').click(function() {          
    var name = $(this).attr("name");
    var content = $('.content[name=' + name + ']');
    $('.content').not(content).hide('fast');
    content.slideToggle('fast');
});

我的地图里面有一个id为“map”的div。

  <div class="map">
      <div id="map_canvas""></div>
  </div>

我已经整晚都在网站的其他部分工作,而且目前相当分散。对不起,如果我忘记发布必要的东西来解决这个问题。

提前致谢,Bc。

2 个答案:

答案 0 :(得分:8)

您需要在Google地图上手动调整偶数调整大小。

google.maps.event.trigger(map, 'resize')

Reference

<强>更新

<script type="text/javascript"> 
// Global Variable
var map;

// This is a global Function
function initialize() 
{ 
  // This variable is scoped only for the initialize function,
  // it is not available to other functions scoped globally
  var myOptions = 
  { 
    center: new google.maps.LatLng(-34.397, 150.644), 
    zoom: 8, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
  };

  // Instead of a function scoped map variable this should be global
  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  google.maps.event.trigger(map, 'resize') 
} 
</script>

然后您可以更改为以下代码:

$(function() 
{
  $('.action').click(function() 
  {          
    var name = $(this).attr("name");
    var content = $('.content[name=' + name + ']');
    $('.content').not(content).hide('fast');
    // this uses the callback functionality
    // to only throw the trigger after the
    // animation finishes.
    content.slideToggle('fast',
      function() 
      {
        google.maps.event.trigger(map, 'resize');
      });
  });
});

答案 1 :(得分:0)

嘿,我意识到了一个快速简单的解决方法:

function initialize() {
    var mapOptions = {
        center: new google.maps.LatLng(42.365885, -71.258658),
        zoom: 16,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
    google.maps.event.trigger(map,'resize');
}

$(document).on("pageshow", "#map", function () {
    initialize();
});

使用名为“map”的页面div和名为“map-canvas”的地图div。

这似乎是在显示页面时初始化地图。这可以通过在用户打开时加载地图来降低您的应用程序速度,但它可以避免由dom和诸如此类引起的错误。这完全修复了我的phonegap + jquery mobile + google地图应用中的角落地图/灰色区域问题!