建立地圖控制DIV物件

API使用範例:建立地圖控制DIV物件

 

情境假設:

使用者可自行建立支援API功能之客製化控制項並放置在地圖畫面上任意位置,來對地圖進行更多的操作。使用者自行建立地圖中心點以及設定地圖層級等客製化控制項。

 

TGOS MAP API建置方式:

 

1. 初始化地圖:
    首先宣告一個TGOnlineMap( )物件,在網頁上建立一個地圖,並選擇座標系統。
                        
var mapDiv, map;

                  var coordSys = TGOS.TGCoordSys.EPSG3826;
          function onload() {

            mapDiv = document.getElementById("mapDiv");

            map = new TGOS.TGOnlineMap(mapDiv, coordSys);

     }

2. 建立與設定DIV物件

2.1 建立地圖控制DIV物件

建立圖台後,新增二項DIV物件至地圖畫面,並指定擺放位置。

            var centerControlDiv = document.createElement('div');

              var ZoomControlDiv = document.createElement('div');

       var centerControl = newCenterControl(centerControlDiv, map);

            var zoomControl = newZoomControl(ZoomControlDiv, map);

            //設定網頁顯示層級

            centerControlDiv.index = 1;

            zoomControl.index = 1;

            //將控制項放到TOP_CENTER

              map.controls[TGOS.TGControlPosition.TOP_CENTER].push(centerControlDiv);

            //將控制項放到Bottom_CENTER

                  map.controls[TGOS.TGControlPosition.BOTTOM_CENTER].push(ZoomControlDiv);

 

2.2 設置中心點

透過設定中心點功能,使用者可指定某一座標作為其中心點,並使用DIV物件進行控制。

            function CenterControl(controlDiv, map) {

                  //設定中心點座標

            var lonlatCenter = new TGOS.TGPoint(120.5,23.5);

                  //建立控制項UI

            var controlUI = document.createElement('div');

                  //取得座標系統

            var mSRS = map.getCoordSys();

                  //設定控制項UI樣式(style):

                  //設定class

            controlUI.setAttribute("class""customControl");

                  //設定背景顏色

            controlUI.style.backgroundColor = '#fff';

                  //設定邊框粗細風格

            controlUI.style.border = '2px solid #fff';

                  //設定圓角風格

            controlUI.style.borderRadius = '3px';

                  //設定陰影

            controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)';

                  //設定滑鼠游標樣式

            controlUI.style.cursor = 'pointer';

                  //設定下邊界

            controlUI.style.marginBottom = '22px';

                  //設定文字置中

            controlUI.style.textAlign = 'center';

                  //設定div Title

            controlUI.title = '按下設定中心點';

                  //DIV 物件加入圖面

            controlDiv.appendChild(controlUI);

 

                  //建立控制項UI內容

            var controlText = document.createElement('div');

                  //文字顏色

            controlText.style.color = 'rgb(25,25,25)';

                  //文字字型

            controlText.style.fontFamily ='Roboto,Arial,sans-serif';

                  //文字大小

            controlText.style.fontSize = '16px';

                  //行高

            controlText.style.lineHeight = '38px';

            controlText.style.paddingLeft = '5px';

            controlText.style.paddingRight = '5px';

                  //設定顯示文字

            controlText.innerHTML = '設定中心點';

                  //設定控制項UI內容點擊事件

            controlUI.addEventListener('click'function () {

                var realCenter;

                          //判斷是否座標轉換

                if (mSRS == TGOS.TGCoordSys.EPSG3826) {

                    var xy = TGOS.WGS84toTWD97(lonlatCenter.x, lonlatCenter.y);

                    realCenter = new TGOS.TGPoint(xy.x, xy.y);

                }

                else if (mSRS == TGOS.TGCoordSys.EPSG3825) {

                    var xy = TGOS.WGS84toTWD67(lonlatCenter.x, lonlatCenter.y);

                    realCenter = new TGOS.TGPoint(xy.x, xy.y);

                }

                else

                    realCenter = lonlatCenter;

                map.setCenter(realCenter);

            });

                  //將控制項內容加至UI控制項內

            controlUI.appendChild(controlText);

        }

 

2.3 設定地圖層級

使用者可預先設定地圖縮放層級,並使用DIV物件進行操作。

          //客制化控制項-指定地圖縮放層級

          function ZoomControl(controlDiv, map) {

                  //建立控制項UI

            var controlUI = document.createElement('div');

                  //設定class

            controlUI.setAttribute("class", "customControl");

                  //設定背景顏色

            controlUI.style.backgroundColor = '#fff';

                  //設定邊框粗細風格

            controlUI.style.border = '2px solid #fff';

                  //設定圓角風格

            controlUI.style.borderRadius = '3px';

                  //設定陰影

            controlUI.style.boxShadow = '0 2px 6px rgba(0,0,0,.3)';

                  //設定滑鼠游標樣式

            controlUI.style.cursor = 'pointer';

                  //設定下邊界

            controlUI.style.marginBottom = '22px';

                  //設定文字置中

            controlUI.style.textAlign = 'center';

                  //設定div Title

            controlUI.title = '按下設定地圖層級';

                  //DIV 物件加入圖面

            controlDiv.appendChild(controlUI);

                  //建立控制項UI內容

            var controlText = document.createElement('div');

                  //文字顏色

            controlText.style.color = 'rgb(25,25,25)';

                  //文字字型

            controlText.style.fontFamily ='Roboto,Arial,sans-serif';

                  //文字大小

            controlText.style.fontSize = '16px';

                  //行高

            controlText.style.lineHeight = '38px';

            controlText.style.paddingLeft = '5px';

            controlText.style.paddingRight = '5px';

                  //設定顯示文字

            controlText.innerHTML = '設定地圖層級';

                  //設定控制項UI內容點擊事件

            controlUI.addEventListener('click'function () {

               map.setZoom(8);

            });

                  //將控制項內容加至UI控制項內

            controlUI.appendChild(controlText);

         

        }

回到上方