Android百度地图水波纹动画,百度地图上Marker下的波纹实现

地图上Marker的波纹

html, body, #allmap {

width: 100%;

height: 100%;

margin: 0;

padding: 0;

}

.wave-wapper {

position: absolute;

top: 0;

left: 0;

z-index: -7982821;

}

.item {

position: absolute;

color: inherit;

background-color: blue;

border-radius: 50%;

border: 1px solid blue;

}

.item1 {

width: 25px;

height: 10px;

left: 12px;

top: 19px;

-webkit-animation: wave 2s infinite ease-in;

animation: wave 2s infinite ease-in;

-webkit-animation-delay: 0s;

animation-delay: 0s;

mask: radial-gradient(transparent 30%, #000 30%);

-webkit-mask: radial-gradient(transparent 30%, #000 30%);

}

.item2 {

width: 54px;

height: 25px;

left: -3px;

top: 12px;

-webkit-animation: wave 2s infinite ease-in;

animation: wave 2s infinite ease-in;

-webkit-animation-delay: 0s;

animation-delay: 0s;

opacity: 0;

mask: radial-gradient(transparent 55%, #000 55%);

-webkit-mask: radial-gradient(transparent 48%, #000 48%);

}

@-webkit-keyframes wave {

from {

-webkit-transform: scale(0);

transform: scale(0);

opacity: 1;

}

to {

-webkit-transform: scale(1);

transform: scale(1);

opacity: 0;

}

}

@keyframes wave {

from {

-webkit-transform: scale(0);

transform: scale(0);

opacity: 1;

}

to {

-webkit-transform: scale(1);

transform: scale(1);

opacity: 0;

}

}

移除marker

显示所有波纹

隐藏所有波纹

// 百度地图API功能

var mp = new BMap.Map("allmap");

var waveList = [];

var markerList = [];

mp.centerAndZoom(new BMap.Point(116.3964, 39.9093), 15);

mp.enableScrollWheelZoom();

//地图点击事件

mp.addEventListener("click", function(e) {

var marker = new BMap.Marker(e.point),

waveItem;

mp.addOverlay(marker);

markerList.push(marker);

for(var i = 0, len = waveList.length; i < len; i++){

if(!waveList[i].hasMarker){

waveItem = waveList[i];

break;

}

}

if(!waveItem){

waveItem = addWaveToMarker(mp);

}

marker.waveItem = waveItem;

//绑定标记

waveItem.hasMarker = true;

//鼠标悬浮在marker上的监听

marker.addEventListener("mouseover", function(e) {

displaySingleWave(this, true);

});

//鼠标移出marker的监听

marker.addEventListener("mouseout", function(e) {

displaySingleWave(this, false);

});

//marker移除监听

marker.addEventListener('remove',function(e){

//移除marker是波纹对象绑定标记置为false

if(this.waveItem){

this.waveItem.hasMarker = false;

this.waveItem.style.display = 'none';

}

})

});

//为地图添加波纹dom

function addWaveToMarker(mp){

var waveWapper = document.createElement('div'),

waveChild1 = document.createElement('div'),

waveChild2 = document.createElement('div');

waveWapper.classList = 'wave-wapper';

waveChild1.classList = 'item item1';

waveChild2.classList = 'item item2';

waveWapper.appendChild(waveChild1);

waveWapper.appendChild(waveChild2);

mp.getPanes().markerPane.appendChild(waveWapper);

waveList.push(waveWapper);

return waveWapper;

}

//移除所有marker

function removeMarkers(){

for(var i = 0, len = markerList.length; i < len; i++){

mp.removeOverlay(markerList[i]);

}

markerList = [];

}

//显示所有波纹

function displayWaveList(isShow){

for(var i = 0, len = markerList.length; i < len; i++){

displaySingleWave(markerList[i], isShow ? true : false)

}

}

//显隐波纹

function displaySingleWave(marker, isShow){

var cssValue = isShow ? 'block' : 'none';

if(marker && marker.waveItem){

if(isShow){

var pixel = mp.pointToOverlayPixel(marker.point);

marker.waveItem.style.left = pixel.x - 26 + "px";

marker.waveItem.style.top = pixel.y - 25 + "px";

}

marker.waveItem.style.display = cssValue;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值