百度地图创建多个Marker标注和标签并设置监听事件

这里是另外一篇
百度地图添加SVG矢量图标
在这里插入图片描述
在这里插入图片描述

百度地图接口版本不同,里面的函数有些区别,我用的是以下版本,这个版本创建百度地图需要用
map = new BMapGL.Map(“allmap”);

<script src="//api.map.baidu.com/api?type=webgl&v=2.0&ak=秘钥"></script>

另一个版本也可以用,但是以下版本创建地图是var map = new BMap.Map(“allmap”);

<script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=秘钥"></script>

目前来说两个地图所用的函数都差不多,但是在创建矢量图标的时候会有区别。所以我现在的标注图标是服务器取出来的一张图片,而不是svg

这份地图中包括下面几个知识点

  • 百度地图添加多个标注图标定位点
  • 百度地图给多个标注添加监听(左击和右击标注监听)
  • 百度地图Marker标注点上叠加图片
  • 百度地图设置地图风格
  • 百度地图获取地图的地理位置

下面地图用到了两个版本的api,把以上两个都引入

		<div id="allmap" ></div>
			// 地图
function getMap() {
	$
			.ajax({
				url : '/productMonitor/getProductPosition',
				type : 'get',
				dataType : 'json',
				success : function(data) {
					// 百度地图API功能
					map = new BMapGL.Map("allmap");
					var point = new BMapGL.Point(119.3, 26.05);
					map.centerAndZoom(point, 13);
					map.enableScrollWheelZoom(true);
					
					//设置地图样式
						map.setMapStyleV2({
								styleJson : mapStyleBrown
							});
					//样式结束
					
					var pointArray = new Array();
					var positionList = data.positionList;
					if (positionList.length > 0) {
						for (var i = 0; i < positionList.length; i++) {
					

							var position = positionList[i];
							// 经度
							var longitude = position.longitude;
							// 纬度
							var latitude = position.latitude;
							var point = new BMapGL.Point(longitude, latitude);
							
							// 创建标注图标
							var aa = "";
							if (position.login == 0) {
								aa = "/img/productMonitor/lixian.png";
							} else if (position.login == 1) {
								aa = "/img/productMonitor/zaixian.png";
							} else {
								aa = "/img/productMonitor/guzhang.png";
							}
							var myIcon = new BMapGL.Icon(aa, new BMapGL.Size(
									40, 40));
							var marker = new BMapGL.Marker(point, {
								icon : myIcon,
							});
							map.addOverlay(marker);
							//标注结束
							
							//给标注添加一张图片,其实就是自定义覆盖物,创建了一个div,背景图片设置成我们自己的图片,然后设置边角圆化成圆形,再调整div的位置就叠加上去了。
						function ComplexCustomOverlay(point) {
								this._point = point;
							}
							ComplexCustomOverlay.prototype = new BMapGL.Overlay();
							ComplexCustomOverlay.prototype.initialize = function(
									map) {
								this._map = map;
								var arrow = this._arrow = document
										.createElement("div");
								var s = "/img/productMonitor/"
										+ position.productType + ".png";
								arrow.style.background = "url(" + s
										+ ") no-repeat center";
								arrow.style.position = "absolute";
								arrow.style.width = "29px";
								arrow.style.height = "29px";
								arrow.style.borderRadius = "3px";
								arrow.style.backgroundSize = "contain";
								map.getPanes().labelPane.appendChild(arrow);
								return arrow;
							}
							ComplexCustomOverlay.prototype.draw = function() {
								var map = this._map;
								var pixel = map
										.pointToOverlayPixel(this._point);
								this._arrow.style.left = pixel.x - 14 + 'px';
								this._arrow.style.top = pixel.y - 16 + "px";
							}
							var myCompOverlay = new ComplexCustomOverlay(point);

							map.addOverlay(myCompOverlay);
							//给标注添加一张图片结束

							// 标注监听
							pointArray[i] = new BMapGL.Point(longitude,
									latitude);

							var clickFunction = function(i) {
								return function(event) {
									//这个是我自己的一个方法
									getOne(i);
								};
							}(position.vin);

							var rightclickFunction = function(v1,v2) {
								return function(event) {
									//这个是我自己的一个方法,获取地理位置
									getStatus(v1,v2);
								};
							}(position.longitude,position.latitude);
							
							marker.addEventListener("click", clickFunction);
							marker.addEventListener('rightclick',
									rightclickFunction);
						
					// 标注监听结束
					
							// 编写自定义函数,创建标签
							var label = new BMapGL.Label(position.vin, {
								offset : new BMapGL.Size(5, -35)
							});
							label.setStyle({
								color : "#0d7e84e0",
								fontSize : "14px",
								backgroundColor : "#0b1b2bff",
								border : "0",
								fontWeight : "bold",
								borderRadius : "3px",
							});
							marker.setLabel(label);
					// 标签结束
					
					// 让所有点在视野范围内,不设置的话,
					//那么地图的大小会是前面设置的中心点和缩放倍数,
					//那么有的标注会看不到,需要你缩小地图才能看到
						map.setViewport(pointArray);
						}
					}
				},
				error : function() {
					alert('服务器超时,请重试!');
				}
			});
}



