地標定位
地標定位
地標定位功能支援使用者輸入地標名稱字串,API將取得並回傳所有符合查詢文字之地標資訊。依據不同的使用情境,可以將這些資訊條列於網頁上,或是以標記的方式標示於圖上。本範例將所有符合查詢文字之地標以標記方式呈現於圖台上,並依查詢結果調整視域範圍;若在無任何符合查詢文字的狀況下,開啟警示視窗告知查無此地標點,詳細範例如下。
var markers = new Array();
function locate() {
if (markers.length > 0) { //假設地圖上已存在查詢後得到的標記點, 則先行移除
for (var i = 0; i < markers.length; i++) {
markers[i].setMap(null);
}
markers = [];
}
var PName = document.getElementById('PoiName').value;
var LService = new TGOS.TGLocateService(); //宣告一個新的定位服務
var request = { //設定定位所需的參數, 範例使用poi
poi: PName
};
LService.locateTWD97(request, function(result, status){
//進行定位查詢, 並指定回傳資訊為TWD97坐標系統
if (status == TGOS.TGLocatorStatus.ZERO_RESULTS) {
//若查無該POI則跳出警告訊息並退出
alert('查無此地標點');
}
else {
for (var i = 0; i < result.length; i++) { //取得所有符合查詢文字的POI
var geometry = result[i].geometry.location;
//利用geometry.location取得點位(TGPoint)
var tip = result[i].poiName; //取得POI完整名稱
var marker = new TGOS.TGMarker(pMap, geometry, tip);
//以TGMarker表示POI位置
markers.push(marker);
var env = result[i].geometry.viewport;
//以geometry.viewport取得系統建議的視域範圍(TGEnvelope)
if (i == 0)
LService.fitBounds(pMap, env);
//將地圖畫面縮放至第一個查詢結果的視域範圍
}
}
});
}