2010-07-19 41 views
5

Có cách nào dễ dàng để tìm hộp giới hạn của một polyline bằng API Google Maps v3 không? Tôi đang làm việc trên một dự án mà tôi cần cập nhật giới hạn khi dữ liệu được thêm vào và xóa khỏi bản đồ. Điều này là khá dễ dàng bởi chỉ cần làm bd.extend (điểm), nơi bd là đối tượng bị ràng buộc và điểm là một đối tượng LatLng. Vấn đề là khi tôi bắt đầu loại bỏ dữ liệu tôi muốn nó thay đổi giới hạn và phóng to lại. Có bất kỳ chức năng được xây dựng nào có thể làm điều này hoặc tôi sẽ cần phải viết một cái gì đó cho bản thân mình?Lấy các giới hạn của một polyine trong API Google Maps v3

Trả lời

4

v2 API có phương pháp GPolyline.getBounds() để thực hiện chính xác việc này. Tuy nhiên, dường như không có phương pháp tương đương trong số v3 API.

Bạn có thể muốn xử lý điều này bằng cách ghi đè thuộc tính changed của PolylineMVCObject để được thông báo khi đối tượng thay đổi trạng thái. Sau đó, bạn có thể tính toán hộp giới hạn bằng phương pháp LatLngBounds.extend() mà bạn đã đề xuất.

Tôi nghĩ rằng Google cố ý bỏ qua các phương pháp như vậy từ API v3 trong nỗ lực giữ API nhẹ. Một thiếu sót tương tự discussed a couple of days ago on Stack Overflow là phương pháp GMap2.clearOverlays().

7

Mở rộng giải pháp của oenpelli, đây là phương thức getBounds() mở rộng mà tôi đang sử dụng để tạo lại chức năng từ API V2. Điều này làm việc hoàn hảo trong dự án của tôi.

google.maps.Polyline.prototype.getBounds = function() { 
    var bounds = new google.maps.LatLngBounds(); 
    this.getPath().forEach(function(item, index) { 
     bounds.extend(new google.maps.LatLng(item.lat(), item.lng())); 
    }); 
    return bounds; 
}; 

Chỉ cần nhớ rằng điều này cần phải được thêm SAU khi javascript API được tải, vì vậy trong phương pháp init của bạn.

Các vấn đề liên quan