Delete demo.vue
This commit is contained in:
parent
cfd27691bc
commit
bbeeda0333
|
@ -1,229 +0,0 @@
|
|||
<template>
|
||||
<div class="hello">
|
||||
<div id="mapContainer"></div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script src="https://webapi.amap.com/maps?v=2.0&key==您申请的key值AMap.MarkerCluster"></script>
|
||||
<script src="https://a.amap.com/jsapi_demos/static/china.js"></script>
|
||||
<script>
|
||||
export default {
|
||||
name: 'HelloWorld',
|
||||
|
||||
data() {
|
||||
return {
|
||||
map: null,
|
||||
cluster: null,
|
||||
points: [],
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.initMap();
|
||||
},
|
||||
|
||||
methods: {
|
||||
initMap() {
|
||||
this.map = new AMap.Map("mapContainer", {
|
||||
resizeEnable: true,
|
||||
center: [105, 42],
|
||||
zoom: 4,
|
||||
});
|
||||
// console.log(points)
|
||||
this.points = points;
|
||||
this.addCluster();
|
||||
},
|
||||
|
||||
addCluster(tag) {
|
||||
if (this.cluster) {
|
||||
this.cluster.setMap(null);
|
||||
}
|
||||
this.cluster = new AMap.MarkerCluster(this.map, this.points, {
|
||||
gridSize: 80,
|
||||
minClusterSize: 2, //1.x版本的把这里改成1就可以实现点数为1的水波纹效果,2.0的需要用_renderMarker
|
||||
renderClusterMarker: this._renderClusterMarker, // 自定义聚合点样式
|
||||
renderMarker: this._renderMarker, // 自定义非聚合点样式
|
||||
});
|
||||
//默认样式
|
||||
// this.cluster = new AMap.MarkerCluster(this.map, this.points, {gridSize: 80});
|
||||
},
|
||||
|
||||
_renderClusterMarker(context) {
|
||||
var count = this.points.length;
|
||||
var factor = Math.pow(context.count / count, 1 / 18);
|
||||
var div = document.createElement('div');
|
||||
var Hue = 180 - factor * 180;
|
||||
var bgColor = 'hsla(' + Hue + ',100%,40%,0.7)';
|
||||
var fontColor = 'hsla(' + Hue + ',100%,90%,1)';
|
||||
var borderColor = 'hsla(' + Hue + ',100%,40%,1)';
|
||||
var shadowColor = 'hsla(' + Hue + ',100%,90%,1)';
|
||||
// div.style.backgroundColor = bgColor;
|
||||
var size = Math.round(30 + Math.pow(context.count / count, 1 / 5) * 20);
|
||||
div.style.width = div.style.height = size + 'px';
|
||||
// div.style.border = 'solid 1px ' + borderColor;
|
||||
div.style.borderRadius = size / 2 + 'px';
|
||||
// div.style.boxShadow = '0 0 5px ' + shadowColor;
|
||||
var content = `
|
||||
<div
|
||||
class="circle-marker-content"
|
||||
>
|
||||
<span class="item_count">${context.count}</span>
|
||||
<div class="item item1"
|
||||
style='
|
||||
height:${size}px;
|
||||
width:${size}px;
|
||||
'></div>
|
||||
<div class="item item2" style='
|
||||
height:${size + 0.4}px;
|
||||
width:${size + 0.4}px;
|
||||
'></div>
|
||||
<div class="item item3" style='
|
||||
height:${size + 0.8}px;
|
||||
width:${size + 0.8}px;
|
||||
'></div>
|
||||
<div class="item item4" style='
|
||||
height:${size + 1.2}px;
|
||||
width:${size + 1.2}px;
|
||||
'></div>
|
||||
<div class="item item5" style='
|
||||
height:${size + 1.6}px;
|
||||
width:${size + 1.6}px;
|
||||
'></div>
|
||||
</div>`
|
||||
div.innerHTML = content;
|
||||
div.style.lineHeight = size + 'px';
|
||||
div.style.color = fontColor;
|
||||
div.style.fontSize = '14px';
|
||||
div.style.textAlign = 'center';
|
||||
context.marker.setOffset(new AMap.Pixel(-size / 2, -size / 2));
|
||||
context.marker.setContent(div)
|
||||
},
|
||||
|
||||
_renderMarker(context) {
|
||||
var content = `<div
|
||||
class="circle-marker-content"
|
||||
>
|
||||
<span class="item_count">1</span>
|
||||
<div class="item item1"
|
||||
style='
|
||||
height:18px;
|
||||
width:18px;
|
||||
'></div>
|
||||
<div class="item item2" style='
|
||||
height:18.4px;
|
||||
width:18.4px;
|
||||
'></div>
|
||||
<div class="item item3" style='
|
||||
height:18.8px;
|
||||
width:18.8px;
|
||||
'></div>
|
||||
<div class="item item4" style='
|
||||
height:19.2px;
|
||||
width:19.2px;
|
||||
'></div>
|
||||
<div class="item item5" style='
|
||||
height: 19.6px;
|
||||
width: 19.6px;
|
||||
'></div>
|
||||
</div>`;
|
||||
var offset = new AMap.Pixel(-9, -9);
|
||||
context.marker.setContent(content)
|
||||
context.marker.setOffset(offset)
|
||||
},
|
||||
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- Add "scoped" attribute to limit CSS to this component only -->
|
||||
<style scoped lang="less">
|
||||
#mapContainer {
|
||||
width: 800px;
|
||||
height: 800px;
|
||||
}
|
||||
|
||||
@circleColor: #4196ff;
|
||||
|
||||
/deep/ .circle-marker-content {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
height: 1.8vh;
|
||||
width: 1.8vh;
|
||||
transform: translate(-50%, -50%);
|
||||
border-radius: 100%;
|
||||
text-align: center;
|
||||
background: @circleColor;
|
||||
border: 1px solid @circleColor;
|
||||
box-shadow: 0px 0px 14px @circleColor;
|
||||
|
||||
.item_count {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
color: #1C77C3;
|
||||
font-weight: bold;
|
||||
font-size: 13px;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
@keyframes scaless {
|
||||
0% {
|
||||
/* transform: scale(0); 将0改成1*/
|
||||
transform: scale(1);
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: scale(2);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.item {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
border-radius: 100%;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
|
||||
.item:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: -1px;
|
||||
top: -1px;
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
border: 1px solid @circleColor;
|
||||
border-radius: 100%;
|
||||
opacity: 0;
|
||||
background-color: @circleColor;
|
||||
animation: scaless 5s infinite cubic-bezier(0, 0, 0.49, 1.02);
|
||||
}
|
||||
|
||||
.item1:before {
|
||||
animation-delay: 0s;
|
||||
}
|
||||
|
||||
.item2:before {
|
||||
animation-delay: 1s;
|
||||
}
|
||||
|
||||
.item3:before {
|
||||
animation-delay: 2s;
|
||||
}
|
||||
|
||||
.item4:before {
|
||||
animation-delay: 3s;
|
||||
}
|
||||
|
||||
.item5::before {
|
||||
animation-delay: 4s;
|
||||
}
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue