百度地图使用(1)——打点、连线、添加label层

本文介绍如何使用Angular和BMap实现地图打点、添加label及路径绘制功能。通过自定义图标,为地图上的点添加信息丰富的标签,并利用Polyline连接各点形成路线。注意循环中创建元素时避免变量作用域问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,首先上代码:

$scope.initMap = function(points){
	var map = new BMap.Map('pathTrackMap');
	var point = new BMap.Point(113.843216,27.687262);
	map.centerAndZoom(point,13);
    //设置地图
	map.enableDragging();
	map.enableScrollWheelZoom();
	map.enableDoubleClickZoom();
	map.enableKeyboard();
	map.clearOverlays();
    //创建点图层和label图层
	if(points && points.length){
	    for(var i=0, len = points.length; i<len; i++) {
            //自定义图标
	    	var pointIcon = new BMap.Icon(points[i].img,new BMap.Size(27,27));
            //将标注点转化为地图上的点
	        var point = new BMap.Point(points[i].lng, points[i].lat);
            //将点转化为标注点
	        var marker = new BMap.Marker(point,{icon:pointIcon});
            //添加点图层
	        map.addOverlay(marker);
	        (function() {
                //创建label图层
	        	var label = new BMap.Label(points[i].place,{position:point});
	            marker.addEventListener("mouseover",function() {
	            	map.addOverlay(label);
	            });
	            marker.addEventListener("mouseout",function() {
	            	map.removeOverlay(label);
	            });
	         })();
	    }
        //将所有点连线,连线图层polyline
		var line = [];
		for(var i=0; i<points.length; i++){
			line.push(new BMap.Point(points[i].lng, points[i].lat));
		}
		line.push(new BMap.Point(points[0].lng, points[0].lat));
		var polyline = new BMap.Polyline(line,{strokeColor:'#2a7cc1',strokeWeight:2,strokeOpacity:0.5});
		map.addOverlay(polyline);
	}
};
//假数据
var points = [
   {'lng':113.000000,'lat':27.000000,'img': '../img/a.png','place':'hahaha'},
   {'lng':113.111111,'lat':27.111111,'img': '../img/b.png','place':'lelele'},
   {'lng':113.222222,'lat':27.222222,'img': '../img/c.png','place':'dadada'},
];
$scope.initMap(points);

这是用angular写的一个初始化地图的函数,在地图上建立了三个图层:打点point、给点添加label图层、连线line

 此处要注意的一个问题:再循环中打点,可能会导致每次循环的是最后一个i问题

(function(){

               //..................................

})()

比如这段代码,所以要在里边创建label图层:var label = new BMap.Label(points[i].place,{position:point});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值