GeoMap编程参考
Map控件的底层控件为GeoMap,我们一般直接针对GeoMap编写代码。
编写代码之前,需要先获得GeoMap控件,例如:
Dim
map
As
GeoMap = e.Form.Controls("Map1").GeoMap
在Map控件本身的代码中,可以这样获取GeoMap控件:
Dim
map
As
GeoMap = e.Sender.GeoMap
GeoMap的成员参考:
| 成员 | 说明 |
| CreatePlaceMark | 方法,基于经纬度数据创建标记。 语法: CreatePlaceMark(point) CreatePlaceMark(points) CreatePlaceMark(pointsString) point: GeoPoint类型,用于指定标记的经纬度位置。 points: IEnumerable(Of GeoPoint)类型,例如GeoPoint的集合或数组,用于指定标记的多个经纬度位置 pointsString: 字符串型,用于指定标记的经纬度位置,数据用逗号隔开,奇数位置为经度,偶数位置为纬度。
示例一
Dim
mark
As
New
VectorPlacemark()
Dim
gp
As
New
GeoPoint(116.4053, 39.905) 三 Dim mark As VectorPlacemark = map.CreatePlaceMark("116.4053,39.905")
示例二
一
三 |
| CreateLine | 方法,基于经纬度数据创建线条。 语法: CreatePlaceMark(points) CreatePlaceMark(pointss) CreatePlaceMark(pointsString) points:IEnumerable(Of GeoPoint)类型,例如GeoPoint的集合或数组,用于指定线条经过的点。 pointss:如果包括多个线段,可以用此参数指定多个IEnumerable(Of GeoPoint) pointsString:字符串型,用于指定线条经过的点位置,奇数位置为经度,偶数位置为纬度,如果包括多个线段,用vblf或符号"|"隔开 示例一 以下代码是等效的: 一 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)) Dim line As VectorPolyline = map.CreateLine(cities.Values)
二
|
| CreatePolygon | 方法,基于经纬度数据创建多边形。 语法: CreatePolygon(points) CreatePolygon(pointss) CreatePolygon(pointsString) points:IEnumerable(Of GeoPoint)类型,例如GeoPoint的集合或数组,用于指定多边形各顶点的位置
Dim
cities
As
New
Dictionary(Of
String,
GeoPoint) 示例二 以下代码是等效的:
Dim
cities
As
New
Dictionary(Of
String,
GeoPoint) 二
Dim
ps1
As
String
=
"121.4726,31.2317,120.8646,32.0162,120.6196,31.2994,120.7509,30.7627"
'指定第一个多边形各点的经纬度 |
| CreateBezierCurve |
方法,用于绘制贝塞尔曲线,语法: CreateBezierCurve(points)
|
| CreateBezierCurveArrow | 方法,用于绘制带箭头的贝塞尔曲线,语法: CreateBezierCurveArrow(points,both)
|
| CreateCircle | 方法,基于经纬度数据绘制圆形。 语法: CreateCircle(p1, p2) CreateCircle(p1, p2, Pixel) CreateCircle(pointsString) CreateCircle(pointsString, Pixel) p1: 圆心位置 p2: 圆周上任意一点的位置 pointsString: p1和p2的字符串形式,奇数位置为经度,偶数位置为纬度。 Pixel: 地球是一个球面,所以CreateCircle绘制的圆形默认会出现变形,如果要绘制严格的圆形,请将此参数设置为True 示例 Dim p1 As New GeoPoint(121.4726, 31.2317) Dim p2 As New GeoPoint(120.8646, 32.0162) Dim polygon As VectorPolygon = map.CreateCircle(p1, p2) 等效于:
Dim
polygon
As
VectorPolygon = map.CreateCircle("121.4726,31.2317,120.8646,32.0162") |
| CreateRectangle | 方法,基于经纬度数据创建平行四边形。 平行四边形也是多边形,所以返回的类型依然是VectorPolygon。 语法: CreateCircle(p1, p2) CreateCircle(pointsString) p1:四边形的一个顶点 p2:四边形的另一个顶点(和p1成对角关系) pointsString: p1和p2的字符串形式,奇数位置为经度,偶数位置为纬度。
Dim
p1
As
New
GeoPoint(121.4726, 31.2317) 等效于:
Dim
polygon
As
VectorPolygon = map.CreateRectangle("121.4726,31.2317,120.8646,32.0162") |
| CreateEllipse | 方法,用于绘制椭圆。 语法: CreateEllipse(p1, p2) CreateEllipse(pointsString) p1:椭圆所在四边形的一个顶点 p2:椭圆所在四边形的另一个顶点(和p1成对角关系) pointsString: p1和p2的字符串形式,奇数位置为经度,偶数位置为纬度。 参考:绘制非标形状 |
| CreateDiamond | 方法,用于绘制菱形
|
| CreatePie | 方法,基于经纬度数据绘制扇形。 语法: CreateArc(p1, p2, sweepAngle) p1: 圆心位置 p2: 弧线起点 sweepAngle: 扇形的扫描角度数 例如: Dim cities As New Dictionary(Of String, GeoPoint) cities.Add("广州", New GeoPoint(113.2806, 23.1252)) cities.Add("成都", New GeoPoint(104.0657, 30.6595)) '以广州为圆心,以成都为扇形起点,扇形扫描角度为30度 Dim pie As VectorPolygon = map.CreatePie(cities("广州"), cities("成都"), 30) 参考:绘制非标形状 |
| CreateArc | 方法,基于经纬度数据绘制弧线。 语法: CreateArc(p1, p2, sweepAngle) p1: 圆心位置 p2: 弧线起点 sweepAngle: 弧线的扫描角度数 例如: cities.Add("广州", New GeoPoint(113.2806, 23.1252)) cities.Add("成都", New GeoPoint(104.0657, 30.6595)) '以广州为圆心,以成都为起点,弧线扫描角度为60度 Dim line As VectorPolyline = map.CreateArc(cities("广州"), cities("成都"), 60) 参考:绘制非标形状 |
| CreateLinkArc | 方法,基于经纬度数据绘制连接两点的弧线。
语法:
例如: |
| CreateCurve | 方法,基于经纬度数据绘制连接两点的水滴状曲线
。 语法: CreateCurve(p1, p2, curvature, vault) p1: 曲线起点 p2: 曲线终点 curvature::曲线弯曲度, 绝对值越大弯曲越明显,正数向上弯,负数向下弯vault:曲线拱点位置,取值范围0到1,0靠近起p1,1靠近终点,0.5则居中。
例如: |
| CreateCurveWithArrow | 方法,基于经纬度数据绘制连接两点的水滴状曲线
,曲线终点会显示一个箭头。 语法: CreateCurveWithArrow(p1, p2, curvature, vault) p1: 曲线起点 p2: 曲线终点 curvature::曲线弯曲度, 绝对值越大弯曲越明显,正数向上弯,负数向下弯vault:曲线拱点位置,取值范围0到1,0靠近起p1,1靠近终点,0.5则居中arrowLength: 可选参数,箭头长度,默认为8 arrowAngle:可选参数,箭头夹角数,默认为30
例如 |
| CreateLineWithArrow | 方法,基于经纬度数据绘制带箭头的线条。 语法: CreateLineWithArrow(p1,p2,arrowLength,arrowAngle) CreateLineWithArrow(points,arrowLength,arrowAngle) CreateLineWithArrow(pointsString,arrowLength,arrowAngle) CreateLineWithArrow(p1,p2,both,arrowLength,arrowAngle) CreateLineWithArrow(points,both,arrowLength,arrowAngle) CreateLineWithArrow(pointsString,both,arrowLength,arrowAngle) p1:线条起点 p2:线条终点 points: 集合,包括线条的所有转折点 both:可选参数,设置为True,线条首尾都会出现箭头,默认为False,只在线条末端绘制箭头 pointsString:字符串,线条所有转折点的经纬度数据,数据用逗号隔开,奇数位置为经度,偶数位置为纬度 arrowLength:可选参数,箭头长度,默认为8 arrowAngle:可选参数,箭头夹角,默认为30
以下三行代码是等效的: |
| GetGeoPointByDistanceAngle | 方法,用于根据距离计算经纬度坐标。 语法: GetGeoPointByDistanceAngle(startPoint, distanceKm, angleY) startPoint:起点 distanceKm:距离,单位为公里 angleY:起点和终点的联系与纬线的夹角,正东为0度,正南90度,正西为180度。正北270(-90)度。 返回一个GeoPoint,表示终点的经纬度坐标。 参考:根据距离计算经纬度 |
| IsPointInPolygon |
判断一个GeoPoint是否包括在一个多边形里头。 语法: IsPointInPolygon(point, polygon) point: GeoPoint类型 polygon:一个多边形,判断point是否包括在polygon中 |
| AddVirtualLayer | 方法,用于增加虚拟矢量层。 语法: AddVirtualLayer(minZoom,MaxZoom) minZoom和MaxZoom(可选)参数用于指定这个图层的缩放比例范围,只有缩放比例位于这个范围内时,图层才可见。 参考:使用虚拟矢量层 |
| CenterTo | 方法,用于地图中心的经纬度。 语法: CenterTo(X, Y) X:中心经度 Y:中心维度 例如将地图中心设置为深圳: map.CenterTo(114.06, 22.55) |
| CreatFromJsonObject | 方法,根据Json节点生成形状。 法为: CreatFromJsonObject(Feature,MaxCount) Feature: JObject类型,GeoJson文件中的一个Feature节点。 MaxCount:可选参数,对于MultiLineString和MultiPolygon类型的数据,可用此参数设置生成的线条和多边形的最大数量。 参考:使用GeoJson文件 |
|
CreateRecordsFromKML GetKmlStyleColor |
方法,CreateRecordsFromKML用于读取并解析KML文件,GetKmlStyleColor用于将KML文件中的字符串格式的颜色转换为可使用的颜色 参考:使用KML文件 |
| CreateRecordsFromSHP |
方法,CreateRecordsFromSHP用于读取并解析SHP文件, 参考:使用SHP文件 |
| CreateMarkShape | 方法,用于创建自绘制的标记形状。 参考:自行绘制标记 绘制复杂的形状 |
| RolateGeoPoints | 方法,用于对旋转形状。 语法: RolateGeoPoints(points,angle)
points:用于生成形状的经纬度点,IEnumerable(Of GeoPoint)类型,例如GeoPoint的集合或数组。 |
| RolateGeoPointString | 方法,用于旋转形状。 语法: RolateGeoPointString(geoPointsString, angle) geoPointsString,经纬度点的字符串形式,数据用逗号隔开,奇数位置为经度,偶数位置为纬度 angle:旋转度数,正数顺时钟旋转,负数逆时钟旋转。 所以其实不是旋转形状,而是旋转生成形状的数据 参考:设计一个地图编辑器 |
| MoveGeoPointString | 方法,用于移动形状 MoveGeoPointString(geoPointsString,dx,dy) geoPointsString,经纬度点的字符串形式,数据用逗号隔开,奇数位置为经度,偶数位置为纬度 dx:水平移动距离,单位为像素 dy:垂直移动距离,单位为像素 |
| IsGeoPointInPolygon |
方法,用于判断某个点是否包括在一个指定的形状中,语法: IsGeoPointInPolygon(gp,polygon) gp:
GeoPoint类型 |
| ToGeoPoint ToGeoPointsString |
用于将以像素为单位的点坐标转换为以经纬度为单位的坐标,语法: ToGeoPoint(point) ToGeoPointsString(pointsString) point:Point类型,指定要被转换的单个点。 pointsString:字符串型,指定要被转换的多个点,数据用逗号分割,奇数位为水平坐标,偶数位为垂直坐标。 |
| ToScreenPoint ToScreenPointsString |
用于将经纬度坐标转换为以像素为单位的坐标,语法: ToScreenPoint(point) ToScreenPointsString(pointsString) point:Point类型,指定要被转换的单个点。 pointsString:字符串型,指定要被转换的多个点,数据用逗号分割,奇数位为经度,偶数位为维度。 |
| TileSource | 属性,用于设置地图源,TileSoureEnum类型,可选值有: None Road Aerial Hybrid Custom 参考: 使用Map控件 |
| Zoom MinZoom MaxZoom |
属性,分别用于指定地图的当前缩放级别,允许的最大缩放级别和最小缩放级别。 缩放级别每增加1,则地图分辨率就翻倍,如果缩放级别超过允许范围,地图将不可见。 |
| Center | 属性,GeoPoint类型,返回或设置地图中心的经纬度坐标 例如将地图中心设置为深圳: map.Center = New GeoPoint(114.06, 22.55) |
| MouseGeoPosition | 属性,GeoPoint类型,返回当前鼠标所在位置的经纬度坐标 |
| AllowTranslating | 属性,是否允许通过鼠标拖动或平移工具移动地图。 |
| AllowZooming | 属性,是否允许通过鼠标滚轮或缩放工具缩放地图。 |
| ZoomToolVisible | 属性,是否显示缩放工具 |
| PanToolVisible | 属性,是否显示平移工具 |
| DistanceScaleVisible | 属性,是否显示比例尺 |
| ZoomChanged | 事件,地图的缩放级别发生变化后执行 |
| CenterChanged | 事件,地图中心位置发生变化后执行 |
| GetMapTile | 事件,获取地图瓦片时执行,参考:使用高德地图 |
| OwerDrawMark | 事件,绘制自定义标记形状时执行,参考:自行绘制标记 绘制复杂标记 |
| GetDrawingBounds | 事件,获取自定义形状的绘制区域时执行,参考:绘制复杂标记 |
| GetVirtualItems | 事件,绘制虚拟矢量层的时候执行,参考:使用虚拟矢量层 |