绘制多个标记
本节内容可以参考CaseStudy目录下的文件"地图.Table"的示例二。
本节任务是在地图上标记出多个中国城市:

示例:
1、将Map控件的"地图来源"属性设置为"Custom"
2、将Map控件的GetMapTile事件代码设置为:
Dim
style
As
Integer
= 8
'地图类型,可选值为6到10,其中6为卫星图
Dim
size
As
Integer
= 1
Dim
scale
As
Integer
= 1
Dim
server
As
Integer
= Rand.Next(1, 5)
'随机使用1到4号服务器
Dim
scl
As
Integer
= 2
'设置为2可以隐藏地图的文字标注,且分辨率更好
Dim
Language
As
String
=
"zh_cn"
'中文地图,如果需要英文可设置为"en",我测试只有style为8的时候才支持英文
Dim
url
As
String
If
style = 7
OrElse
style = 8
Then
url =
"https://webrd0{0}.is.autonavi.com/appmaptile?lang={1}&size={2}&scale={3}&style={4}&x={5}&y={6}&z={7}&scl={8}"
Else
url =
"https://webst0{0}.is.autonavi.com/appmaptile?lang={1}&size={2}&scale={3}&style={4}&x={5}&y={6}&z={7}&scl={8}"
End
If
e.URI = CExp(url, server, Language, Size, scale, style, e.X, e.Y, e.Z, scl)
3、将窗口的AfterLoad事件代码设置为:
Dim
map
As
GeoMap = e.Form.Controls("Map1").GeoMap
Dim
layer
As
New
VectorLayer()
'定义矢量层
layer.LabelVisibility = LabelVisibility.Visible
'标题可见
layer.Style.Stroke.Color = Color.Red
'形状线条为红色
layer.LabelStyle.ForeColor = Color.Green
'文字为绿色
map.Layers.Add(layer)
'将矢量层增加代map控件中
'定义各城市的经纬度
Dim
cities
As
New
Dictionary(Of
String,
GeoPoint)
cities.Add("北京",
New
GeoPoint(116.4053, 39.905))
cities.Add("上海",
New
GeoPoint(121.4726, 31.2317))
cities.Add("广州",
New
GeoPoint(113.2806, 23.1252))
cities.Add("成都",
New
GeoPoint(104.0657, 30.6595))
'逐个绘制城市
For
Each
city
As
String
In
cities.Keys
Dim
mark
As
New
VectorPlacemark()
'增加一个标记
mark.Marker.Caption = city
'指定标记的标题
mark.Geometry = cities(city)
'设置标记位置为对应城市的经纬度
If
city =
"北京"
Then
'如果是北京
mark.Marker.Size =
New
SizeF(16, 16)
'指定标记大小
mark.Marker.Shape = MarkerShape.Star
'设置标记形状为五角星
Else
mark.Marker.Size =
New
SizeF(10, 10)
'其他城市的标记要小一些
mark.Marker.Shape = MarkerShape.Circle
'标记形状为圆形
End
If
mark.Marker.LabelPosition = LabelPosition.Right
'标题显示在标记右边
mark.Style.BackColor = Color.Red
'标记的填充颜色为红色
layer.Items.Add(mark)
'将标记添加到矢量层中
Next
一个标记可以包括多个点
通常一个标记(VectorPlacemark)对应一个点,如果需要的话,一个标记可以包括多个点。
例如上面的示例,如果将AfterLod事件代码改为:
Dim
map
As
GeoMap = e.Form.Controls("Map1").GeoMap
Dim
layer
As
New
VectorLayer()
'定义矢量层
layer.LabelVisibility = LabelVisibility.Visible
'文字可见
layer.Style.Stroke.Color = Color.Red
'图形线条为红色
layer.LabelStyle.ForeColor = Color.Green
'文字为绿色
map.Layers.Add(layer)
'将矢量层增加代map控件中
'定义各城市的经纬度
Dim
cities
As
New
Dictionary(Of
String,
GeoPoint)
cities.Add("北京",
New
GeoPoint(116.4053, 39.905))
cities.Add("上海",
New
GeoPoint(121.4726, 31.2317))
cities.Add("广州",
New
GeoPoint(113.2806, 23.1252))
cities.Add("成都",
New
GeoPoint(104.0657, 30.6595))
'一个标记可以包括多个位置点
Dim
mark
As
VectorPlacemark
'定义一个标记
mark = map.CreatePlaceMark({cities("北京"),
cities("上海"),
cities("广州"),
cities("成都")})
'指定多个位置点
mark.Marker.Size =
New
SizeF(10, 10)
'标记大小
mark.Marker.Shape = MarkerShape.Circle
'标记形状为圆形
mark.Style.BackColor = Color.Red
'标记的填充颜色为红色
layer.Items.Add(mark)
'将标记添加到矢量层中
生成的地图为:
