2011-11-18 17 views

Trả lời

38

Theo mặc định, bản đồ tập trung và thu nhỏ để các khung giới hạn của các nội dung của lớp kml.

Bạn có thể thay đổi hành vi mặc định bằng thuộc tính preserveViewport của đối tượng google.maps.KmlLayerOptions. Nếu bạn đặt nó thành true, bản đồ sẽ không được căn giữa và thu phóng.

Trong ví dụ, sử dụng:

var nyLayer = new google.maps.KmlLayer(
        'http://www.searcharoo.net/SearchKml/newyork.kml', 
        { 
         suppressInfoWindows: true, 
         map: map, 
         preserveViewport: true 
        }); 

Nếu bạn muốn tập trung và phóng to các nội dung của lớp kml sau, sử dụng:

var bounds = nyLayer.getDefaultViewport(); 
map.fitBounds(bounds); 

EDIT:

Nếu bạn muốn bản đồ luôn được căn giữa (nhưng không được phóng to) khi lớp kml được tải, hãy sử dụng defaultviewport_changed sự kiện của google.maps.KmlLayer o bject. Bạn phải đặt trung tâm bản đồ thành trung tâm của chế độ xem mặc định của lớp kml. Sự kiện này được kích hoạt khi nội dung của lớp kml được nạp và khung nhìn mặc định của nó được tính toán.

google.maps.event.addListener(nyLayer, 'defaultviewport_changed', function() { 
    var bounds = nyLayer.getDefaultViewport(); 
    map.setCenter(bounds.getCenter()); 
}); 
+0

Xin cảm ơn, nhưng khi tôi đặt mức thu phóng cao hơn là 18, điểm đánh dấu không hiển thị hoặc tôi cần căn giữa chúng để hiển thị, làm cách nào để đảm bảo các điểm đánh dấu đang xuất hiện trong bản đồ gần trung tâm – Mike

+0

Tôi đã cập nhật câu trả lời. Bây giờ, bạn có thể lấy bản đồ ngay lập tức tập trung vào vị trí của các điểm đánh dấu trong lớp kml. – Tomik

+0

Thực ra tôi có một số điểm đánh dấu trên bản đồ tùy thuộc vào vị trí, Khi tải trang, tôi có thể thấy tất cả các điểm đánh dấu và nếu tôi nhấp vào một nơi nào đó gần một thị trường cụ thể, tôi muốn nó phóng to xung quanh. Ngoài ra tôi đã cập nhật mã, nhưng có vẻ như nó đang lấy tập tin sai js: http://jsfiddle.net/WPXWX/1/ – Mike