2006年3月28日
在mapxtreme 中visualMapJ1MouseClicked 事件只能便用左键,如果想要右键弹出信息的话,非常的不方便,下面是一个临时的解决办法:
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()); //在鼠标的地方弹出
infoToolListener.clearInfo(); //清除上次信息
}
} else if (evt.getButton() == MouseEvent.BUTTON3){ //如果点的是鼠标右键,把它模拟成左键
try {
Robot robot = new Robot(); // 建个机器人
robot.mousePress(InputEvent.BUTTON1_MASK); //模拟左键按下
robot.mouseRelease(InputEvent.BUTTON1_MASK); //左键弹起
} catch (AWTException ex) {
ex.printStackTrace();
}
}
}
我尝试了很多办法,因为mapxtreme 中有很多类都是受保护的,在自己的程序中没法使用,而且,它耦合度非常的高,我曾经想把其中几个类反编译过来使用,结果发现,需要反编译的类越来越多,以至于最后可能要把整个mapxtreme都反编译过来,所以我放弃了这种想法,只好用模拟实现,另外,MapMouseEvent 继承了 MouseEvent 但是没有提供BUTTON 参数,使得左键和中键可以读取到,而右键却不行,所以只好用如此古怪的方法。
可能我不应该叫它技术复杂度, 准确的说法应该是"从UFP 到SLOC 的缺省转换率",公布出来供大家参考.
以下数据来自 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
第一代语言 320
第二代语言 107
第三代语言 80
第四代语言 20
第五代语言 4
高级语言 64
报表生成器 80
我们公司希望通过语言复杂度来决定项目奖金,可是哪一种语言技术含量更高呢? 大家来投一下票吧,
请选出您熟悉的五种以上语言,按复杂度排一下序,(最复杂的排在最前面).谢谢支持!
APL、A+、J 、ASP、Ada 、汇编语言、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
表:
通常表示一个图层的所有信息包括"几何信息"和"属性信息" mapinfo使用( .tab)格式,可以用
文本编辑器打开
MapInfo .tab 文件可以组织成为一组用于构建图层的文件。MapInfo 表包含以下类型的关联文件:
*.tab:此文件说明 MapInfo 表的结构。这是一个说明数据文件格式的小文本文件。
*.dat(.mdb, .dbf, .txt, .xls or .wks):这些文件包含制表数据。
*.map:此文件说明图形对象(如果表没有地图对象,则该文件将不存在)。
*.id:此文件是一个交叉索引文件,链接数据和对象(如果表没有地图对象,则该
文件将不存在)。
*.ind: 这是一个索引文件。使用该索引文件,可搜索地图对象(如果表没有索引,
该文件将不存在)。
这些文件在一起构成 MapXtreme Java 中的单一 .tab 图层。
地图定义:
地图定义说明了构成地图的数据,包括所要显示的数据、存储位置、数据组织为图层的方
式、数据的显示方式(如所用颜色、标注图元、地图缩放设置)。
地图定义的格式为: .mdf
MapInfo Geosets:
MapInfo .tab 文件集称为 geoset。 如果熟悉 MapInfo Professional,可以注意到 geoset
和工作空间的概念类似。工作空间是一个已保存的 MapInfo 表 (.tab) 和窗口的配置。无需打开
单个的 .tab 文件,即可使用其特定的显示设置来打开 geoset (somefile.gst) 和所有图层。
但是, Geosets 在 MapXtreme Java 中的功能受到了限制。这些限制主要是指不可以保存到
远程数据库的 MapInfo .tab 文件。
MapXtreme 不能打开 MapInfo 工作空间(.wor 文件类型)。用 MapInfoProfessional,的
MapInfo Geoset 程序可以将工作空间另存为 geoset,然后用 MapXtreme Java 管理器将它加载到
MapXtreme Java。
Mapinfo Geosets 的格式为 .gst
注:mapinfo 厂家推荐使用 .mdf 在实际使用过程中还是 .gst 使用比较简单
图元
MapXtreme 中的地图由地图对象组成的图层构成。这些地图对象可通过图元对象在 MapXtreme
中访问。此处有三种基本图元类型:
区域: 指覆盖给定区域的闭合对象。可以想像为一个面,其中包括多边形、椭圆和矩形。
区域包括国界、邮政编码边界和销售区域等。
点对象:表示数据的单一位置。就是一个点,不能缩放,其示例包括客户位置、饭店和停车计时器等。
线对象:覆盖给定距离的开放对象。包括直线、折线和弧线等。其示例有街道、河
流和电力线路等。
不同类型的对象可以放在同一个图层中,最常见的是每种对象放在一个单独的图层中,单独放置时,
使用起来比较方便.
样式
MapXtreme Java 地图中的所有图元均显示特定的可见特征,例如颜色或符号类型。相应的
特征也称为样式。MapXtreme Java 包括使用 Java2D API 渲染能力的众多显示属性,其中有
直线和区域的符号刷、虚线和平行线、矢量符号和缩放符号和标记。
标注
标注是 MapXtreme Java 中功能强大的特性之一,可用于增强地图功能,并向用户提供正确
的消息。标注不仅仅局限于添加文本来说明地图的特性。使用 MapXtreme Java,可以控制
字体类型、大小、颜色、位置,并使用光晕和轮廓线等富有创意的效果,为每个图层创建
不同的标注。 标注内容可以通过从图层数据源的一个或多个列取数据的表达式来生成。
昨天要用EasyLoader 把数据移到Oracle 9i 上去,移上去后发现 9i 没有 JDK 1.4 和驱动,不能使用命名资源, 只好下个10G 试试.今天把mapXtreme 部署到tomcat5.5 上,发现mapXtreme 自带的打war包工具不太好用,打出来的包解不开,我直接把 MapInfo\MapXtreme-4.7.1\Tomcat-4.1\webapps 目录下的mapviewer471 mapxtreme471 samples471 wmsserver111 四个目录拷贝到 Tomcat 5.5\webapps 下就行了(使用Tomcat5.5必须用JDK 5.0 乱啊!永远不能统一,我真希望大家都别出新版了), 然后打开这四个文件夹,找到web.xml 文件改一下主机地址和端口号就行了.