75
內內內 TGOS TGOS Maps 105 內內內內內內內內內內內內內內內 內內內內內內內內 內 內內內內內 TGOS MAP API 內內內內內內內 - 內內內 TGOS MAP API 內內內內 內內內內 : 內內內內內內內 內內內內 : 內內內內內內內內內內內內內內內內 105 內 7 內 1 8內

2016輕鬆開發自有網路地圖工作坊 進階班 0701

  • Upload
    family

  • View
    228

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

內政部

TGOS

TGOSMaps

「 105 年度地理資訊圖資雲服務平台推廣、營運及功能增修作業」委外服務案TGOS MAP API 推廣應用工作坊 -進階班

TGOS MAP API 實機操作主辦單位 : 內政部資訊中心承辦單位 : 財團法人空間及環境科技文教基金會

105 年 7 月 1 、 8 日

Page 2: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

2

簡報大綱一、 TGOS MAP API 範例網站進階說明

二、 TGOS MAP API 實機操作

Page 3: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

3

TGOS MAP API 組成

TGOS MAP API

TGOS MAP API(Web)

TGOS MAP API(Mobile)TGOS MAP API(Android)

TGOS MAP API(iOS)

TGOS MAP API Lite(Web)

TGOS 3D API(Web)

Page 4: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

TGOS MAP API 特色

4

• 可供 WEB 及 Mobile ( 含 Android 、 iOS) 介接,可以在網頁或行動裝置應用程式中輕鬆建立地圖平台及各項功能。• TGOS 3D API 採 HTML 5 技術無需 Plugin 安裝,將服務提升至可展現或處理 3D 圖資之環境。

支援多種系統

• 資料庫內涵豐富的台灣空間資料,使用者可以在圖台上展示、利用各種資訊。未來增加更多圖資時也方便擴充。資料豐富

• 允許使用者添加自有圖片或其他網路地圖服務,讓呈現資訊更加多元。相容性高

• 提供坐標轉換、量測、定位、查詢、路徑規劃、使用者位置(mobile) 、擴增實境 (mobile) 等功能,使用更加便利。

功能完整

Page 5: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 無須考量底層原始碼或程式工作機制,降低開發成本及門檻。

• 無須額外建立各項資料及程式碼儲存空間,減少硬體花費。

• 透過引用介接方式取得各種服務與功能,便於資源整合與共享。

為什麼要使用 API

5

Page 6: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

TGOS 電子地圖 ※ 通用版電子地圖 福衛二號衛星影像

福衛影像混合地圖 地形暈渲混合地圖 地形暈渲圖※ 擴充大比例尺 ( 一千分之一 ) 底圖服務 – 引用通用版電子地圖。 6

TGOS MAP API(Web) 基本圖資

Page 7: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

7

多種圖面標記方式點

標記符號訊息視窗

面線

文字註記

Page 8: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

8

多種定位方式門牌地址 地標名稱

道路名稱 行政區

坐標定位里程定位

最近門牌複合式定位

路口定位

Page 9: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

9

主題圖資套疊、查詢都市計畫圖

國土利用調查 非都市計畫圖

避難收容處所搜尋

Page 10: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

TGOS MAP API 服務申請• Step 1: 進入 TGOS 官網並註冊一組帳號

http://tgos.nat.gov.tw/tgos/web/tgos_home.aspx• Step 2: 點擊「網路服務查詢」

10

Page 11: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• Step 3: 服務類型選「 JavaScript API 」並進行查詢。

• Step 4: 點選「 TGOS MAP API (Web) 」

TGOS MAP API 服務申請

11

Page 12: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• Step 5: 進入購物車頁面,點選「進行申請」TGOS MAP API 服務申請

12

Page 13: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• Step 6: 填寫申請用途、 IP 、應用程式資訊等內容,之後送出申請單。等待審核通過後得到可供介接使用之 AppID 及 APIKey 。

TGOS MAP API 服務申請

13

Page 14: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

TGOS MAP API 範例網站進入頁• 提供四種介接平台範例網站入口

http://api.tgos.nat.gov.tw/TGOS_MAP_API/14

點選平台圖示按鈕,直接進入範例網站,並展開該平台範例

Page 15: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 範例網站主頁面

15

TGOS MAP API 範例網站

樹狀階層式架構目錄便於瀏覽及擴增

