公式サポートありの、地図機能を提供するForgeコンポーネント「OutSystems Maps」が、これまでのGoogle Mapsに加えて、Leafletを使えるようになっている。
Leafletは、有償のAPIキーがなくても使えるので、軽く試してみた。
環境
Personal Environment(Version 11.14.0 (Build 33133))
Service Studio(Version 11.14.11)
OutSystems Maps(Version 1.6.0)
地図を表示
LeafletMap Blockを画面に配置すると、アメリカのボストンあたりを中心に表示される。
サイズの調整
デフォルトサイズ
幅・高さ共に、配置先に対して100%。
調整方法
高さを指定するには、BlockのHeightプロパティを使う。Heightプロパティに設定した値が、HTMLタグのstyle属性に使用される。
幅を指定する際には、ContainerでLeafletMap Blockを囲み、そのContainerに設定するといい。
位置の調整
中心座標設定
初期表示時点の中心座標を設定するには、「緯度,経度」のフォーマットで、Centerプロパティに設定する。
ズームレベル
Google Mapsで定義された、地図の拡大度を示す値。
1-20の数字で示し、1だと全世界を表示できる縮尺で表示し、数字が大きくなるほど拡大して表示される。
OutSystems MapsのStatic Entity「Zoom」のレコードとして設定する。
設定例
図形の表示
地図上に図形を表示するには、LeafletMap Blockの「AddOns_Placeholder」Placeholder内に、対応するBlockを配置する。
表示できる図形にはいくつか種類があるが、以下ではMarker(特定の座標にピンを立てるもの。点座標)を例とする。
- Markerの位置はPositionプロパティで指定
- Titleはマーカーにマウスオーバーしたときに表示されるテキスト
- Labelはマーカー自体に重ねて表示されるテキスト
マーカーと地図の座標
地図にマーカーを表示すると、地図自体のプロパティCenterよりも最初のマーカーのPositionが優先されるようだ。
地図イベント
地図への操作に反応する処理を書くには、LeafletMap Blockの「Events_Placeholder」Placeholder内に、Map_Events\MapEvent Blockを配置する。
このとき、EventNameプロパティに対象となるイベントを設定(MapEventTrigger Static Entityを使う)する。選択できるイベントは
- Click
- DoubleClick
- DragEnd
- RightClick
- ZoomChanged
イベントハンドラのInput Parameterは以下の通り
- MapWidgetId: LeafletMap BlockのNameプロパティに設定した値
- EventName: イベント名。Clickを選択した場合「click」
- LatLng: イベントが発生した座標。Clickを選択した場合、クリックした座標