更简单的代码
上一节我们介绍了绘制离线地图的方法。
基于字符串形式的经纬度数据绘制离线地图是很常见的任务,所以我们提供了更简单的方法。
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)
绘制的地图如下:
