ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

mapinfoコミュのMapBasicの便利プログラム

  • mixiチェック
  • このエントリーをはてなブックマークに追加
このところ新しい話題もあまり無い様ですので、ちょっと話題投下してみます。
普段、私が自分用に使っているMapBasicプログラムですが、意外に(自分的には)使い勝手がよいので恥ずかしながらご紹介します。

皆さん、マップウインドウを複数見ながら、それぞれ比べて評価したいときってありません?いちいち各マップにズームや中心を合わせるのもめんどうですし、どこかのマップをいじると、他のマップもそれにあわせて再設定が大変です。
そこで、マップ表示位置の同期ツールを自作して使っています。

MapBasicで以下のソースをコンパイルして、実行します。
ツールマネージャなんかに自動読み込み登録しておくと便利かもしれません。
「ツール」のボタンパッドに、飛行機のアイコンボタンが出来ます。
ボタンを押すと、現在使用中のマップの表示位置を、他の後ろのマップウィンドウ全てに適用します。無条件にね。
ただし、座標系の違うマップ同士では多分うまく同期しません。

みなさんの、便利な自作ツールも、是非見てみたいですね。
よろしければご紹介下さい。

===================ここからソース=========================
' SynchroMap マップ表示位置同期プログラム
' 全マップウィンドウの表示位置を同期します。
' カレントマップのズーム、センターを他のマップウィンドウに適用します。

Include "Mapbasic.def"
Include "ICONS.def"

Declare Sub Main
Declare Sub SynchroMap
Declare Sub End_Process

Sub Main
'メニュー
Create Menu "地図同期" As "終了" ID 1010 Calling End_Process
Alter Menu ID 4 add "" As "地図同期"
'ボタンパッド
Alter ButtonPad ID 3 Add PushButton Calling SynchroMap
Icon MI_ICON_TRANSPORT_25
HelpMsg "カレントマップに対し、他のマップウィンドウ表示位置を同期します\地図同期"
end sub

Sub SynchroMap
Dim iNumWin As integer
Dim iFWinID as integer
Dim iz,ix,iy as float
Dim i as integer

'ウィンドウ数
iNumWin = NumWindows()
'ウィンドウ数が0以上ならば
if iNumWin > 0 then
iFWinID = FrontWindow()
'フロントウィンドウがマップウィンドウならば
if WindowInfo (iFWinID,WIN_INFO_TYPE) = WIN_MAPPER then
iz = MapperInfo(iFWinID,MAPPER_INFO_ZOOM)
ix = MapperInfo(iFWinID,MAPPER_INFO_CENTERX)
iy = MapperInfo(iFWinID,MAPPER_INFO_CENTERY)
'全ウィンドウループ
for i=1 to iNumWin
'フロントウィンドウ以外のマップウィンドウならば
if WindowID(i) <> iFWinID and WindowInfo(WindowID(i),WIN_INFO_TYPE)=WIN_MAPPER then
'センター&ズームをコピー
Set Map Window WindowID(i) Center (ix,iy) Zoom iz
end if
next
else
Note "アクティブウィンドウは地図ウィンドウではありません。"
End if
else
note "アクティブなウィンドウがありません。"
end if
end sub

Sub End_Process
End Program
end sub

コメント(1)

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

mapinfo 更新情報

mapinfoのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。