可隨時切換不同平台的 API 說明頁面

15

Page 16: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 功能簡介TGOS MAP API (Web) 範例網站

16

功能簡介說明功能名稱標題

Page 17: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 檢視範例TGOS MAP API (Web) 範例網站

17

Page 18: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

18

TGOS MAP API (Web) 範例網站• 功能程式碼範例 點選” See

Result” ,可實際操作該功能情境提供程式碼範例及說明

Page 19: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

19

TGOS MAP API (Web) 範例網站• 功能程式碼範例 點選” View

Model” ,可切換成全畫面

Page 20: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 快速使用範例TGOS MAP API (Web) 範例網站

20

情境下建置方式之詳細步驟及說明

此範例之情境描述

範例標題

Page 21: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

21

TGOS MAP API (Web) 範例網站• 快速使用範例 點選” See

Result” ,可實際操作該功能情境亦提供程式碼範例及說明

Page 22: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

22

TGOS MAP API (Web) 範例網站• TGOS MAP API 參考手冊

提供開發人員指南

API 列表,提供快速搜索

Page 23: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• TGOS CLOUD 圖台• 整合所有 TGOS API 功能

應用範例( Web )

23

Page 24: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

24

1. 臺中市政府市長信箱應用 TGOS MAP API標示案件發生地點

Page 25: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

25

2. 災害潛勢地圖網站• 定位• 基本底圖• 主題圖資套疊• 圖面量測

Page 26: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

26

3. 內政部不動產交易實價查詢服務網

Page 27: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

27

TGOS MAP API實機操作

Page 28: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

28

TGOS MAP API (Web) 功能架構

*黑色粗體為本年度擴充功能相關架構

Page 29: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

29

TGOS MAP API 示範說明• 基本功能• 資料結構及疊加標記• 訊息視窗• 外部圖層套疊• 定位功能• 熱區圖

Page 30: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

30

0. 基本功能 - 建立地圖• 引用 TGOS MAP API

• 建立地圖var pOMap = document.getElementById("map_div");

pMap = new TGOS.TGOnlineMap(pOMap, TGOS.TGCoordSys.EPSG3826);

<script type="text/javascript"src=“http://api.tgos.nat.gov.tw/TGOS_API/tgos?ver=2&AppID= 您申請的APPID&APIKey= 您申請的 APIKey" charset="utf-8"></script>

放置地圖的 DIV ID

地圖物件 坐標系統EPSG:3825---97 坐標系統 (119)EPSG:3826--- 97 坐標系統 (121)

EPSG:3857--- 經緯度

Page 31: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

31

0. 基本功能 - 建立地圖

Page 32: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

32

0. 基本功能 - 建立地圖• 指定初始地圖中心點

• 指定初始地圖層級

• TGOS 提供的基本底圖類型: ---TGOS 電子地圖 --- 福衛二號衛星影像 --- 通用版電子地圖 --- 福衛二號混合地圖 --- 地形暈渲圖 --- 地形暈渲混合地圖

pMap.setZoom(10);

pMap.setCenter(new TGOS.TGPoint(304416, 2767751));

坐標點物件X 坐標 Y 坐標

Page 33: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

0. 基本功能 - 地圖控制項

33

• 圖面客製化• 地圖介面控制項 --- 物件“ TGMapOptions”

var mapOptions = { disableDefaultUI: true // 關閉所有地圖控制項};pMap = new TGOS.TGOnlineMap(pOMap, TGOS.TGCoordSys.EPSG3826, mapOptions);

Page 34: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

34

var mapOptions = { mapTypeControlOptions: { mapTypeIds: [TGOS.TGMapTypeId.TGOSMAP, TGOS.TGMapTypeId.F2IMAGE], controlPosition: TGOS.TGControlPosition. RIGHT_TOP, mapTypeControlStyle: TGOS.TGMapTypeControlStyle.DROPDOWN_MENU }, navigationControlOptions: { controlPosition: TGOS.TGControlPosition. RIGHT_CENTER, navigationControlStyle: TGOS.TGNavigationControlStyle.SMALL }};

34

Page 35: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

35

0. 基本功能 - 客製化地圖元件UI 功能+ = 客製化地圖元件

Page 36: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

36

建立地圖控制 DIV 物件// 建立控制項 UIvar controlUI = document.createElement('div'); controlUI.setAttribute("class", "customControl"); // 設定 classcontrolUI.style.backgroundColor = '#fff'; // 設定背景顏色……..// 建立控制項 UI 內容var controlText = document.createElement('div');controlText.style.color = 'rgb(25,25,25)'; // 文字顏色…….// 設定控制項 UI 點擊事件controlUI.addEventListener('click', function () {

pMap.setZoom(10);});// 將控制項內容加至 UI 控制項內controlUI.appendChild(controlText);

