지도 라이브러리 'Leaflet'에 cluster 기능 추가
11118 단어 DataVisualization자바스크립트leaflet시각화
이전 기사에서 소개한 지도 라이브러리 "Leaflet"에 Cluster 기능을 추가하는 방법을 써 갑니다.
Cluster 기능은 무엇입니까?
이른바 이런 녀석입니다. 지도상의 핀이 많아졌을 때 축소하면 거리가 가까운 핀끼리 하나의 그룹에 굳어 주는 기능입니다. Cluster에는 몇 개의 핀이 포함되어 있는지 숫자로 표시됩니다.
이 Cluster를 클릭하면 해당 Cluster로 확대하여 세부 정보를 확인할 수 있습니다.
구현 방법
Leaflet.markercluster 을 사용합니다.
기본적인 지도의 표시 방법은 나의 이전의 기사 「 지도 라이브러리의 본명 「Leaflet」을 5분으로 이해&도입한다 」를 봐 주세요.
우선, JS와 CSS의 로딩.
<script src="https://unpkg.com/[email protected]/dist/leaflet.markercluster.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/MarkerCluster.css" />
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/MarkerCluster.Default.css" />
아래에서는 무작위로 30개의 핀을 지도에 추가합니다.
var markers = L.markerClusterGroup();
for (var i = 0; i < 30; i++) {
var marker = L.marker([51.5 + (Math.random() / 10), -0.09 + (Math.random() / 10)]);
marker.bindPopup("<b>Hello</b>");
markers.addLayer(marker);
}
mymap.addLayer(markers);
브라우저에서 보면 이런 느낌이 듭니다.
축소
확대
어때? 좋은 느낌의 애니메이션으로 Cluster가 작동하고 있습니다.
소스 코드의 전체 용도는 다음과 같습니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin="" />
<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script>
<script src="https://unpkg.com/[email protected]/dist/leaflet.markercluster.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/MarkerCluster.css" />
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/MarkerCluster.Default.css" />
<title>Leaflet</title>
</head>
<body>
<div id="mapid"></div>
</body>
</html>
<style media="screen">
#mapid {
height: 800px;
width: 100%;
}
</style>
<script type="text/javascript">
var mymap = L.map('mapid').setView([51.505, -0.09], 12);
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
attribution: 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
maxZoom: 18,
id: 'mapbox.streets',
accessToken: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
}).addTo(mymap);
var markers = L.markerClusterGroup();
for (var i = 0; i < 30; i++) {
var marker = L.marker([51.5 + (Math.random() / 10), -0.09 + (Math.random() / 10)]);
marker.bindPopup("<b>Hello</b>");
markers.addLayer(marker);
}
mymap.addLayer(markers);
</script>
Reference
이 문제에 관하여(지도 라이브러리 'Leaflet'에 cluster 기능 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mitch0807/items/52698a561d4255578657텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)