高德地图开发
高德地图提供了强大的二次开发功能。
高德地图开发文档:
https://lbs.amap.com/api/webservice/summary
高德地图的开发功能很多,本节仅提供一个小例子,其余的请自行研究。
示例
本节内容可以参考CaseStudy目录下的文件"地图.Table"的示例三十三。
本示例是要获取天安门广场附近的新能源车充电站:

如何通过高德地图获取兴趣点,可以看看:
https://lbs.amap.com/api/webservice/guide/api-advanced/newpoisearch
根据上述说明,可以写出窗口的AfterLoad事件代码:
Dim
map
As
GeoMap = e.Form.Controls("Map1").GeoMap
Dim
layer
As
New
VectorLayer()
layer.LabelVisibility = LabelVisibility.AutoHide
layer.LabelStyle.ForeColor = Color.AliceBlue
'标题文本颜色
layer.LabelStyle.BackColor = Color.RosyBrown
'标题字体颜色
map.Layers.Add(layer)
Dim
CustomShape
As
MarkImageShape = map.CreateImageShape("charge.png")
Dim
page_size
As
Integer
= 20
'每次(页)获取20个
Dim
page_num
As
Integer
= 1
'页号
Dim
key
As
String
=
"d64d0f56a5e54a33497f7b79f1a43f9e"
'请替换为自己的appkey
While
True
Dim
url
As
String
=
"https://restapi.amap.com/v5/place/around?location=116.3974,39.9184&radius=10000&types=011100&page_size={0}&page_num={1}&key={2}"
url = CExp(url, page_size, page_num, key)
Dim
http
As
New
HttpClient(url)
Dim
jo
As
JObject = JObject.Parse(http.GetData())
If
jo("status")
<>
"1"
Then
'如果获取失败
Exit
While
End
If
For
Each
jt
As
JToken
In
jo("pois")
Dim
xy()
As
String
= jt("location").ToString().Split(",")
Dim
mark
As
New
VectorPlacemark()
Dim
caption
As
String
= jt("name").ToString()
If
caption.IndexOf("(")
> 0
Then
'去掉标题中括号部分的内容,要不太长了
caption = caption.Substring(0, caption.IndexOf("("))
End
If
mark.Marker.Caption = caption
mark.Marker.LabelPosition = LabelPosition.Bottom
mark.LabelWidth = 200
'标题宽度
mark.Geometry =
New
GeoPoint(CDbl(xy(0)),
CDbl(xy(1)))
mark.Marker.Size =
New
SizeF(32, 32)
mark.Marker.Shape = MarkerShape.Custom
mark.Marker.CustomShape = CustomShape
layer.Items.Add(mark)
Next
page_num = page_num + 1
End
While
开发要点:
一般先在线运行高德文档中的示例,得到其返回的json文本,将json文本复制到编辑工具(例如vscode),排版后分析其结构,分析清楚后再回到Foxtable写代码。