JavaScriptの「canvas」を利用して、属性表示画面の吹き出しを描画する

属性表示画面の吹き出しを作成しようと思い、OpenLayersの拡張版であるol-extの最新版v3.2.1にFixed popupとして機能が提供されていたのですが…

吹き出しの描画が、地図上でしか機能しないため、JavaScriptの「canvas」の勉強を兼ねて、自作することにしました。今回は、JavaScriptのみの修正でしたので、意外と簡単に実装できました。

処理概要は以下の通りです。

  • 属性表示画面は、ASPxPopupControlクラスで作成していますが、画面移動時のイベントが提供されていなかったので、 windows全体のmousemoveイベントリスナーを登録します。
  • mousemoveイベントで、属性表示画面が表示されている場合は、canvasを利用して、図形の座標位置から、属性表示画面への中心までの吹き出し画像を描画します。
  • あと、マウスイベント以外にも、地図スクロール操作で図形位置が変わるため、OpenlayersのViewクラスに、’change:resolution’イベントリスナーを登録し、スクロールが発生した際も吹き出し画像を描画させます。
  • 後処理として、属性表示画面が閉じた際に、吹き出し画像が残ってしまうので、画像をクリアします。

map.js

以下、画面イメージです。

属性表示画面を移動すると、吹き出しが付いてきます。

拡大縮小しても、吹き出しが付いてきます。

Print Friendly, PDF & Email

シェアする

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

フォローする