2013-08-26 48 views
57

Tôi đang cố gắng để có được bản đồ google đáp ứng và thay đổi kích thước trong khi giữ trung tâm của nó khi cửa sổ thay đổi kích thước. Tôi đọc câu hỏi chồng khác liên quan như:Google maps responsive resize

Responsive Google Map?Center Google Maps (V3) on browser resize (responsive)

từ đống câu hỏi thứ hai I got a link which helps me with part of the code nhưng tôi vẫn không có may mắn. Đây là mã tôi đang sử dụng, khi tôi thay đổi kích thước cửa sổ, các bản đồ không thay đổi kích thước ở tất cả

function initialize() { 
     var mapOptions = { 
     center: new google.maps.LatLng(40.5472,12.282715), 
     zoom: 6, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("map-canvas"), 
       mapOptions); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
    google.maps.event.addDomListener(window, "resize", function() { 
    var center = map.getCenter(); 
    google.maps.event.trigger(map, "resize"); 
    map.setCenter(center); 
    }); 

html

<div id="map-canvas"/> 

css

html { height: 100% } 
body { height: 100%; margin: 0; padding: 0 } 
#map-canvas { height: 100% } 
+5

Câu hỏi của bạn đã trả lời bài viết của tôi! Cảm ơn! –

+0

@ GuillermoGutiérrez cái nào? – nilon

+0

@nilon Tôi chưa xuất bản nó, nhưng đó là về cách đặt trung tâm bản đồ trong Google Maps bằng cách sử dụng API Javascript. –

Trả lời

100

Di chuyển biến bản đồ của bạn vào một phạm vi mà người nghe sự kiện có thể sử dụng nó. Bạn đang tạo bản đồ bên trong hàm initialize() của bạn và không có gì khác có thể sử dụng nó khi tạo theo cách đó.

var map; //<-- This is now available to both event listeners and the initialize() function 
function initialize() { 
    var mapOptions = { 
    center: new google.maps.LatLng(40.5472,12.282715), 
    zoom: 6, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map-canvas"), 
      mapOptions); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 
google.maps.event.addDomListener(window, "resize", function() { 
var center = map.getCenter(); 
google.maps.event.trigger(map, "resize"); 
map.setCenter(center); 
}); 
+0

Rực rỡ, điều này chỉ hoạt động hoàn hảo, có cách nào chúng ta thêm thay đổi vào thu phóng khi chúng ta thay đổi kích thước cửa sổ không? –

+1

Có, bạn có thể gọi map.setZoom (4); hoặc bất kỳ mức thu phóng nào bạn cần ngay sau khi gọi map.setCenter(). – rsnickell

+0

có chỉ cần thử và nó là tốt, nhưng những gì về việc -1 hoặc +1, tôi có nghĩa là, tự động thêm hoặc loại bỏ phóng to? –