AI 地图
产品服务
解决方案
文档与支持
定价
更新时间: 2026/07/27 10:37
您当前查看的是 JSAPI 3.0 历史版本文档。该版本仅用于维护现有项目,不建议用于新项目开发。新项目请使用 JSAPI 4.0,如需升级现有项目,请参考升级指南
You are viewing the legacy JSAPI 3.0 documentation. This version is maintained for existing projects only and is not recommended for new development. For new projects, use the JSAPI 4.0 documentation. If you are upgrading an existing project, please refer to the Migration Guide.
简介

所有叠加或覆盖到地图的内容,我们统称为地图覆盖物。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。
覆盖物主要分为:标注(点标注、矢量图形(包括折线、多边形、圆))、信息窗口、图层。
本节重点介绍一下如何向地图添加标注,以及与地图相关的一些交互。

提供的覆盖物

可以使用map.addOverlay方法向地图添加覆盖物,使用map.removeOverlay方法移除覆盖物,注意此方法不适用于InfoWindow。
详情请见类参考

覆盖物类名说明

抽象基类

Overlay

所有的覆盖物均继承此类的方法

Marker

表示地图上的点,可自定义标注的图标

文本

Label

表示地图上的文本标注,您可以自定义标注的文本内容

折线

Polyline

表示地图上的折线

多边形

Polygon

表示地图上的多边形。多边形类似于闭合的折线,另外您也可以为其添加填充颜色

Circle

表示地图上的圆

信息窗口

InfoWindow

信息窗口也是一种特殊的覆盖物,它可以展示更为丰富的文字和多媒体信息。注意:同一时刻只能有一个信息窗口在地图上打开

地面叠加层

GroundOverlay

表示叠加在地图上的图片,图片的链接、大小、位置等属性可以自定义

海量点

PointCollection

针对点的数量很大的情况,可以使用海量点进行展示

自定义覆盖物

自定义

支持通过继承覆盖物基类Overlay,自定义覆盖物

标注点

Marker是一个用来往地图上添加点标记的类。使用它将任何你希望用户看到的兴趣点标注在地图上。
API提供了默认图标样式,您也可以通过Icon类来指定自定义图标。Marker的构造函数的参数为Point和MarkerOptions(可选)。
注意:当您使用自定义图标时,标注的地理坐标点将位于标注所用图标的中心位置,您可通过Icon的offset属性修改标定位置。
Marker使用详情请见类参考

1. 向地图添加标注

如下示例,向地图中心点添加了一个标注,并使用默认的标注样式:

var map = new BMap.Map("container");
var point = new BMap.Point(116.404,39.915);
map.centerAndZoom(point,15);
var marker = new BMap.Marker(point); // 创建标注
map.addOverlay(marker); // 将标注添加到地图中
2. 定义标注图标

通过Icon类可实现自定义标注的图标,下面示例通过参数MarkerOptions的icon属性进行设置,您也可以使用marker.setIcon()方法。

var map = new BMap.Map("container");
var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15); // 编写自定义函数,创建标注
function addMarker(point, index){ // 创建图标对象
var myIcon = new BMap.Icon("markers.png", new BMap.Size(23, 25), {
// 指定定位位置。
// 当标注显示在地图上时,其所指向的地理位置距离图标左上
// 角各偏移10像素和25像素。您可以看到在本例中该位置即是
// 图标中央下端的尖角位置。
anchor: new BMap.Size(10, 25),
// 设置图片偏移。
// 当您需要从一幅较大的图片中截取某部分作为标注图标时,您
// 需要指定大图的偏移位置,此做法与css sprites技术类似。
imageOffset: new BMap.Size(0, 0 - index * 25) // 设置图片偏移
});
// 创建标注对象并添加到地图
var marker = new BMap.Marker(point, {icon: myIcon});
map.addOverlay(marker);
}
// 随机向地图添加10个标注
var bounds = map.getBounds();
var lngSpan = bounds.maxX - bounds.minX;
var latSpan = bounds.maxY - bounds.minY;
for (var i = 0; i < 10; i ++) {
var point = new BMap.Point(bounds.minX + lngSpan * (Math.random() * 0.7 + 0.15),
bounds.minY + latSpan * (Math.random() * 0.7 + 0.15));
addMarker(point, i);
}
3. 监听标注事件

事件方法与Map事件机制相同。可参考事件部分

marker.addEventListener("click",function() {
alert("您点击了标注");
});
4. 可拖拽的标注

marker的enableDragging和disableDragging方法可用来开启和关闭标注的拖拽功能。默认情况下标注不支持拖拽,您需要调用marker.enableDragging()方法来开启拖拽功能。在标注开启拖拽功能后,您可以监听标注的dragend事件来捕获拖拽后标注的最新位置。

marker.enableDragging();
marker.addEventListener("dragend", function(e) {
alert("当前位置:"+ e.point.lng +", "+ e.point.lat);
})
标注折线

Polyline表示地图上的折线覆盖物。它包含一组点,并将这些点连接起来形成折线。 Polyline使用详情请见类参考

1. 添加折线

折线在地图上绘制为一系列直线段。可以自定义这些线段的颜色、粗细和透明度。颜色可以是十六进制数字形式(比如:#ff0000)或者是颜色关键字(比如:red)。

Polyline的绘制需要浏览器支持矢量绘制功能。在Internet Explorer中,地图使用VML绘制折线;在其他浏览器中使用SVG或者Canvas。

以下代码段会在两点之间创建6像素宽的蓝色折线:

var polyline = new BMap.Polyline(
[
new BMap.Point(116.399,39.910),
new BMap.Point(116.405,39.920)
],
{ strokeColor:"blue", strokeWeight:6, strokeOpacity:0.5 }
);
map.addOverlay(polyline);

上一篇

个性化地图

下一篇

自定义标注
本篇文章对您是否有帮助?