2015-08-31 62 views
-1

我有许多标记的地图。如何在调整地图容器大小后居中放大Google地图?

enter image description here

调整地图后,它看起来像这样:

enter image description here

,我想这一点:

enter image description here

我怎么能放大和中心调整大小后在标记上映射?

我有以下代码;

var map; 

var GoogleMaps = { 
    setMarkers: function(stores){ 
    map = new google.maps.Map(document.getElementById('map-canvas')); 

    $.each(stores, function (key, store) { 
     /* (..) */ 
     bounds.extend(latLng); 
    }); 

    map.fitBounds(bounds); 

    // This part is never triggered 
    google.maps.event.addDomListener(window, 'resize', function() { 
     var center = map.getCenter(); 
     google.maps.event.trigger(map, "resize"); 
     map.setCenter(center);  
    }); 
    } 
} 

HTML
当我点击图标调整大小,我添加了一个CSS类map-canvas

<div class="map-container alt-row row-spacer clearfix"> 
    <section class="column12"> 
    <div id="map-canvas" class=""></div> 
    </section> 
</div> 

我看过类似的问题(herehere),但他们不解决我的问题。

有谁知道我该如何做到这一点?你可以look at my JSFiddle here

+1

如果你downvote,至少评论为什么。 – Steven

回答

0

重新设置地图,以适应当map DIV被调整的范围应该工作:

google.maps.event.addDomListener(document.getElementById('map-canvas'), 'resize', function() { 
    google.maps.event.trigger(map, "resize"); 
    map.fitBounds(bounds); 
}); 
+0

问题是DOM侦听器从未被触发。我尝试并添加了'console.log('test')' - 但没有输出。 – Steven

+0

我添加了地图的HTML代码。我认为听众是错误的DOM元素。我尝试了'google.maps.event.addDomListener($('。map-container'),'resize','但是这也不起作用) – Steven

+0

$('。map-container')一个DOM元素或DOM元素数组? – geocodezip

0

你可以尝试的idle代替resize事件用于这一目的。

var map; 
 

 
var GoogleMaps = { 
 
    setMarkers: function (stores) { 
 
     map = new google.maps.Map(document.getElementById('map-canvas')); 
 

 
     var bounds = new google.maps.LatLngBounds(); 
 
     $.each(stores, function (key, store) { 
 

 
      var storePos = new google.maps.LatLng(store[1], store[2]); 
 

 
      var marker = new google.maps.Marker({ 
 
       position: storePos, 
 
       title: store[0], 
 
       map: map 
 
      }); 
 

 

 
      bounds.extend(storePos); 
 
     }); 
 

 
     map.fitBounds(bounds); 
 

 

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

 
     google.maps.event.addListener(map, 'idle', function (event) { 
 
      var center = map.getCenter(); 
 
      map.setCenter(center); 
 
      document.getElementById('result').innerHTML += 'Adjusted..'; 
 
     }); 
 
    } 
 
} 
 

 

 
google.maps.event.addDomListener(window, 'load', function() { 
 
    var stores = [ 
 
     ['0183 Oslo, Norja', 59.918816, 10.751814], 
 
     ['1154 Oslo, Norja', 59.873011, 10.814299], 
 
     ['0264 Oslo, Norja', 59.916751, 10.705809] 
 
    ]; 
 
    GoogleMaps.setMarkers(stores); 
 
});
html, body, #map-canvas { 
 
    height: 100%; 
 
    margin: 0px; 
 
    padding: 0px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 
 
<div id="map-canvas"></div> 
 
<div id='result'/>

+0

谢谢,我不能让它工作,尝试使用'resize'和'idle'。你看看我的小提琴?http://jsfiddle.net/d7fykbzm/6/ – Steven

相关问题