MapX应用讲义(转)
来源:互联网 发布:贵州省2017旅游数据 编辑:程序博客网 时间:2024/05/01 23:22
本文转载自hi.baidu.com/redpanda/blog/category/Mapx/index/2
MapX应用讲义
一、加载地图数据
1、 TAB的数据分为两种数据:地图数据(Layers)、属性数据(Datasets)。关系:不可
分割的一个数据集的两部分.
2、 数据加载:GST文件由GeosetManager40.exe程序生成。在程序使用gsT文件:Map1.Ge
oset=Filepath+FileName
3、 问题:GST文件加载后,只是默认将地图数据加载,属性数据另外需要使用单独的命令
进行加载,否则对属性数据的操作全部非法。加载:Map1.Datasets.ADD 属性数据集名称
4、 另一种加载方式:使用LayerInfo 对象,这种方式下加载地图数据源的地图集和属性
集均可直接使用。示例:
dim LayerInfo as MapXLib.LayerInfo
dim Lyr as Mpxlib.layer
LayerInfo.Type = miLayerInfoTypeTab ‘加载表的类型
LayerInfo.AddParameter "FileSpec", FilePath + LayerName + ".TAB" ‘加载表
的全路径名
LayerInfo.AddParameter "NAME", LayerName ‘地图集的别名
LayerInfo.AddParameter "AutoCreateDataset", 1 ‘是否加载属性数据集
LayerInfo.AddParameter "datasetname", LayerName ‘属性数据集别名
MainMap.Layers.Add LayerInfo ‘加载到指定的MapX对象中,立即可直接使用
5、 第三种加载数据方式:GST文件+ LayerInfo方式。示例:
使用两个MapX对象:MainMap、TempMap
TempMap.Geoset=GST文件
MainMap.geoset=””
TempMap.Refresh
For I=1 to TempMap.Layers.Count
FileName=TempMap.Layers.Item(I).Filespec
‘直接引用LayerInfo方式加载地图数据到MainMap
Next
二、创建地图对象
必要:创建地图对象,必须使用FeatureFactory对象
1、 创建一个点对象
点对象有一个坐标点(X,Y),点对象变量是Point类型,点对象的样式(Style)是符号
样式。
Dim Pnt AS MapXLib.Point
Dim FeaFac AS MapXLib.FeatureFactory
Dim Lyr AS MapXLib.Layer
Dim Ftr AS MapXLib.Feature
Dim NewStyle AS MapXLib.Style
‘绑定
SET Lyr=MainMap.Layers.Item(LayerName)
SET FeaFac=mainmap.featurefactory
‘设置点对象样式
With NewStyle
.SymbolType = miSymbolTypeBitmap
.SymbolBitmapSize = 24
.SymbolBitmapTransparent = False
.SymbolBitmapName = "YIEL2-32.BMP"
End With
Mainmap.AutoRedraw=False ‘禁止自动刷新
Lyr.Editable=True ‘置当前图层为可写状态
‘创建点对象
pnt.set X1,Y1
‘添加进当前图层
Set Ftr=FeaFac. CreateSymbol (Pnt,Newstyle) ‘创建符号
‘Set Ftr=FeaFac. CreateSymbol (Pnt,MainMap.DefaultStyle)
‘添加
Lyr.AddFeature Ftr
Lyr.Refresh
Mainmap.AutoRedraw=True
Lyr.Editable=False
‘释放
SET Pnt = Nothing
SET FeaFac = Nothing
SET Lyr = Nothing
SET Ftr = Nothing
‘以上代码放在MapX的ToolUsed事件下
单独修改某个图元的样式:SET Ftr.Style=NewStyle,再用Update 即可
2、 创建一个线矩形
Dim Pnts AS MapXLib.Points
With NewStyle
.LineColor=Rgb(0, 0,255)
End With
‘第一个点
Pnt.Set X1,Y1
Pnts.add Pnt
‘第二个点
Pnt.Set X2,Y1
Pnts.add Pnt
‘第三个点
Pnt.Set X2,Y2
Pnts.add Pnt
‘第四个点
Pnt.Set X1,Y2
Pnts.add Pnt
‘第五个点
Pnt.Set X1,Y1
Pnts.add Pnt
‘创建线矩形
SET Ftr=FeaFac.CreateLine(Pnts,NewStyle)
Lyr.AddFeature Ftr
Lyr.Refresh
3、 上面创建对象中存在的问题:并未对其数据数据进行赋值
创建对象的同时创建其数据集合
Dim Pnt AS MapXLib.Point
Dim FeaFac AS MapXLib.FeatureFactory
Dim Lyr AS MapXLib.Layer
Dim Ftr AS MapXLib.Feature
Dim NewStyle AS MapXLib.Style
Dim ds AS MapXLib.Dataset
Dim Flds AS MapXLib.Fields
‘绑定
SET Lyr=MainMap.Layers.Item(LayerName)
SET ds=Lyr.Datasets.Item(1)
Set Flds=ds.Fields
SET FeaFac=mainmap.featurefactory
‘设置点对象样式
With NewStyle
.SymbolType = miSymbolTypeBitmap
.SymbolBitmapSize = 24
.SymbolBitmapTransparent = False
.SymbolBitmapName = "YIEL2-32.BMP"
End With
Mainmap.AutoRedraw=False ‘禁止自动刷新
Lyr.Editable=True ‘置当前图层为可写状态
‘创建点对象
pnt.set X1,Y1
‘创建图形
Set Ftr=FeaFac. CreateSymbol (Pnt,Newstyle) ‘创建符号
‘Set Ftr=FeaFac. CreateSymbol (Pnt,MainMap.DefaultStyle)
‘设置属性
For I=1 to Flds.Count
Lyr.KeyFields=Flds.Item(i).Name
Ftr.KeyValue=ValueStr(I) ‘这里并没有对字段类型进行判断
Next
‘另外一种方法:使用RowValues和RowValue对象
‘添加
Lyr.AddFeature Ftr
Lyr.Refresh
Mainmap.AutoRedraw=True
Lyr.Editable=False
‘释放
SET Pnt = Nothing
SET FeaFac = Nothing
SET Lyr = Nothing
SET Ftr = Nothing
SET ds = Nothing
SET Flds = Nothing
4、 创建表
(1) 临时表:
A、用MainMap.Layers.CreateLayer方法创建临时表。但这个临时表只有一个字段:GeoNa
me( Char 24)。程序运行过程中该表存放位置为系统临时文件夹下
B、使用LayerInfo对象创建临时表,可以指定字段。示例:
Dim Lyr As MapXLib.Layer
Dim LayerInfo As New MapXLib.LayerInfo
Dim Flds As New MapXLib.Fields
‘字段定义
Flds.AddStringField "ID", 12
Flds.AddStringField "Name", 50
Flds.AddNumericField "Deptch", 12, 2
Flds.AddIntegerField "Length"
- MapX应用讲义(转)
- MapX应用讲义
- MapX应用开发中文讲义
- mapx讲义 (来自skyma)
- 3S基础知识:MapX应用讲义—加载地图数据
- MapX应用起步
- (转)MapX Mobile开发总结
- 应用MapX编程两例
- C++ builder 应用MAPX心得
- C++ builder 应用MAPX心得
- 应用MapX编程两例
- 应用MapX编程两例
- 应用MapX编程两例
- MAPX开发(一)
- mapx
- 自考《计算机应用基础》串讲冲刺讲义(一)
- 自考《计算机应用基础》串讲冲刺讲义(二)
- 使用MapX开发实现若干小功能(转)
- 个性化广告“看人下菜碟儿”
- MTK 的控件和窗体绘制机制以及控件、窗体的事件响应机制
- Iunknown的QueryInterface查询接口的作用
- socket 精确的判断出网络是否连接
- 头文件与库文件
- MapX应用讲义(转)
- 最简单的事件类
- JSP环境配置:Resin+iis 整合及多站点配置
- PB5.0 无法生成 NK.BIN
- ACM JAVA中的应用
- 已知两点的经纬度,求某点到该两点的连线的最短距离
- 常用正则表达式(?i)忽略字母的大小写!
- 解决“PB5.0 无法生成NK.BIN的问题”
- 忍受不了mis u100x的龟速了,从xp改装成了ubuntu+XFCE