2010-02-03 59 views
6

Tôi đang sử dụng API Google Maps phiên bản 2 và tôi muốn có thể in bản đồ giống như cách Google thực hiện trên trang Bản đồ của nó.Cách xem Google Maps ở chế độ "in"?

Bạn có thể nhấp vào biểu tượng máy in nhỏ và nó tạo cửa sổ bật lên mới với cùng một bản đồ nhưng tất cả những thứ không thể in được (như các điều khiển) được lấy ra. Tôi biết rằng họ sử dụng @media print để đạt được hiệu ứng đó khi bạn nhấn "Xem trước bản in" hoặc "In" trong trình điều hướng. Tuy nhiên, cửa sổ bật lên không ở chế độ in.

Có cách nào để thực hiện thủ thuật ma thuật mà họ đang thực hiện, chẳng hạn như đặt loại phương tiện hiện tại thành "in"? Hoặc hoặc họ gian lận và thiết lập một phong cách CSS tùy chỉnh gian lận?

Tôi có plugin Silverlight và Google Map trên cùng một trang và tôi muốn có thể tạo cửa sổ bật lên chỉ chứa bản đồ sẵn sàng để in (như Google đang làm).

Nhờ có http://abcoder.com/google/google-map-api/print-button-for-google-map-api/ Tôi biết cách lấy nội dung HTML nhưng tôi chỉ có thể lấy nội dung với tất cả các điều khiển, v.v. (mà tôi không muốn).

Mọi trợ giúp sẽ được đánh giá cao.

Trả lời

6

Google bản đồ đặt một lớp gmnoprint trên tất cả các yếu tố mà họ không muốn in .. vì vậy thiết lập này để display:none trong file css in của bạn hoặc cửa sổ popup sẽ ẩn chúng ..

.gmnoprint{ 
    display:none; 
} 

Of'course điều này sẽ ẩn bất cứ điều gì google coi như không-cho-in ấn .. Nếu bạn muốn chọn các mục khác, bạn sẽ phải bằng cách nào đó phân tích mã html của họ: (

+0

Vâng, cuối cùng tôi đã nhận thấy rằng bản thân mình khi đang chơi với các công cụ Nhà phát triển trong IE. Tôi đã thêm phong cách và nó hoạt động như mong đợi :) – R4cOON

+0

Cảm ơn sự giúp đỡ, điều này đã làm một phần của những gì tôi cần. Nó cho thấy bản đồ, nhưng các polylines tôi có trên nó vẫn còn ẩn, bất kỳ ý tưởng về cách để có được những người để hiển thị? – MikeSchem

1

Một cách tiếp cận hữu ích khác để in bản đồ google là sử dụng Google Static Maps API. có thể tạo hình ảnh tĩnh dựa trên một loạt các thông số hiển thị (vị trí, mức thu phóng, kích thước, đánh dấu vv ...) và bao gồm hình ảnh đó trong trang xem bản in của bạn.

+1

Đó không phải là một lựa chọn cho tôi. Tôi có rất nhiều lớp phủ tùy chỉnh trên bản đồ và tôi không hoàn toàn ưa thích việc sao chép logic tạo để có thể in trong khi tôi có một hình ảnh bản đồ hoàn hảo phù hợp. – R4cOON

+0

Đủ công bằng: P ... Giới hạn của API tĩnh là bạn không thể thực hiện tất cả các dấu tùy chỉnh, v.v ... Vì vậy, nếu bạn có nhiều lớp phủ, không phù hợp với bạn. +1 về câu hỏi mặc dù :) – RedBlueThing

3

Tôi đã gặp sự cố tương tự với lớp phủ hình ảnh bản đồ tùy chỉnh được thêm qua kml. Gaby của đầu lên về lớp học gmnoprint là chìa khóa. Trong trường hợp của tôi, div với lớp gmnoprint được áp dụng là phụ huynh trực tiếp của phần tử img của tôi đã biến mất. Về cơ bản tôi đã tạo liên kết "tạo lớp phủ có thể in":

$("#printable-map").click(function() { 
     if($(this).text() == "Include overlay when printing") { 
      $(this).text("Exclude overlay when printing"); 
      $("[src$=blah.png]").parent().removeClass("gmnoprint"); 
     } else { 
      $(this).text("Include overlay when printing"); 
      $("[src$=blah.png]").parent().addClass("gmnoprint"); 
     } 
    }); 

Đã thử nghiệm và hoạt động trong Safari, FF và Chrome.

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