继续webgis开发的零基础入门教程,今天讲两个核心功能:地图控件 和点标记。
一、地图控件:
很多人以为缩放按钮、比例尺是地图自带的。其实不是,高德API默认啥控件都没有,需要你自己一个个加。
常用控件有哪些?
| 控件 | 功能 | 代码 |
|---|---|---|
| ToolBar | 缩放、平移控制条 | new AMap.ToolBar() |
| Scale | 左下角比例尺 | new AMap.Scale() |
| HawkEye | 右下角鹰眼缩略图 | new AMap.HawkEye() |
| MapType | 标准/卫星图切换按钮 | new AMap.MapType() |
| ControlBar | 3D视角控制罗盘 | new AMap.ControlBar() |
怎么加?插件化加载
高德API用AMap.plugin()按需加载控件,避免一次性加载所有资源:
javascript
AMap.plugin([
'AMap.ToolBar',
'AMap.Scale',
'AMap.HawkEye',
'AMap.MapType',
'AMap.ControlBar'
], function() {
// 加载完成后,逐个添加到地图
map.addControl(new AMap.ToolBar()); // 工具条
map.addControl(new AMap.Scale()); // 比例尺
map.addControl(new AMap.HawkEye()); // 鹰眼
map.addControl(new AMap.MapType()); // 地图类型切换
map.addControl(new AMap.ControlBar()); // 控制条
});
注意:控件是插件,先plugin()加载,再addControl()添加。如果直接new会报错,因为控件代码还没加载进来。
二、点标记
地图能显示了,控件也加了,接下来要往上面放东西。**点标记(Marker)**可以理解为地图覆盖物,就是地图上那个红色图钉,用来标位置。
实际操作过程中,会⽤⼀个图形来表示。根据经纬度去创建marker,这就是点标记,然后 再添加到地图上就可以,现在把他做成交互式的。
1. 点击事件:获取经纬度
绑定click事件,点击地图时获取当前位置的经纬度:
javascript
// 监听地图点击事件
map.on('click', function(event){
console.log(event)
console.log(`经度: ${event.lnglat.lng},纬度: ${event.lnglat.lat}`)
})
这⾥注意:在控制台打印时候,字符串时,用的是反引号 `````(键盘1左边那个键),不是单引号。否则模板字符串的变量插值不会生效。
看⼀下效果:

这就实现了在控制台输出经纬度的操作。
2. 结合点击事件,实时添加标记
⾸先基于坐标来绘制点。

代码:
javascript
// 添加点
// 创建marker对象
var marker = new AMap.Marker({
position: new AMap.LngLat(114.255025, 30.62157)
})
// 添加到地图
map.add(marker)
上⾯的例⼦,只能是先指定经纬度画点,我们也可以结合地图事件达到实时点击画点,效果如下:

实现代码:
javascript
// 监听地图点击事件
map.on('click', function(event){
// console.log(event)
// console.log(`经度: ${event.lnglat.lng},纬度: ${event.lnglat.lat}`)
// 创建marker对象
var marker = new AMap.Marker({
position: event.lnglat,
})
// 添加到地图
map.add(marker)
})
这样就可以点击⼀次,添加⼀个marker进来。可以添加很多个点标记。
事实上,点标记是可以很灵活的,⽐如标记⼀个地物,钻孔,建筑物等。
⽐如下⾯的天坛的地物标 记。就可以做得很漂亮。

总结:
本篇讲了点标记,能在地图上插上图钉。
但GIS不只是标点,还要画线、画面、画范围。下一期讲几个核心图形:折线、多边形、圆形、矩形,以及怎么在线编辑。