Page 37: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

37

0. 基本功能 - 客製化地圖元件• 初始地圖時

// 建立客制化控制項var centerControlDiv = document.createElement('div');var centerControl = new CenterControl(centerControlDiv, pMap);// 設定網頁顯示層級centerControlDiv.index = 1;

Page 38: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

38

練習一• 客製化一個「初始地圖中心」的地圖元件

// 設定控制項 UI 點擊事件controlUI.addEventListener('click', function () {

pMap.setCenter(new TGOS.TGPoint(304416, 2767751));});

Page 39: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

39

1. 資料結構及疊加標記• 常用資料結構

--- TGPoint(x, y) 點坐標(定義單點坐標、建立標記點 ... )--- TGLineString(Array<TGPoint>) 折線--- TGLinearRing(TGLineString) 封閉線--- TGPolygon(Array<TGLinearRing>) 多邊形--- TGEnvelope(left, top, right, bottom) 矩形、定義邊界範圍--- TGCircle() 圓形--- TGSize(width, height) 定義二維物件尺寸--- TGImage() 圖片物件

• 建立標記點 --- TGMarker()

Page 40: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 點 --- TGPoint(x,y)• 標記點 --- TGMarker(TGOnlnieMap map, TGPoint position, String

title, TGImage icon, TGMarkerOptions opts?)

40

TGPoint( ) TGImage( )+ = TGMarker( )

1. 資料結構及疊加標記 - 點物件

var marker = new TGOS.TGMarker(pMap, new TGOS.TGPoint(303890, 2773244), ‘ 測試點 ');

40

Page 41: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

1. 資料結構及疊加標記 - 線物件

41

• 折線 --- TGLine(TGOnlineMap map, TGLineString path, TGLineOptions opts)

41

TGPoint()TGLineString() TGLine()TGPoint()TGPoint()TGPoint()

var path1 = [pt1, pt2, pt3]; // 設定 path 節點順序var LS = new TGOS.TGLineString(path1); // 設定線資料的 pathvar line = new TGOS.TGLine(pMap, LS, { strokeColor: '#0446F9', strokeWeight: 3}); pt1

pt2 pt3

Page 42: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

42

1. 資料結構及疊加標記 - 面物件

var env = new TGOS.TGEnvelope(303933, 2773213, 303984, 2773179);var pgn = new TGOS.TGFill(pMap, env, { fillColor: '#E2EE1C‘, fillOpacity:0.5});

42

TGPoint()

TGLinearRing()

TGFill()

TGPoint()TGPoint()TGPoint()

TGPolygon()

TGCircle()

TGEnvelope()

TGLineString()

• 多邊形 --- TGFill(TGOnlineMap map, TGPolygon path, TGFillOptions opts)

Page 43: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

43

1. 資料結構及疊加標記 - 點線面物件// 建立點資料結構pt = new TGOS.TGPoint(event.point.x, event.point.y);ptList.push(pt); // 將點資料加入陣列中存放// 建立標記點marker = new TGOS.TGMarker(pMap, pt, i); // 標記點物件i = i + 1; // 標記點的標題文字markers.push(marker); // 將標記點資料加入陣列中存放// 建立 LineString 資料結構lineString = new TGOS.TGLineString(ptList); var lineOpts = { // 設定折線樣式 strokeColor: "#0446F9", strokeWeight: 3, strokeDasharray: "- “}; // 建立折線疊加層line = new TGOS.TGLine(pMap, lineString, lineOpts);

43

Page 44: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

44

1. 資料結構及疊加標記 - 點線面物件ptList.push(ptList[0]); // 將點陣列中的第一筆資料取出作為最後一筆資料closeLine = new TGOS.TGLineString(ptList); // 建立線資料結構boarder = new TGOS.TGLinearRing(closeLine); // 建立封閉線資料結構pgn = new TGOS.TGPolygon([boarder]); // 建立多邊形資料結構var fillOpts = { // 設定多邊形樣式 strokeWeight: 3, // 多邊形外框粗細 strokeDasharray: "- ", // 多邊形外框線樣式 strokeColor: '#0446F9', // 設定外框顏色 strokeOpacity: 1, // 設定外框透明度 fillColor: '#E2EE1C', // 設定填色 fillOpacity: 0.3 // 設定填滿透明度 };// 建立多邊形疊加層fill = new TGOS.TGFill(pMap, pgn, fillOpts);

Page 45: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

45

練習二• 請於開發示範網站上建立標記點、折線、多邊形• 請開啟 sample1.js• 改變標記點的標題文字• 調整多邊形顏色、透明度、虛線樣式

i = “ 測試點” ; // 標記點的標題文字

var fillOpts = { // 設定多邊形樣式 strokeWeight: 3, // 多邊形外框粗細 strokeDasharray: "- ", // 多邊形外框線樣式 strokeColor: '#0446F9', // 設定外框顏色 strokeOpacity: 1, // 設定外框透明度 fillColor: '#E2EE1C', // 設定填色 fillOpacity: 0.3 // 設定填滿透明度 };

Page 46: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

46

2. 訊息視窗• 訊息視窗 --- TGInfoWindow(string content, Point position,

TGInfoWindowOptions opts)

TGPoint()訊息內容 + = TGInfoWindow()

var info = new TGOS.TGInfoWindow(“ 訊息內容” , new TGOS.TGPoint(x,y));info.open(pMap);

Page 47: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

47

2. 訊息視窗 - 建立視窗var infotext = [‘<B>臺中市政府 ']; // 訊息視窗的內容 , var imgUrl ='https://pixabay.com/static/uploads/photo/2014/04/02/10/45/location-304467_960_720.png'; // 標記點圖示來源// 建立點資料結構var markerPoint = new TGOS.TGPoint(214192, 2673102) ; //填入地標坐標位置var markerImg = new TGOS.TGImage(imgUrl, new TGOS.TGSize(33, 38), new TGOS.TGPoint(0, 0), new TGOS.TGPoint(10, 33)); // 標記點圖片及尺寸大小// 建立標記點var pTGMarker = new TGOS.TGMarker(pMap, markerPoint,'',markerImg);// 設定訊息視窗var InfoWindowOptions = { maxWidth:4000, // 訊息視窗的最大寬度 opacity:0.8, // 訊息視窗的透明度 pixelOffset: new TGOS.TGSize(5, -30)// 訊息視窗錨點平移量};// 建立訊息視窗messageBox= new TGOS.TGInfoWindow(infotext, markerPoint, InfoWindowOptions);

Page 48: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 滑鼠事件( click 、 rightclick 、 mouseover...... )• 地圖內容改變事件(邊界改變、地圖類型改變 ...... )• 訊息視窗改變事件(關閉訊息視窗、位置改變 ...... )• 標記點事件(位置改變、圖示改變、標題改變 ...... )• ......

• 加入監聽器的方式 ---TGOS.TGEvent.addListener(object instance, string eventName, Function handler)

48

2. 訊息視窗 - 事件監聽

監聽對象

事件名稱 執行函式

48

Page 49: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

49

2. 訊息視窗 - 事件監聽//監聽標記點滑鼠 click 事件 , 配合開啟訊息視窗TGOS.TGEvent.addListener(pTGMarker, "click", function (pTGMarker, messageBox) { return function () {

messageBox.open(pMap, pTGMarker); }} (pTGMarker, messageBox));

Page 50: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

50

// 地圖類型改變TGOS.TGEvent.addListener(pMap, 'maptypeid_changed', function(){alert(' 地圖類型改變 ');});//縮放層級改變TGOS.TGEvent.addListener(pMap, 'zoom_changed', function(){alert('縮放層級改變 ')});

2. 訊息視窗 - 事件監聽

50

Page 51: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

51

練習三• 開啟 sample2.js• InfoWindow 內容支援 HTML 語法,

• 請於訊息內容輸入 '<a href="http://www.taichung.gov.tw/" target="_blank"><B><font color="blue"> 臺中市政府 </font></a>'

• 改變監聽事件//監聽標記點滑鼠mouseout 事件 , 配合關閉訊息視窗TGOS.TGEvent.addListener(pTGMarker, “mouseout", function (pTGMarker, messageBox) { return function () {

messageBox.close(pMap, pTGMarker); }} (pTGMarker, messageBox));

Page 52: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

52

3. 外部圖資套疊 - 影像疊加層• 影像資料結構 ---TGImage()• 影像疊加層 ---TGGroundOverlay()

IMG = new TGOS.TGImage(); // 建立影像資料結構IMG.setUrl(document.getElementById("img_url").value); // 加入影像連結IMGOverlay = new TGOS.TGGroundOverlay(); // 建立影像疊加物件IMGOverlay.setImage(IMG); // 加入影像// 設定影像套疊邊界IMGOverlay.setBounds(new TGOS.TGEnvelope(pLeft, pTop, pRight, pBottom));IMGOverlay.setOpacity(0.7)); // 設定透明度IMGOverlay.setMap(pMap); // 設定要套疊影像的地圖

Page 53: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

53

3. 外部圖資套疊 - 影像疊加層// 地圖縮放至影像套疊範圍pMap.fitBounds(IMGOverlay.getBounds());

Page 54: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

54

3. 外部圖資套疊 -KML 圖層• KML 圖層物件 --- TGKmlLayer()

KMLLayer = new TGOS.TGKmlLayer(document.getElementById("kml_url").value, {

// 加入 KML 圖層到地圖map: pMap,suppressInfoWindows: false, //是否不觸發訊息視窗preserveViewport: true //是否縮放畫面至 KML 圖層範圍

}, function() {var meta = KMLLayer.getMetadata(); // 取出 KML Metadata

});

Page 55: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

55

3. 外部圖資套疊 -WMS 圖層• WMS 圖層物件 --- TGWmsLayer()

WMSLayer = new TGOS.TGWmsLayer(document.getElementById("wms_url").value, {

// 建立 WMS 物件 , 加入 WMS連結 , 並指定相關屬性map: pMap,preserveViewport: true,wsVisible: true

});

Page 56: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

56

3. 外部圖資套疊 -WMTS 圖層• WMTS 圖層物件 --- TGWmtsLayer()var info = {

matrixSet: 'TGOSMAP.cfg ‘,// 設定 MatrixSet ,為必要參數layer: 'Map', // 設定 WMTS 圖層名稱format: "image/png “, // 設定 WMTS格式style: "default" // 設定 WMTS格式,大多數的 WMTS 服務皆設為

default};var req = {

wmtsVisible: true, // 設定 WMTS 圖層是否顯示opacity: 0.65 // 設定 WMTS 圖層透明度

};WMTSLayer = new TGOS.TGWmtsLayer(wmts_url, pMap, info, req);

Page 57: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

57

3. 外部圖資套疊 -WMTS 圖層• Info 參數可以使用 WMTS 服務的 GetCapabilities 方法取得。• http://api.tgos.nat.gov.tw/TGOS_WMTS/TWD97/

SimpleWMTS_LANDUSE3826.aspx??SERVICE=WMTS&REQUEST=GetCapabilities&VERSION=1.0.0

Page 58: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

58

3. 外部圖資套疊 -GeoJSON 圖層• GeoJSON 資料結構 ---TGData ()• 使用符號標記資料— TGSymbol()

• sFORWARD_CLOSED_ARROW 封閉箭頭FORWARD_OPEN_ARROW 開放箭頭BACKWARD_CLOSED_ARROW 反向封閉箭頭BACKWARD_OPEN_ARROW 反向開放箭頭CIRCLE 圓形DOUBLE_CIRCLE 雙同心圓TRIPLE_CIRCLE 三同心圓CIRCLE_SPOT 圓內一點TRIANGLE 正三角形INVERT_TRIANGLE 倒三角形SQUARE 四方形PENTAGON 五角形HEXAGON 六角形OCTAGON 八角形PENTASTAR 五芒星形HEXASTAR 六芒星形

Page 59: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

59

