动态显示图层
本节内容可以参考CaseStudy目录下的文件"地图.Table"的示例十六。
本节的任务是绘制一个地图,默认显示省级行政区,随着地图的逐步放大,再依次显示市级行政区和县级行政区:

要点:矢量图层有MinZoom和MaxZoom属性,如果Map控件的当前缩放比例小于MinZoom或大于MaxZomm,则会隐藏此矢量图层。
示例
1、将Map控件的"地图来源"属性设置为"None"
2、将窗口的AfterLoad事件代码设置为:
Dim
map
As
GeoMap = e.Form.Controls("Map1").GeoMap
For
level
As
Integer
= 1
To
3
Dim
layer
As
New
VectorLayer()
'每一级行政区一个图层
map.Layers.Add(layer)
layer.Style.Stroke.Color = Color.Gray
layer.LabelVisibility = LabelVisibility.AutoHide
If
level = 1
Then
layer.MaxZoom = 4.999999
'缩放比例小于5时显示省级行政区
ElseIf
level = 2
Then
layer.MinZoom = 5
'缩放比例在5到7之间时显示市级行政区
layer.MaxZoom = 6.999999
ElseIf
level = 3
Then
layer.MinZoom = 7
'缩放比例超过7之后显示县级行政区
End
If
For
Each
dr
As
DataRow
In
DataTables("行政区域").Select("level=
"
& level)
Dim
polygon
As
VectorPolygon = map.CreatePolygon(dr("geometry"),
5)
layer.Items.Add(Polygon)
Dim
mark
As
New
VectorPlacemark()
'增加标记
mark.Geometry =
New
GeoPoint(dr("centroidX"),
dr("centroidY"))
mark.Marker.Caption = dr("name")
'指定标题
mark.Marker.LabelPosition = LabelPosition.Center
'标题显示在标记的中心位置
layer.Items.Add(mark)
Next
Next
关于速度:
如果你觉得打开这个窗口非常卡顿,这是正常的,因为要解析50多兆文本性质的经纬度数据,绘制3000多个多边形与文字标记。
下一节介绍使用虚拟矢量层提升速度的方法。