本文實例為大家分享了Openlayers實現(xiàn)聚合標注的具體代碼,供大家參考,具體內(nèi)容如下
膠州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!1、聚合標注
聚合標注是指在不同的地圖分辨率下,通過聚合的方式來展示標注點的一種方法,其目的就是為了減少當前視窗中加載的標注點的數(shù)量,從而提高客戶端的渲染速度,有點類似于ArcGIS的點抽稀。
2、代碼實現(xiàn)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script src="../lib/ol/ol.js"></script> <script type="text/javascript"> window.onload = function () { //初始化地圖 var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.OSM() }) ], view: new ol.View({ center: new ol.proj.fromLonLat([116.28, 39.54]), zoom: 8 }) }); //創(chuàng)建要素的數(shù)量 //10000個點沒有任何壓力,50000個點稍微有些卡了,100000個點可以把瀏覽器卡崩潰 var count = 10000; //創(chuàng)建一個要素數(shù)組 var features = new Array(count); //坐標偏移量 var e = 8500000; for (var i = 0; i < count; i++) { //要素坐標 var coordinates = [3 * e * Math.random() - e, 2 * e * Math.random() - e]; //新建點要素 features[i] = new ol.Feature(new ol.geom.Point(coordinates)); } //初始化矢量數(shù)據(jù)源 var source = new ol.source.Vector({ //要素 features:features }); //初始化聚合標注數(shù)據(jù)源 var clusterSource = new ol.source.Cluster({ //標注元素之間的間距 distance: 40, //數(shù)據(jù)源 source:source }); //樣式緩存 var styleCache = {}; //初始化矢量圖層 var clusters = new ol.layer.Vector({ //數(shù)據(jù)源 source: clusterSource, //樣式 style: function (feature, resolution) { //當前聚合標注數(shù)據(jù)源的要素大小 var size = feature.get('features').length; //定義樣式 var style = styleCache[size]; //如果當前樣式不存在則創(chuàng)建 if (!style) { style = [ //初始化樣式 new ol.style.Style({ //點樣式 image: new ol.style.Circle({ //點的半徑 radius: 10, //筆觸 stroke: new ol.style.Stroke({ color: '#fff' }), //填充 fill: new ol.style.Fill({ color: '#3399cc' }) }), //文本樣式 text: new ol.style.Text({ //文本內(nèi)容 text: size.toString(), //填充 fill: new ol.style.Fill({ color: '#fff' }) }) }) ]; styleCache[size] = style; } return style; } }); //將聚合標注圖層添加到map中 map.addLayer(clusters); //獲取添加聚合標注按鈕 document.getElementById('addFeatures').onclick = function () { //獲取聚合標注數(shù)據(jù)源中的要素 var currentFeatures = clusterSource.getSource().getFeatures(); //如果當前數(shù)據(jù)源中沒有任何要素則添加 if (currentFeatures.length == 0) { clusterSource.getSource().addFeatures(features); clusters.setSource(clusterSource); map.addLayer(clusters); } }; //獲取移除聚合標注的按鈕 document.getElementById('removeFeatures').onclick = function () { //清除聚合標注數(shù)據(jù)源中的所有元素 clusterSource.getSource().clear(); //從map中移除聚合標注圖層 map.removeLayer(clusters); }; }; </script> </head> <body> <input type="button" name="name" value="添加聚合標簽" id="addFeatures" /> <input type="button" name="name" value="移除聚合標簽" id="removeFeatures" /> <div id="map"></div> </body> </html>
分享文章:Openlayers繪制聚合標注-創(chuàng)新互聯(lián)
文章出自:http://aaarwkj.com/article22/cchscc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、企業(yè)建站、自適應網(wǎng)站、云服務器、App設(shè)計、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容