var pTGSymbo = new TGOS.TGSymbol(); // 建立標記圖示物件 pTGSymbo.symbolStyle = TGOS.TGSymbolStyle.HEXASTAR; // 設定標記的符號pTGSymbo.xPixel = 32; // 設定標記寬度pTGSymbo.yPixel = 32; // 設定標記高度pTGSymbo.fillColor = "#E5420C"; // 設定填入顏色pTGSymbo.fillOpacity = 0.7; // 設定透明度pTGSymbo.strokeWeight = 2; // 設定框線寬度pTGSymbo.strokeOpacity = 0.4; // 設定框線透明度pTGSymbo.strokeColor = "#E5420C"; pTGSymbo.anchor.x = 32; // 設定錨點 x座標pTGSymbo.anchor.y = 32; // 設定錨點 y座標pTGSymbo.rotation = 10; //旋轉角度// 建立幾何圖層物件GeoJSONLayer = new TGOS.TGData({

map: pMap,style: {

icon: icon:pTGSymbo // 使用標記符號 }

}); // 指定 GeoJSON 來源GeoJSONLayer.loadGeoJson(document.getElementById("geoJSON_url").value,{idPropertyName:"GEOJSON"},function(graphic){

GeoJSONLayer.setMap(pMap); // 設定呈現幾何圖層物件的地圖物});

Page 60: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

60

練習四• 將影像疊加圖層的連結改為

http://www.digital.ntu.edu.tw/images/NTU-Campus-Map2.jpg

自行設定適合的邊界坐標,進行影像疊加圖層套疊• TGSymbol 支援 SVG 圖示,請開啟 sample3.js ,拿掉 //

• 調整 GeoJSON 的符號樣式

var pTGSymbo = new TGOS.TGSymbol(); // 建立標記圖示物件pTGSymbo.symbolStyle = 'M -2,0 0,-2 2,0 0,2 z'; // 設定標記圖示SVG格式樣式

Page 61: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

• 定位服務• 坐標定位• 地址定位• 地標關鍵字定位• 道路定位• 行政區定位 • 里程定位• 坐標查詢最近鄰地址• 使用定位服務 ---

TGOS.TGLocate()TGOS.TGLocateService()

• locateWGS84( )--- 回傳結果為經緯度• locateTWD97( )--- 回傳結果為 97(121) 坐標• locateTWD97_119( )--- 回傳結果為 97(119) 坐標

61

4. 定位功能

61

Page 62: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

62

4. 定位功能 - 地址定位• 宣告使用定位服務• 定位參數 : address• 回傳結果為 97 坐標並用標記點標示定位位置

• locateTWD97(TGLocatorRequest request, Function callback(Array results, TGLocatorStatus status, number items, number pages))

• TGOS.TGMarker(TGOnlnieMap map, TGPoint position, string title, TGImage icon, TGMarkerOptions opts)

var locator = new TGOS.TGLocateService();

例:臺北市松江路 469巷 4 號

Page 63: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

63

4. 定位功能 - 地址定位var locator = new TGOS.TGLocateService(); //宣告定位物件Function locate(){ locator.locateTWD97({ address: document.getElementById("address").value // 定位參數使用 address, 並帶入欲定位的地址 }, function(event, status) { if (status != TGOS.TGLocatorStatus.OK) { alert(' 定位失敗 !'); return; } // 使用標記點註明定位位置

loc_marker = new TGOS.TGMarker(pMap, event[0].geometry.location, event[0].formattedAddress);

// 地圖縮放至適合位置pMap.fitBounds(event[0].geometry.viewport); } );}

Page 64: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

64

4. 定位功能 - 行政區定位• 宣告使用定位服務• 定位參數 : district• 回傳結果為 97 坐標並用繪出行政區範圍

• locateTWD97• TGOS.TGFill

var locator = new TGOS.TGLocateService();

例:臺北市中山區新喜里

Page 65: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

65

Function locate(){ locator.locateTWD97({ district: document.getElementById(“admin”).value // 定位參數使用district, 並帶入欲定位的行政區名稱 }, function(event, status) { if (status != TGOS.TGLocatorStatus.OK) { alert(' 定位失敗 !'); return; } //繪出行政區範圍 loc_pgn = event[0].geometry.geometry; loc_fill = new TGOS.TGFill(pMap, loc_pgn, {

fillColor: '#00AAAA', fillOpacity: 0.2, strokeColor: '#009090',

strokeWeight: 5, strokeOpacity: 1

}); pMap.fitBounds(event[0].geometry.viewport); } );}

Page 66: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

66

4. 定位功能 - 地標定位• 宣告使用定位服務• 定位參數 : poi• 回傳結果為 97 坐標並用標記點標示定位位置

