1. 程式人生 > >如何用css3做openLayers3的閃爍效果

如何用css3做openLayers3的閃爍效果

最近在做地圖上的一個故障指示器,  要求有故障時,此指示器會呈現不同的展現樣式, 用閃爍最好了!

但openLayers3中沒有閃爍的效果,所以就藉助CSS3的動畫效果了,反正openLayers3也是使用了h5+css的,它們通用。

最終的效果是:

第一步:

在你的地圖HTML檔案中加一個div:

<!-- 故障指示器的閃爍 -->
<div id="css_animation"></div>

就這麼一條哦!不要懷疑呢!

第二步:給這個div寫css3的樣式
<style>

/** 地圖上的故障處理器顯示效果*/
#css_animation{
    height:50px;
    width:50px;
    border-radius: 25px;
    background: rgba(255, 0, 0, 0.9);
    transform: scale(0);
    animation: myfirst 3s;
    animation-iteration-count: infinite;
}
@keyframes myfirst{
    to{
        transform: scale(2);
        background: rgba(0, 0, 0, 0);
    }
}

</style>

這兩步做好後,你用chrom和360瀏覽器瀏覽應該有一個紅色的擴散的效果,如果沒有,你要換瀏覽器了。

如何把它弄到地圖上去呢?只需要
 

var point_div = document.getElementById("css_animation");
var point_overlay = new ol.Overlay({
    element: point_div,
    positioning: 'center-center'
});
map.addOverlay(point_overlay);
point_overlay.setPosition([114.04911, 30.32815833]);

就可以了。

解釋這段程式碼:首先,var point_div = document.getElementById("css_animation");獲得具有動畫效果的HTML元素;然後將其賦予 overlay 的 element 引數,overlay 還有一個引數是 positioning: 'center-center',表示 HTML 元素相對於 overlay 的定位點的方位,”center-center” 表示元素中心對準定位點中心;最後 map.addOverlay(point_overlay); 將 overlay 新增到地圖中,此時的 overlay 是不可見的,最後一行:point_overlay.setPosition([11468382.41282299,3502038.887913635]);

設定了 overlay 可見元素(也就是具有動畫的元素)的位置,這樣動畫元素就設定到相應的點了。

這樣,我們就實現了原來文章開頭的效果。

學到了什麼呢? 學到了openLayers3地圖與h5+css3相結合的辦法:如果想把H5和CSS的效果與地圖相結合,可以那麼,可以先做好HTML元素的效果,然後,用地圖上的什麼東西,把它當成一個element加入進去,它就進入了地圖了。呵呵!

我們把html的dom加到openlayers以後又需要刪除,該怎麼刪除呢?

openlayers已經給我們提供好引數了,通過getOverlays()可以獲取到map上的所有overlays 程式碼如下

map.getOverlays().clear();

 

此文來源於:https://blog.csdn.net/qingyafan/article/details/49848455的實踐成功!