OpenLayersで地図の印刷を行う

はじめに

前回は、DevExpress社のASPxDocumentViewerクラスを利用しOpenLayersの地図の印刷処理を作成したが、任意の位置に地図が動かせないため、javascriptベースに、印刷処理を実装してみた。

処理概要は以下の通り

印刷ボタンクリックの際、印刷プレビュー画面を表示させる。
印刷プレビュー画面では、画面表示時に、OpenLayersのmapオブジェクトを再度作成し、地図を動かせるようにした。

PrintDialog.ascx

印刷プレビュー画面では、ol-extのPrintDialogクラスを参考にしたが、PrintDialogの画面ではなくは、DevExpress社のASPxPopupControlクラスを利用する。

report.js

印刷プレビュー処理では、ol-extのPrintDialogクラスを参考にしたが、PrintDialogは、凡例の表示は出力されていなかったので、印刷時に、凡例のイメージを作成し、地図画像に描画する処理を追加した。
また、コンパス画像は独自のsvg画像を用意し描画させている。

印刷プレビュー画面①

前回は、画面の地図から画像を生成しており、印刷画面が切れてしまう場合があったが、今回は、プレビュー画面のサイズに応じて、地図画面サイズをリサイズしているため、印刷画面が切れることがなくなった。

印刷プレビュー画面②

タイトル、方位記号、凡例をクリックすると、地図に出力される。

ブラウザの印刷画面

印刷プレビュー画面とほぼ同じ印刷ができるようになった。

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする