最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Openlayers繪制聚合標(biāo)注

 更新時間:2020年09月28日 15:01:50   作者:桃李不言_下自成蹊  
這篇文章主要為大家詳細(xì)介紹了Openlayers實現(xiàn)聚合標(biāo)注,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Openlayers實現(xiàn)聚合標(biāo)注的具體代碼,供大家參考,具體內(nèi)容如下

1、聚合標(biāo)注

聚合標(biāo)注是指在不同的地圖分辨率下,通過聚合的方式來展示標(biāo)注點的一種方法,其目的就是為了減少當(dāng)前視窗中加載的標(biāo)注點的數(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);
  //坐標(biāo)偏移量
  var e = 8500000;
 
  for (var i = 0; i < count; i++) {
  //要素坐標(biāo)
  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
  });
 
  //初始化聚合標(biāo)注數(shù)據(jù)源
  var clusterSource = new ol.source.Cluster({
  //標(biāo)注元素之間的間距
  distance: 40,
  //數(shù)據(jù)源
  source:source
  });
 
  //樣式緩存
  var styleCache = {};
  //初始化矢量圖層
  var clusters = new ol.layer.Vector({
  //數(shù)據(jù)源
  source: clusterSource,
  //樣式
  style: function (feature, resolution) {
   //當(dāng)前聚合標(biāo)注數(shù)據(jù)源的要素大小
   var size = feature.get('features').length;
   //定義樣式
   var style = styleCache[size];
   //如果當(dāng)前樣式不存在則創(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;
  }
  });
  //將聚合標(biāo)注圖層添加到map中
  map.addLayer(clusters);
 
  //獲取添加聚合標(biāo)注按鈕
  document.getElementById('addFeatures').onclick = function () {
  //獲取聚合標(biāo)注數(shù)據(jù)源中的要素
  var currentFeatures = clusterSource.getSource().getFeatures();
  //如果當(dāng)前數(shù)據(jù)源中沒有任何要素則添加
  if (currentFeatures.length == 0) {
   clusterSource.getSource().addFeatures(features);
   clusters.setSource(clusterSource);
   map.addLayer(clusters);
  }
  };
 
  //獲取移除聚合標(biāo)注的按鈕
  document.getElementById('removeFeatures').onclick = function () {
  //清除聚合標(biāo)注數(shù)據(jù)源中的所有元素
  clusterSource.getSource().clear();
  //從map中移除聚合標(biāo)注圖層
  map.removeLayer(clusters);
  };
 };
 </script>
</head>
<body>
 <input type="button" name="name" value="添加聚合標(biāo)簽" id="addFeatures" />
 <input type="button" name="name" value="移除聚合標(biāo)簽" id="removeFeatures" />
 <div id="map"></div>
</body>
</html>

3、結(jié)果展示

初始化界面

隨意更改地圖的分辨率(進(jìn)行縮放操作),標(biāo)注點的數(shù)量也會跟著改變

單擊左上角的移除聚合標(biāo)簽按鈕,則會清空界面上的所有標(biāo)注

單擊左上角的添加聚合標(biāo)簽按鈕,則會在界面上重新添加聚合標(biāo)注

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • ES6中Array.find()和findIndex()函數(shù)的用法詳解

    ES6中Array.find()和findIndex()函數(shù)的用法詳解

    ES6為Array增加了find(),findIndex函數(shù)。find()函數(shù)用來查找目標(biāo)元素,找到就返回該元素,找不到返回undefined,而findIndex()函數(shù)也是查找目標(biāo)元素,找到就返回元素的位置,找不到就返回-1。下面通過實例詳解,需要的朋友參考下吧
    2017-09-09
  • 你不知道的Git?log還有這種用法

    你不知道的Git?log還有這種用法

    這篇文章主要為大家介紹了你不知道的Git?log竟然還有這種用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • 微信小程序--onShareAppMessage分享參數(shù)用處(頁面分享)

    微信小程序--onShareAppMessage分享參數(shù)用處(頁面分享)

    本篇文章主要介紹了微信小程序的頁面分享onShareAppMessage分享參數(shù)用處的相關(guān)資料。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-04-04
  • 微信js-sdk上傳與下載圖片接口用法示例

    微信js-sdk上傳與下載圖片接口用法示例

    這篇文章主要介紹了微信js-sdk上傳與下載圖片接口用法,結(jié)合實例形式分析了基于上傳圖片接口(uploadImage)和下載圖片接口(downloadImage)針對圖片操作的相關(guān)技巧,需要的朋友可以參考下
    2016-10-10
  • js跳轉(zhuǎn)頁面方法實現(xiàn)匯總

    js跳轉(zhuǎn)頁面方法實現(xiàn)匯總

    js跳轉(zhuǎn)頁面的方法有很多,本文搜集整理了一些,個人感覺還不錯,希望對大家有所幫助
    2014-02-02
  • d3.js實現(xiàn)簡單的網(wǎng)絡(luò)拓?fù)鋱D實例代碼

    d3.js實現(xiàn)簡單的網(wǎng)絡(luò)拓?fù)鋱D實例代碼

    最近一直在學(xué)習(xí)d3.js,大家都知道d3.js是一個非常不錯的數(shù)據(jù)可視化庫,我們可以用它來做一些比較酷的東西,比如可以來顯示一些簡單的網(wǎng)絡(luò)拓?fù)鋱D,這篇文中就通過實例代碼給大家介紹了如何利用d3.js實現(xiàn)簡單的網(wǎng)絡(luò)拓?fù)鋱D,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • 圖文詳解JavaScript的原型對象及原型鏈

    圖文詳解JavaScript的原型對象及原型鏈

    許多人對JavaScript的原型及原型鏈仍感到困惑,網(wǎng)上的文章又大多長篇大論,令讀者不明覺厲。下面小編將用最簡潔明了的圖文介紹JavaScript的原型及原型鏈。
    2016-08-08
  • javascript實現(xiàn)前端input密碼輸入強(qiáng)度驗證

    javascript實現(xiàn)前端input密碼輸入強(qiáng)度驗證

    這篇文章主要為大家詳細(xì)介紹了javascript實現(xiàn)前端input密碼輸入強(qiáng)度驗證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 微信小程序tabBar自定義彈窗遮擋不住解決技巧

    微信小程序tabBar自定義彈窗遮擋不住解決技巧

    這篇文章主要為大家介紹了微信小程序tabBar自定義彈窗遮擋不住解決技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • js 靜態(tài)動態(tài)成員 and 信息的封裝和隱藏

    js 靜態(tài)動態(tài)成員 and 信息的封裝和隱藏

    一下用面向?qū)ο蟮南嚓P(guān)概念來解釋js中的仿面向?qū)ο螅驗閖s中不像其他語言,不存在面向?qū)ο笳Z言的相關(guān)特性
    2011-05-05

最新評論

民勤县| 合水县| 蒙城县| 宁波市| 榆社县| 九寨沟县| 内乡县| 辽宁省| 新和县| 山阳县| 蓬安县| 五台县| 九江县| 邻水| 肃南| 汝南县| 阿克陶县| 乐至县| 天祝| 泗洪县| 舞钢市| 定结县| 鱼台县| 靖宇县| 无为县| 荆门市| 随州市| 巫山县| 凭祥市| 南投县| 余干县| 赣州市| 六安市| 霍林郭勒市| 卢湾区| 永嘉县| 多伦县| 太原市| 河西区| 军事| 阿城市|