Openlayersによる集約表示
4323 ワード
本論文の例では、Openlayersの統合表示を実現するための具体的なコードを共有します。
1、集約表示
集約表示とは、異なる地図解像度において、表示点を集約的に示す方法であり、その目的は、現在のウィンドウにロードされている表示点の数を減らすことで、クライアントのレンダリング速度を高め、ArcGISに類似した点の絞りとなる。
2、コード実現
初期化画面
地図の解像度を勝手に変更しても、表示点の数は変わります。
左上の集約ラベル除去ボタンをクリックすると、画面上のすべての表示が空になります。
左上の集約ラベルを追加するボタンをクリックすると、画面上に重合表示を追加します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
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、結果の展示初期化画面
地図の解像度を勝手に変更しても、表示点の数は変わります。
左上の集約ラベル除去ボタンをクリックすると、画面上のすべての表示が空になります。
左上の集約ラベルを追加するボタンをクリックすると、画面上に重合表示を追加します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。