近期项目中使用百度地图做一些项目,涉及到在地图上添加圆形覆盖物并配有文本说明的情况,通过百度提供的API例子发现没有现成的效果,然后了解百度API将项目使用到的效果实现出来,实现的过来如下:
1. 在百度地图的“添加/删除覆盖物”例子上改造的,因为我们用到了圆形效果
http://developer.baidu.com/map/jsdemo.htm#c1_1
2. 将无关的图形去掉保留圆形的设置代码,然后打开“添加文本标签”例子页面
http://developer.baidu.com/map/jsdemo.htm#c1_14
3. 将添加文本的代码同时作为覆盖物添加到圆形相同的点上,合并后的代码如下
// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(116.404, 39.915);
map.centerAndZoom(point, 15);
var circle = new BMap.Circle(point,
500,{
strokeColor:"#FF9800", //原型边框颜色
strokeWeight:2,
strokeOpacity:0.5,
fillColor:'#FF9800'}); //创建圆
var opts = {
position : point, // 指定文本标注所在的地理位置
offset : new BMap.Size(-50, -10) //设置文本偏移量
}
var label = new BMap.Label("天安门 1200万", opts); // 创建文本标注对象
label.setStyle({
color : "#FFF",
backgroundColor:'transparent',//文本背景色
borderColor:'transparent',//文本框边框色
fontSize : "16px",
height : "20px",
lineHeight : "20px",
fontFamily:"微软雅黑"
});
//添加覆盖物
function add_overlay(){
map.addOverlay(circle); //增加圆
map.addOverlay(label); //增加圆
}
//清除覆盖物
function remove_overlay(){
map.clearOverlays();
}
4. 最终的效果如下图