代码如下
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
<title>默认样式信息窗体</title>
<link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" />
<style>
html,
body,
height: 100%;
width: 100%;
}
.content-window-card {
position: relative;
box-shadow: none;
bottom: 0;
left: 0;
/* width: auto; */
width: 28rem;
padding: 0;
}
.content-window-card p {
height: 2rem;
}
.custom-info {
border: solid 1px silver;
}
div.info-top {
position: relative;
background: none repeat scroll 0 0
border-bottom: 1px solid
border-radius: 5px 5px 0 0;
}
div.info-top div {
display: inline-block;
color:
font-size: 14px;
font-weight: bold;
line-height: 31px;
padding: 0 10px;
}
div.info-top img {
position: absolute;
top: 10px;
right: 10px;
transition-duration: 0.25s;
}
div.info-top img:hover {
box-shadow: 0px 0px 5px
}
div.info-middle {
font-size: 12px;
padding: 10px 6px;
line-height: 20px;
}
div.info-bottom {
height: 0px;
width: 100%;
clear: both;
text-align: center;
}
div.info-bottom img {
position: relative;
z-index: 104;
}
span {
margin-left: 5px;
font-size: 11px;
}
.info-middle img {
float: left;
margin-right: 6px;
}
.info-span {
/* margin-left: 35px; */
font-size: 11px;
}
.info-div {
width: 140px;
display: inline-block;
margin-left: 10px;
}
.info-img {
width: 40px;
height: 40px;
}
.info-a-title {
/* color:
font-size: 16px;
}
</style>
</head>
<body>
<div id="container"></div>
<div class="info">
点击地图上的点标记,打开所添加的自定义信息窗体
</div>
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=您的高德key">
</script>
<script type="text/javascript">
var devInfo = null
var map = createMap() //1.new 一个map对象
map.clearMap(); //2.清空Map
addMarker() //3.创建点标记
//1创建map对象,
function createMap() {
//1.地图初始化时,在地图上添加一个marker标记,鼠标点击marker可弹出自定义的信息窗体
var mapData = new AMap.Map("container", {
resizeEnable: true,
center: [115.064965,35.383416], //地图展示中心点位置
zoom: 16,
mapStyle: 'amap://styles/grey' // 设置地图样式为深色模式
});
return mapData
}
//2添加点标记
function addMarker() {
var markerData = [{
title: '1号厂区',
icon: "img/gc1.png", //点标记图片路径
position: [115.065955,35.383416],
offset: new AMap.Pixel(-8, -30)
}, {
title: '2号厂区',
icon: "img/gc2.png", //点标记图片路径
position: [115.067945,35.383416],
offset: new AMap.Pixel(-3, -30)
}, {
title: '3号厂区',
icon: "img/gc3.png", //点标记图片路径
position: [115.068935,35.383416],
offset: new AMap.Pixel(-12, -30)
}]
var arr = []
markerData.forEach((item) => {
var marker = new AMap.Marker({
icon: item.icon, //点标记图片路径
position: item.position, //位置
offset: item.offset //偏移
});
arr.push(Object.assign(item, {
mapId: marker._amap_id
}))
marker.setMap(map);
// 鼠标点击marker弹出自定义的信息窗体
AMap.event.addListener(marker, 'click', function(e) {
markerClick(arr, marker)
});
// 添加闪烁特效
// setInterval(function() {
// if (marker.getAnimation() === 'AMAP_ANIMATION_NONE') {
// marker.setAnimation('AMAP_ANIMATION_BOUNCE');
// } else {
// marker.setAnimation('AMAP_ANIMATION_NONE');
// }
// }, 1000);
setInterval(function() {
if (marker.getAnimation() === 'AMAP_ANIMATION_NONE') {
marker.setAnimation('AMAP_ANIMATION_BOUNCE'); // 更换为下落动画效果
} else {
marker.setAnimation('AMAP_ANIMATION_NONE');
}
}, 1000);
})
}
//点击标记 获取所点击标记的信息以及窗体要展示的数据,创建信息窗体
function markerClick(arr, marker) {
var arrNew = arr.filter(x => x.mapId == marker._amap_id)
devInfo = arrNew && arrNew[0]
var infoWindow = createInfoWindow()
openInfoWindow(infoWindow, marker)
}
//构建自定义窗体
function createInfoWindow() {
var infoWindowData = new AMap.InfoWindow({
isCustom: true, //使用自定义窗体
content: getContent(),
offset: new AMap.Pixel(16, -45)
});
return infoWindowData
}
//处理窗体内容
function getContent() {
var content = `<div class="custom-info input-card content-window-card">
<div class="info-top">
<div><span>${devInfo.title}</span><span style="font-size:11px; margin-left:20px;color:#F00;">状态:正在运行</span></div><img
onclick="closeInfoWindow" src="https://webapi.amap.com/images/close2.gif">
</div>
<div class="info-middle" style="background-color: white;"><img class="info-img" src="img/dev.png"><a
class="info-a-title"
href="https://ditu.amap.com/detail/B000A8URXB?citycode=110105">XXXXXXXXXXX</a><br>地址:XXXXXXXXXXXXXXXXXXXXXXX<br>
<div class="info-div">总用电:5428542° </div><span class="info-span"> 总用气:454575NM<br>
<div class="info-div">发酵罐:210个 </div><span class="info-span"> 总用水量:19999111T</span><br>
<div class="info-div">工作年限:10年</div> <span class="info-span"> 总产量:27784T</span><br>
<div class="info-div">建厂时间:2011.09.08</div> <span class="info-span">建筑面积:1200M3</span>
</span>
</div>
<div class="info-bottom" style="position: relative; top: 0px; margin: 0px auto;"><img
src="https://webapi.amap.com/images/sharp.png"></div>
</div>`
return content
}
//打开窗体
function openInfoWindow(infoWindow, marker) {
debugger
infoWindow.open(map, marker.getPosition());
}
//关闭窗体
function closeInfoWindow() {
map.clearInfoWindow();
}
</script>
</body>
</html>