Nếu bạn muốn lưu nhiều hơn google API tĩnh cho phép (chẳng hạn như lớp phủ tùy chỉnh được vẽ lên nó quá phức tạp/lớn để đi qua chuỗi truy vấn), bạn có thể xuất vùng chứa bản đồ vào canvas bằng cách sử dụng cái gì đó như html2Canvas (http://html2canvas.hertzen.com/), sau đó chuyển đổi nó thành một URL dữ liệu và làm với nó như bạn muốn.
function saveMapToDataUrl() {
var element = $("#mapDiv");
html2canvas(element, {
useCORS: true,
onrendered: function(canvas) {
var dataUrl= canvas.toDataURL("image/png");
// DO SOMETHING WITH THE DATAURL
// Eg. write it to the page
document.write('<img src="' + dataUrl + '"/>');
}
});
}
Tôi tin rằng bạn cần đặt tùy chọn useCORS thành true để cho phép chức năng tải xuống hình ảnh từ google.
Nhược điểm của phương pháp này là nó có thể giúp bạn với khoảng một megabyte dữ liệu đang ngồi trên trang của bạn.
Tôi đã cố gắng sử dụng phương pháp này để xuất bản đồ sang hình ảnh để tải xuống, nhưng đã gặp sự cố về cách tải hình ảnh này cho người trong trang viên đẹp. Bạn có thể sử dụng một siêu liên kết có thuộc tính href được đặt thành dataUrl mà bạn đã tạo, nhưng tên tệp không thể được đặt trừ khi bạn sử dụng các thuộc tính HTML như download = "filename.png", đã gây ra sự cố trên các trình duyệt khác nhau đối với tôi. Cách tiếp cận khác là đăng dataUrl lên máy chủ để máy chủ đưa ra món ăn cần thiết, nhưng việc tải lên một hình ảnh lớn chỉ để tải xuống lại có vẻ như là một cách lạ để xử lý việc này.
Tôi vừa phát hiện ra rằng bản đồ tĩnh cũng có thể vẽ các đường kẻ. Các điểm được gửi qua URL. Ví dụ. ? http: //maps.google.com/staticmap trung tâm = 52.09259895866942,4.310945570468903 & zoom = 17 & size = 300x200 & maptype = vệ tinh & key = 12345 & format = jpg & path = rgba: 0xff0000ff, trọng lượng: 5 | 52.09254128161833,4.309733211994171 | 52.092371545864,4.309856593608856 | 52.092503379515605,4.31052178144455 | 52.092661579383304,4.310438632965088 Điều này vẫn không phải là giải pháp bởi vì nếu tôi có 50 điểm để được vẽ thành các dòng, tôi sẽ nhận được một URL rất lớn sẽ không được chấp nhận. Bất kỳ ý tưởng nào khác? – Dante
50 điểm trên bản đồ tĩnh không phải là rất nhiều. Bạn có 8K để chơi với trên URL đó, do đó, đi hạt! –
đây là [snashotcontrol 2.0] (http://code.google.com/p/snapshotcontrol/) – Timeless