Mam mapę, którą chcę wydrukować, gdy użytkownik otworzy niektóre warstwy. Warstwy to geoserver wms, a warstwa bazowa to OSM.
Wiem, że geoserver ma moduł drukowania (który jest zainstalowany i działa, ponieważ otrzymuję odpowiedź z geoserver / pdf / info.json? Var = printCapabilities
Nie rozumiem jednak, w jaki sposób używam go do drukowania bieżącej mapy z widocznymi warstwami.
Patrzyłem na przykład GeoExt (mapfish), ale to nie pomogło mi zrozumieć.
Aktualizacja 1: Wygenerowałem następujący adres URL według kodu:
http://77.235.53.170/geoserver/pdf/print.pdf?spec={%22units%22:%22degrees%22,%22srs%22:%22EPSG:4326%22,%22layout%22:%22A4%22,%22dpi%22:%22300%22,%22mapTitle%22:%22This%20is%20the%20map%20title%22,%22comment%22:%22This%20is%20the%20map%20comment%22,%22resourcesUrl%22:%20%22http://77.235.53.170/img%22,%22layers%22:[{%22baseURL%22:%22http://77.235.53.170/geoserver/Lehavim/wms%22,%22opacity%22:1,%22singleTile%22:true,%22type%22:%22WMS%22,%22layers%22:[%22%D7%A7%D7%95%20%D7%9E%D7%99%D7%9D%22],%22format%22:%22image/jpeg%22,%22styles%22:[%22%22]}],%22pages%22:[{%22center%22:[3875254.1134954,3680894.557955],%22scale%22:32000,%22rotation%22:0}]}
i dostaję pusty plik PDF (tylko z tytułem) ... Co może być nie tak?
openlayers-2
geoserver
printing
Alofind
źródło
źródło
Odpowiedzi:
Proces drukowania Geoserver obejmuje dwa etapy.
Najpierw po stronie serwera musisz skonfigurować plik yaml o nazwie config.yaml. Przejrzyj szczegółową dokumentację na stronie dokumentacji modułu drukującego MapFish .
Po wykonaniu tej czynności drugi krok jest po stronie klienta . Biorąc pod uwagę, że używasz openlayers dla frontonu, aby uzyskać listę widocznych warstw, będziesz potrzebować prostej pętli z kontrolą widoczności, np.
Teraz musisz przekazać to do adresu URL wydruku. na przykład
Oczywiście będziesz musiał wprowadzić odpowiednie zmiany w adresie URL. Następnie przypisz ten adres URL do przycisku drukowania, a następnie wywołaj funkcję kliknięcia pragmatycznie.
I zrobione!!!
źródło
Jeśli jesteś użytkownikiem Chrome, szybki i prosty sposób to Google Cloud Print , ale jest on przeznaczony do drukowania całej strony internetowej, ale możesz użyć ekranu pełnoekranowego i wydrukować go.
Kolejną zaletą jest to, że możesz drukować na podłączonej drukarce w dowolnym miejscu, w którym masz zarejestrowane drukarki na swoim koncie, dzięki czemu drukowanie mobilne jest dostępne na komputerze stacjonarnym z podłączoną drukarką lub dowolnym komputerem i drukarką zarejestrowaną na koncie Google. Obsługuje starsze drukarki i drukarki sieciowe specjalnie zaprojektowane do współpracy z Google Cloud Print.
źródło
Myślę, że idziesz właściwą ścieżką z geoserver i wtyczką mapfish. To jest to, czego używam do drukowania dla moich warstw podstawowych WMS i OSM. Należy jednak pamiętać o jednej rzeczy, jeśli zamierzasz użyć tej metody. Jeśli chcesz poprawnie wydrukować wydrukowane mapy, nie będziesz mógł używać OSM bezpośrednio z tego miejsca, ponieważ projekcja, w której się znajduje, nie jest poprawnie skalowana. Musisz załadować dane do bazy danych i użyć innego SRS.
Powiedziawszy to, dam ci krótkie podsumowanie, w jaki sposób rozpocząć drukowanie przy użyciu wtyczki mapfish w geoserver.
Najpierw musisz pobrać wtyczkę mapfish i zainstalować ją w instalacji geoser. Kiedy po raz pierwszy to zrobiłem, ten krok nie wydawał się być nigdzie udokumentowany w tutorialach ani prezentacjach do wydrukowania, więc minęło trochę czasu, zanim się zorientowałem. Trudno też było znaleźć wtyczkę.
Ta strona pokazuje instrukcje z Geoserver dotyczące instalacji wtyczki i korzystania z niej. Zasadniczo rozkłada się na:
Ok, teraz, gdy wtyczka jest zainstalowana, musisz ją skonfigurować, modyfikując plik config.yaml, o którym mówi „thelastray” w odpowiedzi powyżej. Plik powinien zostać utworzony po ponownym uruchomieniu GeoServer i znajduje się w następującej lokalizacji:
Jest na to wiele opcji, więc musisz przejrzeć dokumentację na stronie Mapfish tutaj.
Następnym krokiem jest utworzenie aplikacji korzystającej z tej wtyczki do drukowania. Przykład aplikacji używającej tej konfiguracji do drukowania za pomocą GeoEXT można znaleźć tutaj . Jeśli chcesz zobaczyć więcej przykładów, zajrzyj na tę stronę.
Mam nadzieję, że to pozwoli Ci zacząć.
źródło
Proszę sprawdzić http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/exportMapCanvas.html i mam nadzieję, że to pomoże.
źródło
„Mapa na papier” może być więcej niż prosta „dopasuj obraz do strony”… Historia kartografii została napisana na papierze, a dziś niektóre produkty kartograficzne wciąż wymagają papieru.
Dzisiaj papier jest w formacie PDF - zapomnij EPUB lub „drukuj przez przeglądarkę”, czekają na standardy, CSS3 itp., Są na przyszłość ... A dobrej jakości (papierowe) produkty kartograficzne potrzebują XSLT-FO lub CSS2 . Dzięki (X) HTML + CSS2 możesz stworzyć dobry plik PDF (!) ... Ten HTML nie jest przeznaczony do przeglądarki, tylko do narzędzia do generowania plików PDF (które generuje pliki PDF w locie lub offline).
Jedynym profesjonalnym „narzędziem do generowania dobrych plików PDF za pomocą HTML + CSS2”, które znam, jest PrinceXML : Testowałem z „obrazami w locie” (SVG, JPG i PNG) z protokołów WFS i WMS oraz z OpenLayers , i to działa tak dobrze (!).
źródło
Właśnie to zrobiłem:
Pobrano html2canvas.js ( https://github.com/niklasvh/html2canvas/releases )
Pobrano html2canvas-proxy.php ( https://github.com/adjdred/html2canvas-proxy-php )
Zainstalowałem je zarówno na moim serwerze + odnośnik do .js w tagu i na moim JS:
Daje mi .png bieżącej mapy - z którą mogę zrobić cokolwiek - zajmuje mniej niż sekundę na moim komputerze.
Mini
źródło
Możliwe jest drukowanie bezpośrednio w Internecie za pomocą posiadanych narzędzi, ale wymagałoby to pewnych umiejętności, których nie posiadasz.
Moim rozwiązaniem byłoby skorzystanie z QGIS . Instalując wtyczkę OpenLayers w QGIS, możesz uzyskać dostęp do żądanej warstwy OSM i dodać warstwę WMS Geoserver (dodając warstwę WMS).
Następnie możesz drukować z pożądanym wyglądem i nie tylko za pomocą tego potężnego narzędzia. Wszystkiego najlepszego, Tudor
PS. Wiem, że moja odpowiedź prawdopodobnie nie jest taka, jakiej się spodziewałeś, ale zadziała i zapewni więcej możliwości dostosowywania drukowania niż jakiekolwiek rozwiązanie internetowe.
źródło