function getStatus(longitude,latitude) {
		// 根据坐标得到地址描述
			var myGeo = new BMap.Geocoder({
				extensions_town : true
			});
		
			myGeo.getLocation(new BMap.Point(longitude, latitude),
					function(result) {
						if (result) {
						alert(result.address);
							
						}
					});
}


var mapStyleBrown = [ {
	"featureType" : "land",
	"elementType" : "geometry",
	"stylers" : {
		"color" : "#0b1b2bff"
	}
}, {
	"featureType" : "water",
	"elementType" : "geometry",
	"stylers" : {
		"color" : "#1c3345ff"
	}
}, {
	"featureType" : "water",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#ffffff66",
		"weight" : 10
	}
}, {
	"featureType" : "water",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "green",
	"elementType" : "geometry",
	"stylers" : {
		"color" : "#1422151a"
	}
}, {
	"featureType" : "building",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#4a90e21a"
	}
}, {
	"featureType" : "building",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "manmade",
	"elementType" : "geometry",
	"stylers" : {
		"color" : "#12223d33"
	}
}, {
	"featureType" : "manmade",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#ffffff26"
	}
}, {
	"featureType" : "manmade",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "subwaystation",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "education",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "education",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#ffffff26",
		"weight" : 10
	}
}, {
	"featureType" : "education",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "medical",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "medical",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "scenicspots",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "scenicspots",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "entertainment",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "estate",
	"elementType" : "geometry",
	"stylers" : {
		"color" : "#4a90e226"
	}
}, {
	"featureType" : "shopping",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "transportation",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "transportation",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "highway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "highway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "nationalway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "nationalway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "provincialway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "provincialway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff00"
	}
}, {
	"featureType" : "cityhighway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "cityhighway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "arterial",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "arterial",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "tertiaryway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "tertiaryway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff00"
	}
}, {
	"featureType" : "fourlevelway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "fourlevelway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff00"
	}
}, {
	"featureType" : "local",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "local",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff00"
	}
}, {
	"featureType" : "scenicspotsway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "scenicspotsway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "universityway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "universityway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "vacationway",
	"elementType" : "geometry.fill",
	"stylers" : {
		"color" : "#1b344eff"
	}
}, {
	"featureType" : "vacationway",
	"elementType" : "geometry.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "railway",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "subway",
	"elementType" : "geometry",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "highwaysign",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "highwaysign",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "highway",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "subwaylabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "subwaylabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "tertiarywaysign",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "tertiarywaysign",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "provincialwaysign",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "provincialwaysign",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "nationalwaysign",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "nationalwaysign",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "highwaysign",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"weight" : 10
	}
}, {
	"featureType" : "nationalwaysign",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"weight" : 10
	}
}, {
	"featureType" : "provincialwaysign",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"weight" : 10
	}
}, {
	"featureType" : "highway",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffffa"
	}
}, {
	"featureType" : "nationalway",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "nationalway",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "provincialway",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "provincialway",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "cityhighway",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "cityhighway",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "arterial",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "arterial",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "arterial",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "tertiaryway",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "tertiaryway",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "tertiaryway",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "fourlevelway",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "fourlevelway",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "fourlevelway",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "local",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e2ff",
		"weight" : 10
	}
}, {
	"featureType" : "local",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "local",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "airportlabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "airportlabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "scenicspotslabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "scenicspotslabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "educationlabel",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e240"
	}
}, {
	"featureType" : "educationlabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "educationlabel",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "medicallabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "medicallabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "entertainmentlabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "entertainmentlabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "estatelabel",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e299"
	}
}, {
	"featureType" : "estatelabel",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff00"
	}
}, {
	"featureType" : "estatelabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "businesstowerlabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "businesstowerlabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "companylabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "companylabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "governmentlabel",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e266"
	}
}, {
	"featureType" : "governmentlabel",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "governmentlabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "poilabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "poilabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "restaurantlabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "restaurantlabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "hotellabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "hotellabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "shoppinglabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "shoppinglabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "carservicelabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "carservicelabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "lifeservicelabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "lifeservicelabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "transportationlabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "transportationlabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "financelabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "financelabel",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "continent",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#333333ff"
	}
}, {
	"featureType" : "continent",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffffff"
	}
}, {
	"featureType" : "city",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e280"
	}
}, {
	"featureType" : "city",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff1a"
	}
}, {
	"featureType" : "city",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "district",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "town",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e280"
	}
}, {
	"featureType" : "town",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff0"
	}
}, {
	"featureType" : "village",
	"elementType" : "labels.text.fill",
	"stylers" : {
		"color" : "#4a90e280"
	}
}, {
	"featureType" : "village",
	"elementType" : "labels.text.stroke",
	"stylers" : {
		"color" : "#ffffff00"
	}
}, {
	"featureType" : "educationlabel",
	"elementType" : "labels.text",
	"stylers" : {
		"fontsize" : 28
	}
}, {
	"featureType" : "governmentlabel",
	"elementType" : "labels.text",
	"stylers" : {
		"fontsize" : 28
	}
}, {
	"featureType" : "roadarrow",
	"elementType" : "labels.icon",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "educationlabel",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
}, {
	"featureType" : "education",
	"elementType" : "labels",
	"stylers" : {
		"visibility" : "off"
	}
} ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值