Openlayers實現擴散動態點的方法是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

在openlayers中制作危險源標識可以需要動態擴散的點(有很多種方法 可以加入jpg動圖,也可以寫css動畫) 這里提供一種思路用openlayer自帶的方法寫 并給予詳細的方法注釋供初學者學習 (所有jar包都是在線的代碼可以復制過去直接用)
<!DOCTYPE html>
<html>
<head>
<title>Icon Symbolizer</title>
<link rel="stylesheet" href="https://openlayers.org/en/v3.20.1/css/ol.css" rel="external nofollow" type="text/css">
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
<script src="https://openlayers.org/en/v3.20.1/build/ol.js"></script>
<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="external nofollow" >
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<style>
#map {
position: relative;
}
#popup {
cursor: pointer;
}
</style>
</head>
<body>
<div id="map" class="map"></div>
<div id="styleType">
</div>
<script>
//水紋擴散
var bingMap = new ol.layer.Tile({
source :new ol.source.XYZ({
crossOrigin: 'anonymous',
url:'http://www.google.cn/maps/vt?lyrs=m@189&gl=cn&x={x}&y={y}&z={z}'
})
});
var map = new ol.Map({
layers: [bingMap],
target: 'map',
view: new ol.View({
center: ol.proj.transform([112.91, 28.21], 'EPSG:4326', 'EPSG:3857'),
zoom: 5
})
});
var source = new ol.source.Vector({
wrapX: false
});
var vector = new ol.layer.Vector({
source: source
});
map.addLayer(vector);
function addRandomFeature() {
var geom = new ol.geom.Point(ol.proj.fromLonLat([112.91, 28.21]));
var feature = new ol.Feature(geom);
source.addFeature(feature);
}
var duration = 1000;
function flash(feature) {
var start = new Date().getTime();
//進行地圖水波渲染
var listenerKey = map.on('postcompose', animate);
function animate(event) {
//獲取幾何圖形
var vectorContext = event.vectorContext;
//獲取當前渲染幀狀態
var frameState = event.frameState;
//添加一個OpenLayers.Geometry幾何對象
var flashGeom = feature.getGeometry().clone();
//渲染幀狀已占時間
var elapsed = frameState.time - start;
//已占比率
var elapsedRatio = elapsed / duration;
// radius半徑為5結束為30
var radius = ol.easing.easeOut(elapsedRatio) * 25 + 5;
//不透漸變消失
var opacity = ol.easing.easeOut(1 - elapsedRatio);
//Circle樣式
var style = new ol.style.Style({
image: new ol.style.Circle({
radius: radius,
stroke: new ol.style.Stroke({
color: 'rgba(255, 0, 0, ' + opacity + ')',
width: 1 + opacity
})
})
});
//給幾何圖形添加樣式
vectorContext.setStyle(style);
//將幾何體渲染到畫布中
vectorContext.drawGeometry(flashGeom);
if (elapsed > duration) {
start = frameState.time ;
;
}
//請求地圖渲染(在下一個動畫幀處)
map.render();
}
}
//數據源添加圖層
source.on('addfeature', function(e) {
flash(e.feature);
});
addRandomFeature()
</script>
</body>
</html>
當前標題:Openlayers實現擴散動態點的方法是什么-創新互聯
轉載來源:http://www.yijiale78.com/article22/dpcocc.html
成都網站建設公司_創新互聯,為您提供企業建站、網站設計、網站收錄、定制網站、企業網站制作、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