2012-03-21 77 views
11

Có cách nào để tôi có thể sử dụng tệp KMZ trong Google Maps không? Tệp KML của tôi khoảng 10,7MB nên tệp không tải trên Google Maps. Tệp KMZ có dung lượng khoảng 2MB. Cách duy nhất tôi thấy nó là có nhiều KML nhưng nó quá nhiều công việc. Tôi có thể sẽ làm điều đó, nhưng chỉ tự hỏi liệu KMZ có thể được sử dụng không?Sử dụng Tệp KMZ trong Google Maps

Cảm ơn.

Trả lời

16

Có, bạn có thể chỉ định một tập tin KMZ sử dụng API Maps:

var kmzLayer = new google.maps.KmlLayer('http://www.kmzlinks.com/redirect.asp?id=110&file=PalmIsland%2Ekmz'); 
kmzLayer.setMap(map); 

Trong trường hợp cụ thể của bạn, kịch bản của bạn sẽ trông như thế này:

<script type="text/javascript"> 
    function initialize() { 
    var myOptions = { 
     center: new google.maps.LatLng(58.33, -98.52), 
     zoom: 11, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    var kmzLayer = new google.maps.KmlLayer('http://xeenat.com/energy/data.kmz'); 
    kmzLayer.setMap(map); 
    } 
</script> 

NHƯNG - KML của bạn là quá lớn . Mặc dù nó được nén xuống 2MB dưới dạng KMZ, Maps xem xét kích thước sau khi được giải nén và trong trường hợp của bạn lớn hơn 10MB. Hãy thử cắt giảm một chút - nếu bạn thay thế URL KMZ của mình bằng URL trong đoạn đầu tiên ở trên, URL này sẽ hoạt động. Có vẻ như bạn sẽ cần phải sử dụng nhiều tệp KML. Có lẽ bạn có thể tải KMZ vào Google Earth, sau đó lưu từng tỉnh thành dưới dạng tệp riêng của mình (nhấp chuột phải vào thư mục trong tab "Địa điểm" của Earth và chọn Lưu dưới dạng ...)

+0

trong mã của bạn, bản đồ không được khai báo là một biến toàn cầu, vì vậy khi bạn gọi nó, nó đi kèm với một ngoại lệ: Uncaught ReferenceError: bản đồ không được định nghĩa. Bạn cần phải đặt var map; trước khi khởi tạo hàm() { –

+0

Có vẻ như KMZ sẽ không trợ giúp trong trường hợp này - vẫn có giới hạn kích thước trên KML chưa nén từ KMZ: https://developers.google.com/kml/documentation/mapsSupport –

+1

@MikeJeffrey Tôi rất mới với JavaScript, và tôi đã làm những gì bạn nói nhưng bây giờ bản đồ của tôi không tải. Tôi thực sự nhận được toàn bộ đoạn mã đó từ tài liệu v3 của Google Maps. – mapr

2

Có, bạn có thể chỉ định KMZ file một cách chính xác mà bạn sẽ xác định tập tin KML bạn thậm chí có thể đặt cả vào thông báo thời như thế nào có gì thay đổi ngoại trừ tên và tập tin biến mở rộng:

var kmz_Layer = new google.maps.KmlLayer('http://www.kmzlinks.com/redirect.asp?id=110&file=PalmIsland%2Ekmz'); 
var kml_Layer = new google.maps.KmlLayer('http://www.kmzlinks.com/redirect.asp?id=110&file=PalmIsland%2Ekml'); 
kml_Layer.setMap(map); 
kmz_Layer.setMap(map);