更简单的代码

上一节我们介绍了绘制离线地图的方法。

基于字符串形式的经纬度数据绘制离线地图是很常见的任务,所以我们提供了更简单的方法。


CreatePolygon和CreateLine方法都可以接受字符串形式经纬度,经纬度之间用逗号分隔,不同多边形和线条的经纬度用vblf或符号"|"分隔:

示例一

本示例内容可以参考CaseStudy目录下的文件"地图.Table"的示例十二。

目的依然是绘制中国升级行政区域:

1、将Map控件的"地图来源"属性设置为"None"

2、将窗口的AfterLoad事件代码设置为:

Dim map As GeoMap = e.Form.Controls("Map1").GeoMap
Dim
layer As New VectorLayer() '定义矢量层
map.Layers.Add(layer) '将矢量层增加代map控件中
layer.Style.Stroke.Color = Color.Red
'设置行政区域边界颜色
'
绘制省级行政区域
For
Each dr As DataRow In DataTables("行政区域").Select("level= 1")
    layer.Items.Add(map.CreatePolygon(dr(
"geometry"))) '将多边形添加到矢量层中
Next

聊聊几行代码就绘制出了如下的地图:

示例二

CreateLine方法也可以接受字符串形式的经纬度,例如将AfterLoad事件代码改为:

Dim
map As GeoMap = e.Form.Controls("Map1").GeoMap
Dim
layer As New VectorLayer()
map.Layers.Add(layer)
layer.Style.Stroke.Color = Color.Gray

For
Each dr As DataRow In DataTables("行政区域").Select("level= 1")
   
Dim polygon As VectorPolygon = map.CreatePolygon(dr("geometry"))
   
If dr("name") = "安徽" Then
        polygon.Style.Stroke.Color = Color.Green
        polygon.Style.BackColor = Color.Red
   
End If
    layer.Items.Add(Polygon)

Next
Dim
lineString As String = "109.8404,40.6582,109.9903,39.8172,109.7412,38.2902,109.4908,36.5965," &
"108.9796,34.9166,108.948,34.2632,109.0293,32.6903,107.5023,31.2095,106.505,29.5332,109.7383,28.3148,"
&
"109.9782,27.5501,111.4692,27.2378,111.608,26.4345,110.2991,25.2742,111.5521,24.4141,112.4725,"
&
"23.0515,112.0444,22.9298,110.9192,21.6598"

Dim
line As VectorPolyline = map.CreateLine(lineString)
line.Style.Stroke.Color = Color.Green
line.Style.Stroke.Style = GeoDashStyle.Solid
line.Style.Stroke.Width = 3

layer.Items.Add(line)

绘制的地图如下:


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