Openlayers 집합 표시 그리 기

본 논문 의 사례 는 Openlayers 가 집합 표 시 를 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
1.집합 표시
취 합 레이 블 이란 서로 다른 지도 해상도 에서 취 합 된 방식 으로 레이 블 점 을 보 여 주 는 방법 을 말 하 는데 그 목적 은 현재 창 에 불 러 온 레이 블 점 의 수량 을 줄 이 고 클 라 이언 트 의 렌 더 링 속 도 를 높이 기 위해 서 이다.약간 ArcGIS 와 유사 한 점 추출 이다.
2.코드 구현

<!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
  })
  });
 
  //       
  //10000        ,50000        ,100000           
  var count = 10000;
  //        
  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));
  }
 
  //        
  var source = new ol.source.Vector({
  //  
  features:features
  });
 
  //          
  var clusterSource = new ol.source.Cluster({
  //         
  distance: 40,
  //   
  source:source
  });
 
  //    
  var styleCache = {};
  //       
  var clusters = new ol.layer.Vector({
  //   
  source: clusterSource,
  //  
  style: function (feature, resolution) {
   //              
   var size = feature.get('features').length;
   //    
   var style = styleCache[size];
   //            
   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({
     //    
     text: size.toString(),
     //  
     fill: new ol.style.Fill({
     color: '#fff'
     })
    })
    })
   ];
   styleCache[size] = style;
   }
   return style;
  }
  });
  //          map 
  map.addLayer(clusters);
 
  //          
  document.getElementById('addFeatures').onclick = function () {
  //             
  var currentFeatures = clusterSource.getSource().getFeatures();
  //                 
  if (currentFeatures.length == 0) {
   clusterSource.getSource().addFeatures(features);
   clusters.setSource(clusterSource);
   map.addLayer(clusters);
  }
  };
 
  //           
  document.getElementById('removeFeatures').onclick = function () {
  //               
  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>
3.결과 전시
인터페이스 초기 화

맵 의 해상 도 를 임의로 변경(크기 조정 작업)하면 표시 점 의 수량 도 달라 집 니 다.

왼쪽 상단 의 취 합 탭 제거 단 추 를 누 르 면 인터페이스 에 있 는 모든 표 시 를 비 웁 니 다.

왼쪽 상단 에 있 는 집합 태그 추가 단 추 를 누 르 면 인터페이스 에 집합 표 시 를 다시 추가 합 니 다.

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기