標記群聚點擊放大
API使用範例:標記群聚點擊放大
情境假設:
當使用者需要在地圖上呈現出大量的點資料內容時,會因為縮放階層所造成的顯示範圍變化,使得這些點資料在較小比例尺中呈現不易,點資料並無法被使用者有效辨認。在實務上的解決辦法,多會運用群聚的方式來簡化資料的呈現數量,將地圖範圍中各資料間的距離所代表的權重計算出來後,便可將具有空間上較高權重的資料比此群聚在一塊顯示,並根據不同的縮放階層調整群聚的結果。
TGOS MAP API建置方式:
1.初始化圖台並設定之後要用來存放群聚標記點的物件容器(mCluster)。
var mapDiv, map, markers, mCluster;
function main() {
mapDiv = document.getElementById("TGMap");
map = new TGOS.TGOnlineMap(mapDiv, TGOS.TGCoordSys.EPSG3826
}
2.呼叫TGOS MAP API的TGOS.TGMarkerCluster()類別來使用群聚標記點功能,並透過設置該類別中的各方法屬性參數,來達到客製化制訂群聚標記點呈現的方式。
function addMarkerClusters() { //使用群聚標記點功能
mCluster = new TGOS.TGMarkerCluster(map, markers, {}); //建立群聚標記點物件
mCluster.setMaxZoom(21); //設定群聚標記點最大縮放範圍
mCluster.setVisible(true); //設定群聚標記點是否為顯示狀態
mCluster.setSearchBounds(30); //設定群聚標記點的搜尋範圍(單位px)
mCluster.redrawAll(true); //是否重新繪製群聚標記點物件
mClusters.push(mCluster);
3.使用TGOS.TGEvent()類別中的addListener()方法來建立一個地圖監聽事件clusterclick,以偵測群聚點標記的點擊事件,讓地圖可以做出符合點範圍的移動(fitBounds())與縮放(setZoom())的動作。
TGOS.TGEvent.addListener(mCluster, "clusterclick", function (e) {
if (e.specifiedCluster.length > 1) {
map.fitBounds(e.clusterEnvelope);
map.setZoom(map.getZoom() - 1);
}