MapXtreme開發經驗分享 新增自定義工具

2021-04-30 08:42:16 字數 1782 閱讀 6630

mapxtreme的自帶幫助的查詢功能不好,不支援中文,網上的例子也比較少。把自己解決的幾個問題拿出來與大家共享,希望有幫助!

開發環境:vb.net 2008 + mapxtreme2008

1、新增自定義工具

沒有使用mapxteme 提供的*******控制項,自己定製可互動的工具新增到自己的寫的框架上,例子為管線剖面圖工具,需要先在地圖上繪製一條線,然後通過計算和這條線相交的所有管線的剖面資訊,將剖面圖繪製到彈出的對話方塊上。

1)    宣告工具

private m_sectiontool as mapinfo.tools.maptool

2)   新增工具

dim insertionlayerfilter as imaplayerfilter = maplayerfilte***ctory.filterbylayertype(layertype.normal)

' set the default style for the new objects (red fill with blue border).

dim style as mapinfo.styles.compositestyle = new mapinfo.styles.compositestyle()

dim addmaptoolproperties as mapinfo.tools.addmaptoolproperties = new mapinfo.tools.addmaptoolproperties( _

maplayerfilte***ctory.filterfortools(mapcontrol1.map, insertionlayerfilter, _

maplayerfilte***ctory.filtervisiblelayers(true), _

"custompolygonaddmaptoolproperties", nothing), style)

' create an add polygon tool with non-default properties.

m_sectiontool = new mapinfo.tools.customlinemaptool(true, true, true, _

mapcontrol1.viewer, mapcontrol1.handle.toint32(), mapcontrol1.tools, _

mapcontrol1.tools.mousetoolproperties, mapcontrol1.tools.maptoolproperties)

' add it to the maptools collection.

mapcontrol1.tools.add("sectiontool", m_sectiontool)

3) 註冊工具事件

public sub new()

addhandler mapcontrol1.tools.used, addressof toolused '工具事件

end sub

4)響應工具訊息

public sub toolused(byval sender as object, byval e as mapinfo.tools.toolusedeventargs)

select case e.toolname

case "sectiontool"  '斷面工具

end select

end sub

5)發現乙個例外:自定義工具使用 addpointmaptool 不能觸發used事件。

解決方法:可以使用custompointmaptool 代替,addpolylinemaptool也同理。

遊戲專案開發經驗分享

下週參與開發的第三款mmorpg準備上市了,開發了一年左右,前面感覺拼得有點太過了,心身比較疲憊,總結下是太過於急於求成了。近兩個月進行了一些調整,感覺狀態和開發效率有所提公升,在3人的伺服器團隊的努力下,完成了一些功能並且穩定性還可以。歸結下來大概比較有用有幾方面。第一,堅持勞逸結合.無論專案有多...

獨立開發者經驗分享

我曾經有9年做獨立開發者,開發shareware,主要銷往歐美,客戶中不乏五角大樓,美國海軍學院,微軟,惠普,美國眾多州 等等。很可能有人覺得我在吹牛,完全理解 我的軟體 有幾個,有個知道人比較多的,在web log analyzer 後來有了孩子後就出來工作了,以cto身份參加過一次移動網際網路創...

TCP IP和Socket開發經驗分享

比較常見的4層網路模型 圖 如下 基於應用層的開發難度是相對比較低的,因為絕大部分與連線和資料傳輸 校驗相關的事情已經交給 系統 來完成,使得開發人員只需要專注於業務即可。這種分層的技術結構是非常高階和有效的。基於應用層的開發雖然方便,但是當我們需要在功能上實現某些特殊需求的時候,就難免有些掣肘。例...