2015-05-09 75 views
-1

我已经为我的谷歌地图下面的代码对象:谷歌地图resize在不居中

geocoder.geocode({ 'address': googleAddress}, function (results, status){ 
     if (status == google.maps.GeocoderStatus.OK) { 
      var mapOptions = { zoom: 16, center:results[0].geometry.location, mapTypeId:google.maps.MapTypeId.ROADMAP} 
      map = new google.maps.Map(element[0], mapOptions); 
      var marker1 = new google.maps.Marker({ 
        position: results[0].geometry.location, 
        map: map, 
        title: googleAddress 
       }); 
      google.maps.event.addDomListener(window, "resize", function() { 
       google.maps.event.trigger(map, "resize"); 
       map.setCenter(results[0].geometry.location); 
      }); 
     } 
    }) 

此元素的“显示:无”里面开始的div,所以当我火了点击事件,打开了DIV,我也火了窗口事件“调整大小”(加载整个地图...你可以阅读关于为什么要解雇调整大小别处这些问题):

showMap = function(){ 
     if ($('#map').hasClass('hide')){ 
      $('#map').removeClass('hide'); 
      $window.dispatchEvent(new Event('resize')); 
     } 
     else{ 
      $('#map').addClass('hide'); 
     } 
    }; 

以此为据可以作为显示在地图上完整的div,问题是我的中心是错误的。我有一个标记位于传入的地址(已验证标记位于正确的位置),但标记离开了屏幕(刚刚离开左上角)。如果缩小一次点击,标记就在左上角。

我也都试过(没有运气)

   google.maps.event.addDomListener(window, "resize", function() { 
        var center = map.getCenter(); 
        map.setCenter(center); 
       }); 
+0

请提供证明此问题的[最小,完整,测试和可读示例](http://stackoverflow.com/help/mcve)。 – geocodezip

回答

0

当你集中在地址解析结果的图,它有大小为零,即把中心的左上角。当您运行此功能时:

google.maps.event.addDomListener(window, "resize", function() { 
    var center = map.getCenter(); 
    map.setCenter(center); 
}); 

您并未改变中心。如果您希望中心的地理编码结果,请在引发地图大小调整事件后保留对其的引用(或标记),并将该位置放在中心。