サポート > PC-MAPPING ヒント集 > スクリプト > イベント駆動型スクリプティングE [アクティブレイヤーの入れ替えその2(座標制御)]
イベント駆動型スクリプティングE [アクティブレイヤーの入れ替えその2(座標制御)]
メッシュ単位に複数のレイヤーを登録しているため、表示領域を移動した後、その領域に表示されているレイヤーをアクティブにする作業を行なわれていませんか?
ここでは、プロジェクト内スクリプトを使用し、OnMouseMoveイベントに対して「表示領域の中心座標によってアクティブなレイヤーを変更する」「マウスの座標によってアクティブなレイヤーを変更する」スクリプトを記述しました。
■ サンプル
サンプル[script18.zip(約115KB)]をダウンロードする
sample_js.pcm:JScriptサンプルプロジェクト
sample_vbs.pcm:VBScriptサンプルプロジェクト

《内容》
レイヤーにはメッシュ単位に分割された「画地 ○-×」が登録されています。
現在表示されている領域の中心座標を取得し、その座標が含まれるレイヤーを検索します。
また、該当レイヤーをアクティブ表示します。

■ 解説
function OnMouseMove(dblCX, dblCY, lngShift, lngMouse)
{

}

PC-MAPPINGベクターウィドウ上をマウスが移動した時に実行されます。
引数として、マウスが指示しているX座標、Y座標を取得する事ができます。
添付されているプロジェクトには以下のように、「スクリプト」へ記述され、「通知するイベント」チェックボックスがONになっています。

■ 実行
表示領域の中心座標によってアクティブなレイヤーを変更
添付されているプロジェクトファイルを開きます。
現在、表示領域はプロジェクトの中心ですので、中心に位置する「画地 2-2」レイヤーがアクティブになっています。

プロジェクトの右下あたりを拡大します。
すると、表示領域の中心位置する「画地 1-3」レイヤーがアクティブになります。

マウスの座標によってアクティブなレイヤーを変更
添付されているプロジェクトファイルを開きます。
現在、表示領域はプロジェクトの中心ですので、中心に位置する「画地 2-2」レイヤーがアクティブになっています。

[プロジェクト]リボン-[プロジェクト設定]-[プロジェクト]を実行し、[スクリプト]パネルを表示して下さい。
ソース中の以下の箇所を変更して下さい。

[JScriptの場合]
@以下文章を検索し、レコード先頭にあるコメント(//)を外して下さい。
//var dmx = parseFloat(dcx);//マウスポインタの座標X
//var dmy = parseFloat(dcy);//マウスポインタの座標Y
A以下文章を検索し、レコード先頭にコメント(//)を追加して下さい。
var dmx = (drx - dlx) / 2 + dlx;//現在表示されている領域の中心X座標 var dmy = (dry - dly) / 2 + dly;//現在表示されている領域の中心Y座標
[VBScriptの場合]
@以下文章を検索し、レコード先頭にあるコメント(')を外して下さい。
'dblMX = CDbl(dblCX)'マウスポインタの座標X
'dblMY = CDbl(dblCY)'マウスポインタの座標Y
A以下文章を検索し、レコード先頭にコメント(')を追加して下さい。
dblMX = (dblRX - dblLX) / 2 +dblLX'現在表示されている領域の中心X座標
dblMY = (dblRY - dblLY) / 2 +dblLY'現在表示されている領域の中心Y座標
すると、マウスの移動した先のレイヤーが表示されるようになります。

■ 注意点
スクリプトの実行は、「マウスが動く」イベントに対して実行されます。
よって、マウスが動かないような縮尺変更を行なわれた場合は、スクリプトが実行されない場合があります。