• locateTWD97• TGOS.TGMarker

var locator = new TGOS.TGLocateService();

例:新北市政府

Page 67: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

67

4. 定位功能 - 地標定位var locator = new TGOS.TGLocateService(); //宣告定位物件Function locate(){ locator.locateTWD97({ poi : document.getElementById(“poi”).value // 定位參數使用 poi, 並帶入欲定位的地址 }, function(event, status) { if (status == TGOS.TGLocatorStatus. NO_RESULTS) { alert(' 定位失敗 !'); return; } // 使用標記點註明定位位置

loc_marker = new TGOS.TGMarker(pMap, event[0].geometry.location, event[0]. poiName);

// 地圖縮放至適合位置pMap.fitBounds(event[0].geometry.viewport); } );}

Page 68: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

4. 定位功能 - 路口定位• 宣告使用定位服務• 定位參數 : roadCross

• 回傳結果為 97 坐標並用標記點標示定位位置• TGOS.TGCoordSys.EPSG3826• TGOS.TGMarker

68

var tgLocate = new TGOS.TGLocate();

roadCross(TGRoadCrossRequest request, TGCoordSys coordSys, Function callback(Array<TGCrossResult> result, TGLocatorStatus status, number items, number pages))

Page 69: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

4. 定位功能 - 路口定位

69

var tgLocate = new TGOS.TGLocate();Function locate () {

var request = { geometryInfo: document.querySelector("#geometryInfo").checked, // 查詢結果是否回傳 Geometry 空間資訊,預設為 true 。 firstRoad: document.getElementById("cross-road1").value, // 第一條道路名稱。為必要參數。 secondRoad: document.getElementById("cross-road2").value, // 第二條道路名稱。為必要參數。 pageNumber: '1', // 查詢結果之頁數 (30 筆一頁 ) ,預設為第 1 頁。 firstCounty: document.getElementById("cross-county1").value, // 第一條道路所在縣市。 secondCounty: document.getElementById(“cross-county2”).value // 第二條道路所在縣市。}

Page 70: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

4. 定位功能 - 路口定位

70

tgLocate.roadCross(request, TGOS.TGCoordSys.EPSG3826, function (event, status, items, pages) { console.log(arguments);

//roadCross 回傳狀態 if (status !== TGOS.TGLocatorStatus.OK && status !== TGOS.TGLocatorStatus.TOO_MANY_RESULTS) { //console.log(status); return; }

// 取得回傳物件 event.filter(function (r) { return r.geometry; }).forEach(function (r) { loc_marker = new TGOS.TGMarker(pMap, r.geometry.location, r.firstRoad + “|” + r.secondRoad); // , 設定Marker loc_markers.push(loc_marker); });

});}

Page 71: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

71

練習五• 請於開發示範網站上使用定位功能• 請輸入欲定位的地址、地標或是行政區

Page 72: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

72

5. 熱區圖• TGHeatmapLayer

• 請利用 TGOS 圖台上的「資料展點」• 切換至「點位資料」• 上傳附件的「資料點 .csv 」

Page 73: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

73

heatmap = new TGOS.TGHeatmapLayer({ data: createData(), // 指定繪製熱區圖之資料

map: pMap // 指定要繪製熱區圖的地圖物件});var createData = function () { //本範例將隨機生成資料

var count = 500;var data = [ ];while (count -- ) { var xy = BoxMullerPolar(23.480, 23.485, 120.450,

120.455); var y = xy.x; var x = xy.y; if (isNaN(x) || isNaN(y)) continue; var pt; if (coordSys == TGOS.TGCoordSys.EPSG3826) { var twd97 = TGOS.WGS84toTWD97(x, y); pt = new TGOS.TGPoint(twd97.x, twd97.y);

// 建立點資料 } else pt = new TGOS.TGPoint(x, y); data.push(pt);}return data;

}

Page 74: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

74

var setData = function () {heatmap.setOptions({data: createData()});

}var changeRadius = function () {

heatmap.setOptions({radius: document.getElementById("radius").value});

}var changeOpacity = function () {

heatmap.setOptions({opacity: document.getElementById("opacity").value});

}

Page 75: 2016輕鬆開發自有網路地圖工作坊 進階班 0701

75

問題討論~ 歡迎申請使用 TGOS MAP API~