引用主題地圖

API使用範例:於TGOS底圖上套疊主題地圖

 

情境假設:

假設今天使用者需要在TGOS底圖上加入一張主題地圖例:避難收容處所,以作為參考圖資。在這邊我們提供了取得主題地圖的方式,以及示如何透過圖片影像疊加層TGGroundOverlay)來承接主題地圖取出的影像,最後套疊在地圖上。

 

TGOS MAP API建置方式:

 

1.    初始化地圖:
        首先加入一張TWD97坐標的TGOS底圖,並透過TGMapOptions將地圖類型控制項關閉。接著透過TGOnlineMapfitBounds()方法,將地圖的初始位置設定在一個較小的區域範圍。

                  var pOMap =document.getElementById("TGMap");
                  var mapOptions = {
                          mapTypeControlfalse     //mapTypeControl(
關閉地圖類型控制項)
                  };
                  pMap = new TGOS.TGOnlineMap(pOMap, TGOS.TGCoordSys.EPSG3826, mapOptions); 
                  pMap.fitBounds(newTGOS.TGEnvelope(304705, 2763900, 305492, 2763483));


2.      加入主題地圖:
2.1 
取得地圖邊界及宣告主題地圖物件:
        
在加入主題地圖之前,我們先使用TGOnlineMapgetBounds( )方法來取得目前圖面的邊界範圍,作為之後加入主題地圖的查詢條件之

                  var Bounds = pMap.getBounds();

        接著宣告一個主題地圖物件「TGThemeLayer」。

                  ThemeLayer = new TGOS.TGThemeLayer();

2.2 
設定主題地圖參數:
        
每次需要取得主題地圖時,都必須透過回傳參數的方式來向伺服器送出要求,伺服器會依使用者回傳的參數即時產生相對應的圖檔。幾個必要的參數包括了所需主題圖的上下左右邊界,及回傳影像的寬度和高度。

        
在主題圖邊界的部份,我們可以直接使用目前地圖面的邊界,而影像的寬度高度則是依一開始地圖容器(<div>)的寬度高度進行設定。

                  var req = {     
                          left: Bounds.left,
                          right: Bounds.right,
                          top: Bounds.top,
                          bottom: Bounds.bottom,
                          height: 480,
                          width: 640
                  };


2.3 
取得主題地圖:
        完成參數設定的步驟之後,我們就可以使用TGThemeLayer( )getThemePic( )方法來取得主題圖。主題圖服務名稱和圖層名稱可以在主題地圖列表中找到。以範例來說,我們要取得避難收容處所服務內的避難收容處所圖層,因此服務名稱就是TGOS.TGMapServiceId.SHELTERS,而圖層名稱則是TGOS.TGMapId.SHELTERS

        getThemePic( )
的第三項參數我們可以將上一個步驟所設定的地圖參數加入(req),另外也可以要求最後的function把從伺服器取得的影像連結網址傳回來。

                 ThemeLayer.getThemePic(TGOS.TGMapServiceId.SHELTERS,TGOS.TGMapId.SHELTERS
                          reqfunction handler(url) {

2.4 將主題圖疊加TGOS底圖:
        
通過上一步驟,我們可以從伺服器取得特定範圍的指定圖層影像,接下來我們就可以將這張影像加至我們的TGOS底圖上。在這裡可以使用TGGroundOverlay( )物件來完成這個目的,首先將主題地圖的URL接進來。


        接著宣告一個空的TGGroundOverlay( )圖片影像疊加層物件,然後把現在的地圖面範圍(Bounds)、圖片影像(url)及放置的地圖名稱加到函式內,完成圖片影像套疊的操作。

                  GOverlay = new TGOS.TGGroundOverlay();
                  GOverlay.setBounds(Bounds);
                  GOverlay.setImage(url);
                  GOverlay.setMap(pMap);


2.3 
移除主題地圖
        
最後我們可以在整個function的最前端,加入一個簡單的判斷程式,當加入主題地圖的時候地圖上已經有主題地圖存在的時候,就可以使用TGGroundOverlay( )setMap(null)方法,將存在的主題地圖先行移除。

                  if (GOverlay) {       
                          GOverlay.setMap(null);
                  }

回到上方