地標分類最近鄰查詢
API使用範例:地標分類最近鄰查詢
情境假設:
地標分類最近鄰查詢藉由TGOS.TGPoiNear ()物件開啟,並設定要套疊地標分類、資訊內容、物件參數等。使用者可以取得環域範圍內的地標,詳細屬性資料,甚至可以變更地標的圖示樣式。
此範例示範查詢的地標為「政府機關」,使用者點擊圖面後,即可查到最近的政府機關位置及其相關資訊。
TGOS MAP API建置方式:
1. 初始化圖台,宣告TGOnlineMap地圖物件並設定坐標系統
function InitWnd() {
pOMap = document.getElementById("TGMap");
var mapOptions = {
disableDefaultUI: true //關閉所有地圖介面控制項
};
pMap = new TGOS.TGOnlineMap(pOMap, TGOS.TGCoordSys.EPSG3826, mapOptions); //宣告TGOnlineMap地圖物件並設定坐標系統
pMap.setCenter(new TGOS.TGPoint(168840, 2544238)); //指定地圖中心點
pMap.setZoom(9); //指定地圖初始層級
near(); //執行函式near
}
2. 建立TGPoiNear物件,取得查詢結果
function near() {
TGOS.TGEvent.addListener(pMap, "click", function(tEvent) { //建立滑鼠地圖點擊事件監聽器
if (cpt) //假設地圖上已存在圖形, 則先行移除
cpt.setMap(null);
if (markers.length > 0) { //假設地圖上已存在查詢後得到的標記點, 則先行移除
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers = [];
}
var pt = tEvent.point; //取得滑鼠點擊位置的坐標點位,為TGPoint物件形式
cpt = new TGOS.TGMarker(pMap, pt, null, markerImg);
-//----------------最近鄰查詢部份------------------
var queryRequst = { //設定查詢條件
position: pt
};
Query.identify(TGOS.KindInfo.POI991, queryRequst, TGOS.TGCoordSys.EPSG3826, function(result, status){
//使用方法identify進行最近鄰查詢, 輸入參數包含欲查詢的服務、欲查詢的圖層、坐標系統及查詢後的函式, result及status分別代表查詢結果及查詢狀態
if (status == TGOS.TGBufferStatus.ZERO_RESULTS) { //判斷查詢結果是否為查無結果
//alert('此點附近無結果');
return;
} else { //若查詢產生結果, 則執行以下函式
var attris = result.fieldAttr; //取得圖徵屬性
var pts = result.position; //取得圖徵點位
for (var i = 0; i < pts.length; i++) {
var str = 'Name: ' + attris[i][0] + '; Address: ' + attris[i][1];
console.log(str);
//建立迴圈後, 以字串方式組合屬性結果, attris[0]為查詢到的第一個圖徵, attris[0][0]為第一個圖徵的第一個屬性, 依此類推
var marker = new TGOS.TGMarker(pMap, pts[i], str, img2); //在迴圈內建立TGMarker物件, 將查詢到的所有主題圖徵繪出
markers.push(marker); //將標記點加入到markers陣列
}
}
});
});
}