地標分類圖層套疊

地標分類圖層套疊

TGOS擁有相當豐富的在地化資料,其中地標資料由國土測繪中心所提供,資料範圍包含全台灣,並加以分類。由於地標在空間判斷與分析上,是相當重要的參考資訊,地圖應用時也是使用者經常查詢、想要知道其屬性的資料,因此TGOS 3D API也將地標資訊發布至前端,讓使用者可以取得地標的詳細屬性資料,甚至可以變更地標的圖示樣式。

地標圖層藉由TGOS.TEPoiLayer ()物件開啟,並設定要套疊的地標類別,顯示畫面範圍內的地標。

API建置步驟

1. 初始化圖台

function InitWnd() {

        var pOMap = document.getElementById("TGMap");

        pMap =  new  TGOS.TEOnlineMap(pOMap,null,function(){

            AddPoiLayer();

            TGOS.TEEvent.addListener(pMap, "dragend", function () {

                AddPoiLayer();

            });

            TGOS.TEEvent.addListener(pMap, "zoom_changed", function () {

                AddPoiLayer();

            });

        });

    }

2.  取得地標資訊與加入圖層

    function AddPoiLayer() { //增加主題地圖的function

        if (markers.length > 0) { //假設地圖上已存在查詢後得到的標記點, 則先行移除

            for (var i = 0; i < markers.length; i++) {

                markers[i].setMap(null);

            }

            markers = [];

        } 

        var Bounds = pMap.getBounds(); //取得目前地圖的邊界值

        var req = { //依照目前圖面的邊界來取得主題地圖

            map: pMap,

            left: Bounds.getLeft(),

            right: Bounds.getRight(),

            top: Bounds.getTop(),

            bottom: Bounds.getBottom()

        };

        //取得主題地圖, 第一個及第二個參數為服務名稱及服務圖層的代碼, function handler()內的url則是取得伺服器回傳圖片的網址

        PoiLayer.getPoiLayer(TGOS.KindInfo.POI991, req, TGOS.TECoordSys.EPSG3857, function (result, status) {

            if (status == "OK") { //若查詢產生結果, 則執行以下函式

                var attris = result.fieldAttr; //取得圖徵屬性

                var pts = result.position; //取得圖徵點位

                for (var i = 0; i < pts.length; i++) {

                    var str = '名稱: ' + attris[i][0] + '<br>地址: ' + attris[i][1] + '<br>電話: ' + attris[i][2];

                    //建立迴圈後, 以字串方式組合屬性結果, attris[0]為查詢到的第一個圖徵, attris[0][0]為第一個圖徵的第一個屬性, 依此類推

                    var marker = new TGOS.TEMarker(pMap, pts[i], "", img2); //在迴圈內建立TGMarker物件, 將查詢到的所有主題圖徵繪出

                    markers.push(marker); //將標記點加入到markers陣列

//-----------------建立訊息視窗--------------------

var InfoWindowOptions = {

maxWidth:350, //訊息視窗的最大寬度

pixelOffset: new TGOS.TESize(0,0), //訊息視窗的位移量(pixel)

zIndex:0 //視窗堆疊順序

};

messageBox = new TGOS.TEInfoWindow(str, pts[i], InfoWindowOptions); //建立訊息視窗

TGOS.TEEvent.addListener(marker, "mouseover", function (pTGMarker, messageBox) {

return function () {                   

messageBox.open(pMap, marker);

}

} (marker, messageBox));//滑鼠監聽事件--開啟訊息視窗

   

TGOS.TEEvent.addListener(marker, "mouseout", function (messageBox) {

return function () {

messageBox.close();

}

} (messageBox));

                }

            }

            else 

{ //判斷查詢結果是否為查無結果

//alert('此範圍查無結果');

return;

}

        });

 

    }

 

回到上方