动态显示图层

本节内容可以参考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
'缩放比例在57之间时显示市级行政区
        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多个多边形与文字标记。

下一节介绍使用虚拟矢量层提升速度的方法。


本页地址:http://www.foxtable.com/webhelp/topics/6146.htm