话不多说,直接上代码:
var points = []; //坐标点数组
var label = []; //label数组
var marker = []; //marker数组
$.each(data, function(index,value){
var myIcon = new BMap.Icon("https://api.map.baidu.com/img/markers.png", new BMap.Size(23, 25), {
offset: new BMap.Size(10, 25), // 指定定位位置
imageOffset: new BMap.Size(0, 0 - 12 * 25) // 设置图片偏移
});
var point = new BMap.Point(value.lng,value.lat);
points.push(point);
marker[index] = new BMap.Marker(point,{icon:myIcon});
label[index] = new BMap.Label("时间:"+value.datetime,{
offset: new BMap.Size(10, -30)
});
label[index].setStyle({
border: "1px solid #FF6A00",
borderRadius: "5px",
padding: "5px",
color: "#333",
backgroundColor: "white",
});
marker[index].setLabel(label[index]);
map.addOverlay(marker[index]);
label[index].addEventListener("click", function(){ //点击label隐藏label
label[index].setStyle({
display: "none",
})
});
marker[index].addEventListener("click", function(){ //点击marker显示label
label[index].setStyle({
display: "block",
})
});
});
map.setViewport(points);
这样可以设置多个marker的点击事件,想要更改label样式的话可以使用label.setStyle({});函数,与CSS样式一样,只需把CSS语法的-分隔符去掉,下一个词开头大写就行,例如background-color改成backgroundColor即可。