2006年3月16日
在mapxtreme 中visualMapJ1MouseClicked 事件只能便用左鍵,如果想要右鍵彈出信息的話,非常的不方便,下面是一個(gè)臨時(shí)的解決辦法:
private void visualMapJ1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO 將在此處添加您的處理代碼:
if(evt.getButton() == MouseEvent.BUTTON1){
JPopupMenu pop =new JPopupMenu(); //右鍵菜單
if(!infoToolListener.getInfo().equals("")){ //取回的地理信息不為空
pop.add(infoToolListener.getInfo()); //把信息加到菜單上
pop.show(evt.getComponent(),evt.getX(),evt.getY()); //在鼠標(biāo)的地方彈出
infoToolListener.clearInfo(); //清除上次信息
}
} else if (evt.getButton() == MouseEvent.BUTTON3){ //如果點(diǎn)的是鼠標(biāo)右鍵,把它模擬成左鍵
try {
Robot robot = new Robot(); // 建個(gè)機(jī)器人
robot.mousePress(InputEvent.BUTTON1_MASK); //模擬左鍵按下
robot.mouseRelease(InputEvent.BUTTON1_MASK); //左鍵彈起
} catch (AWTException ex) {
ex.printStackTrace();
}
}
}
我嘗試了很多辦法,因?yàn)閙apxtreme 中有很多類都是受保護(hù)的,在自己的程序中沒(méi)法使用,而且,它耦合度非常的高,我曾經(jīng)想把其中幾個(gè)類反編譯過(guò)來(lái)使用,結(jié)果發(fā)現(xiàn),需要反編譯的類越來(lái)越多,以至于最后可能要把整個(gè)mapxtreme都反編譯過(guò)來(lái),所以我放棄了這種想法,只好用模擬實(shí)現(xiàn),另外,MapMouseEvent 繼承了 MouseEvent 但是沒(méi)有提供BUTTON 參數(shù),使得左鍵和中鍵可以讀取到,而右鍵卻不行,所以只好用如此古怪的方法。
可能我不應(yīng)該叫它技術(shù)復(fù)雜度, 準(zhǔn)確的說(shuō)法應(yīng)該是"從UFP 到SLOC 的缺省轉(zhuǎn)換率",公布出來(lái)供大家參考.
以下數(shù)據(jù)來(lái)自 Jones? http://www.spr.com/library/0Langtbl.htm
Access????????????????????????38
Ada83????????????????????????71
Ada95????????????????????????49
AIShell????????????????????????49
APL???????????????????????????32
Assembly--Basic?????????320
Assembly--Macro??????213
Bassic--ANSI????????????64
Basic--Visual??????????????32
Basic--Compiled?????????91
C?????????????????????????????????128
C++?????????????????????????????55
Cobol(ANSI85)????????????91
Database--Default?????????40
Forth???????????????????????????64
Fortran????????????????????????77
Fortran95?????????????????????71
HTML 3.0???????????????????15
Java???????????????????????????????53
Jovial???????????????????????????107
Lisp??????????????????????????????64
MachineCode???????????????640
Modula 2???????????????????????80
Pascal???????????????????????????91
PERL???????????????????????????27
PowerBuilder???????????????16
Prolog???????????????????????????64
Query--Default???????????????13
Simulation--Default???????? 46
Spreadsheet?????????????????????6
Unix Shell Scripts????????????107
Visual Basic 5.0???????????????29
VisualC++????????????????????????34
第一代語(yǔ)言?????????????????????320
第二代語(yǔ)言?????????????????????107
第三代語(yǔ)言?????????????????????80
第四代語(yǔ)言?????????????????????20
第五代語(yǔ)言?????????????????????4
高級(jí)語(yǔ)言????????????????????????64
報(bào)表生成器?????????????????????80
我們公司希望通過(guò)語(yǔ)言復(fù)雜度來(lái)決定項(xiàng)目獎(jiǎng)金,可是哪一種語(yǔ)言技術(shù)含量更高呢? 大家來(lái)投一下票吧,
請(qǐng)選出您熟悉的五種以上語(yǔ)言,按復(fù)雜度排一下序,(最復(fù)雜的排在最前面).謝謝支持!
APL、A+、J 、ASP、Ada 、匯編語(yǔ)言、AWK 、Basic、Fortran 、Brainfuck 、C、C++ 、C#
Clipper 、COBOL 、dBase 、PASCAL、Delphi 、Forth 、FoxPro、F# 、IDL 、Java 、JavaScript
J# 、LISP 、LOGO 、Modula 、Perl 、PHP 、PL/1 、Prolog 、Python 、Ruby 、Scheme 、Smalltalk
SQL 、Tcl/Tk 、Visual Basic 、Visual FoxPro
表:?
????? 通常表示一個(gè)圖層的所有信息包括"幾何信息"和"屬性信息" mapinfo使用( .tab)格式,可以用
????? 文本編輯器打開(kāi)
???MapInfo .tab 文件可以組織成為一組用于構(gòu)建圖層的文件。MapInfo 表包含以下類型的關(guān)聯(lián)文件:
???
???*.tab:此文件說(shuō)明 MapInfo 表的結(jié)構(gòu)。這是一個(gè)說(shuō)明數(shù)據(jù)文件格式的小文本文件。
???*.dat(.mdb, .dbf, .txt, .xls or .wks):這些文件包含制表數(shù)據(jù)。
???*.map:此文件說(shuō)明圖形對(duì)象(如果表沒(méi)有地圖對(duì)象,則該文件將不存在)。
???*.id:此文件是一個(gè)交叉索引文件,鏈接數(shù)據(jù)和對(duì)象(如果表沒(méi)有地圖對(duì)象,則該
???文件將不存在)。
???*.ind: 這是一個(gè)索引文件。使用該索引文件,可搜索地圖對(duì)象(如果表沒(méi)有索引,
???該文件將不存在)。
???這些文件在一起構(gòu)成 MapXtreme Java 中的單一 .tab 圖層。
地圖定義:
????? 地圖定義說(shuō)明了構(gòu)成地圖的數(shù)據(jù),包括所要顯示的數(shù)據(jù)、存儲(chǔ)位置、數(shù)據(jù)組織為圖層的方
???式、數(shù)據(jù)的顯示方式(如所用顏色、標(biāo)注圖元、地圖縮放設(shè)置)。
????? 地圖定義的格式為:??? .mdf????????
MapInfo Geosets:
?????? MapInfo .tab 文件集稱為 geoset。 如果熟悉 MapInfo Professional,可以注意到 geoset
????? 和工作空間的概念類似。工作空間是一個(gè)已保存的 MapInfo 表 (.tab) 和窗口的配置。無(wú)需打開(kāi)
????? 單個(gè)的 .tab 文件,即可使用其特定的顯示設(shè)置來(lái)打開(kāi) geoset (somefile.gst) 和所有圖層。
???但是, Geosets 在 MapXtreme Java 中的功能受到了限制。這些限制主要是指不可以保存到
???遠(yuǎn)程數(shù)據(jù)庫(kù)的 MapInfo .tab 文件。
???MapXtreme 不能打開(kāi) MapInfo 工作空間(.wor 文件類型)。用 MapInfoProfessional,的
???MapInfo Geoset 程序可以將工作空間另存為 geoset,然后用 MapXtreme Java 管理器將它加載到
???MapXtreme Java。
????? Mapinfo Geosets 的格式為 .gst
????? 注:mapinfo 廠家推薦使用??? .mdf??? 在實(shí)際使用過(guò)程中還是 .gst 使用比較簡(jiǎn)單
圖元
???MapXtreme 中的地圖由地圖對(duì)象組成的圖層構(gòu)成。這些地圖對(duì)象可通過(guò)圖元對(duì)象在 MapXtreme
???中訪問(wèn)。此處有三種基本圖元類型:
???
???區(qū)域:?指覆蓋給定區(qū)域的閉合對(duì)象。可以想像為一個(gè)面,其中包括多邊形、橢圓和矩形。
???????區(qū)域包括國(guó)界、郵政編碼邊界和銷售區(qū)域等。
???點(diǎn)對(duì)象:表示數(shù)據(jù)的單一位置。就是一個(gè)點(diǎn),不能縮放,其示例包括客戶位置、飯店和停車計(jì)時(shí)器等。
???線對(duì)象:覆蓋給定距離的開(kāi)放對(duì)象。包括直線、折線和弧線等。其示例有街道、河
???????流和電力線路等。
???????
???不同類型的對(duì)象可以放在同一個(gè)圖層中,最常見(jiàn)的是每種對(duì)象放在一個(gè)單獨(dú)的圖層中,單獨(dú)放置時(shí),
???使用起來(lái)比較方便.??
樣式
???MapXtreme Java 地圖中的所有圖元均顯示特定的可見(jiàn)特征,例如顏色或符號(hào)類型。相應(yīng)的
???特征也稱為樣式。MapXtreme Java 包括使用 Java2D API 渲染能力的眾多顯示屬性,其中有
???直線和區(qū)域的符號(hào)刷、虛線和平行線、矢量符號(hào)和縮放符號(hào)和標(biāo)記。
???
標(biāo)注
???標(biāo)注是 MapXtreme Java 中功能強(qiáng)大的特性之一,可用于增強(qiáng)地圖功能,并向用戶提供正確
???的消息。標(biāo)注不僅僅局限于添加文本來(lái)說(shuō)明地圖的特性。使用 MapXtreme Java,可以控制
???字體類型、大小、顏色、位置,并使用光暈和輪廓線等富有創(chuàng)意的效果,為每個(gè)圖層創(chuàng)建
???不同的標(biāo)注。 標(biāo)注內(nèi)容可以通過(guò)從圖層數(shù)據(jù)源的一個(gè)或多個(gè)列取數(shù)據(jù)的表達(dá)式來(lái)生成。
昨天要用EasyLoader 把數(shù)據(jù)移到Oracle 9i 上去,移上去后發(fā)現(xiàn) 9i 沒(méi)有 JDK 1.4 和驅(qū)動(dòng),不能使用命名資源, 只好下個(gè)10G 試試.今天把mapXtreme 部署到tomcat5.5 上,發(fā)現(xiàn)mapXtreme? 自帶的打war包工具不太好用,打出來(lái)的包解不開(kāi),我直接把 MapInfo\MapXtreme-4.7.1\Tomcat-4.1\webapps 目錄下的mapviewer471?? mapxtreme471? samples471 wmsserver111 四個(gè)目錄拷貝到 Tomcat 5.5\webapps 下就行了(使用Tomcat5.5必須用JDK 5.0 亂啊!永遠(yuǎn)不能統(tǒng)一,我真希望大家都別出新版了), 然后打開(kāi)這四個(gè)文件夾,找到web.xml 文件改一下主機(jī)地址和端口號(hào)就行了.
今天找到MapXtreme for Java 服務(wù)器崩潰 的原因了(問(wèn)題見(jiàn)
2月23日的BLOG http://spaces.msn.com/wjoin/),原來(lái)MapXtreme在 \MapInfo\MapXtreme-4.7.1\Tomcat-4.1\work\Standalone\localhost 目錄下生成了許多臨時(shí)文件,再次起動(dòng)服務(wù)器的時(shí)候有問(wèn)題,只要把這些文件刪除就好了.可以在startup.bat 文件中加入一行:
del C:\MapInfo\MapXtreme-4.7.1\Tomcat-4.1\work\Standalone\localhost /s/q 就行了.
如下所示: (注意路徑)
@echo off
set CATALINA_HOME=C:/MapInfo/MapXtreme-4.7.1/Tomcat-4.1
set CATALINA_BASE=C:/MapInfo/MapXtreme-4.7.1/Tomcat-4.1
set JAVA_HOME=C:\j2sdk1.4.2_05
del C:\MapInfo\MapXtreme-4.7.1\Tomcat-4.1\work\Standalone\localhost /s/q
if not "%OS%" == "Windows_NT" goto noTitle
set _START_TC=start "MapXtreme Java Server 4.7"
goto start
:noTitle
set _START_TC=start "MapXtreme Java Server 4.7"
:start
rem start tomcat in the background
%_START_TC% "C:/MapInfo/MapXtreme-4.7.1/Tomcat-4.1/bin/catalina.bat" run -config ..\Tomcat-4.1\conf\server.xml