Openlayers 집합 표시 그리 기
4555 단어 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.결과 전시인터페이스 초기 화
맵 의 해상 도 를 임의로 변경(크기 조정 작업)하면 표시 점 의 수량 도 달라 집 니 다.
왼쪽 상단 의 취 합 탭 제거 단 추 를 누 르 면 인터페이스 에 있 는 모든 표 시 를 비 웁 니 다.
왼쪽 상단 에 있 는 집합 태그 추가 단 추 를 누 르 면 인터페이스 에 집합 표 시 를 다시 추가 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React가 지원되지 않는 UI 라이브러리에서도 구성 요소로 그리기캔버스에서 그림과 도형을 그릴 수 있지만, 캔버스에서 Element을 그릴 수 있는 Overlay 기능이 있습니다. 다만, 오픈라이어스는 리액트를 지원하지 않기 때문에 일반적으로 설치하면 document.create...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.