地址定位
地址定位
TGOS MAP API(iOS)地址定位功能以服務方式提供,傳送之參數說明如下:
oAPPId:應用程式識別碼(APPId),在申請成功後所取得,必須與應用程式介接驗證碼(APIKey)成對使用,這個值是由使用API的使用者在呼叫API時所需傳入。
oAPIKey:應用程式介接驗證碼(APIKey),在申請成功後所取得,必須與應用程式識別碼(APPId)成對使用,這個值是由使用API的使用者在呼叫API時所需傳入。
oAddress:所要查詢的門牌地址。
oSRS:回傳的座標系統,允許傳入的座標系統代碼可為EPSG:4326、EPSG:3825、EPSG:3826、EPSG:3827、EPSG:3828。
oFuzzyType:門牌號碼的模糊比對機制,目前有下列三種:
(一) 最近門牌號機制:先找最近且大於輸入的門牌號,找不到則找最近且小於輸入的門牌號;代碼為0。
(二) 單雙號機制:先找最近且大於輸入的單號或雙號門牌號,找不到則找最近且小於輸入的單號或雙號門牌號;代碼為1。
(三) 單雙號機制+最近門牌號機制:當單雙號機制找不到門牌時,就改採用最近門牌號機制;代碼為2。
oResultDataType:回傳的資料格式,允許傳入的代碼為:JSON、XML。
oFuzzyBuffer:模糊比對回傳門牌號的許可誤差範圍,輸入格式為正整數,如輸入0則表不限制誤差範圍。
oIsOnlyFullMatch:是否只進行完全比對,允許傳入的值為:true、false,如輸入true,模糊比對機制將不被使用。
oIsLockCounty:是否鎖定縣市,允許傳入的值為:true、false,如輸入true,則代表查詢結果中的 [縣市] 要與所輸入的門牌地址中的 [縣市] 完全相同。
oIsLockTown:是否鎖定鄉鎮市區,允許傳入的值為:true、false,如輸入true,則代表查詢結果中的 [鄉鎮市區] 要與所輸入的門牌地址中的 [鄉鎮市區] 完全相同。
oIsLockVillage:是否鎖定村里,允許傳入的值為:true、false,如輸入true,則代表查詢結果中的 [村里] 要與所輸入的門牌地址中的 [村里] 完全相同。
oIsLockRoadSection:是否鎖定路段,允許傳入的值為:true、false,如輸入true,則代表查詢結果中的 [路段] 要與所輸入的門牌地址中的 [路段] 完全相同。
oIsLockLane:是否鎖定巷,允許傳入的值為:true、false,如輸入true,則代表查詢結果中的[巷] 要與所輸入的門牌地址中的 [巷] 完全相同。
oIsLockAlley:是否鎖定弄,允許傳入的值為:true、false,如輸入true,則代表查詢結果中的[弄] 要與所輸入的門牌地址中的 [弄] 完全相同。
oIsLockArea:是否鎖定地區,允許傳入的值為:true、fals,如輸入true,則代表查詢結果中的 [地區] 要與所輸入的門牌地址中的 [地區] 完全相同。
oIsSameNumber_SubNumber:號之、之號是否視為相同,允許傳入的值為:true、false。
oCanIgnoreVillage:找不時是否可忽略村里,允許傳入的值為:true、false。
oCanIgnoreNeighborhood:找不時是否可忽略鄰,允許傳入的值為:true、false。
oReturnMaxCount:如為多筆時,限制回傳最大筆數,輸入格式為正整數,如輸入 0 則表不限制回傳筆數。
詳細設定說明請參考:
https://addr.tgos.tw/addrws/v30/QueryAddr.asmx
各參數建議值:
oFuzzyType:0
oFuzzyBuffer:0
oIsOnlyFullMatch:false
oIsLockCounty:false
oIsLockTown:false
oIsLockVillage:false
oIsLockRoadSection:false
oIsLockLane:false
oIsLockAlley:false
oIsLockArea:false
oIsSameNumber_SubNumber:true
oCanIgnoreVillage:true
oCanIgnoreNeighborhood:true
oReturnMaxCount:0
程式範例如下:
NSString* addresslocator4 =@"http://gis.tgos.tw/addrws/v30/QueryAddr.asmx/QueryAddr?oAPPId=&oAPIKey=&oSRS=EPSG:4326&oResultDataType=json&oAddress=";
- (IBAction)AddressClick:(id)sender {
[self clearMarker];
NSString * seachStr = [addresslocator4 stringByAppendingString:[self.AddressET.text
//設定服務位址參數
stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL * url = [NSURL URLWithString:seachStr];
NSError *error;
NSMutableDictionary *ServiceJson = [NSJSONSerialization JSONObjectWithData:[NSData dataWithContentsOfURL:url]
options:NSJSONReadingMutableLeaves
error:&error];
if (error == nil) {
NSMutableArray *ResultInfo= [ServiceJson objectForKey:@"AddressList"];
for (int i = 0 ; i < ResultInfo.count; i++) {
NSMutableDictionary *Info =[ResultInfo objectAtIndex:i];
TGMarkerOptions *opt = [[TGMarkerOptions alloc] init];
//建立TGMarkerOptions
opt.position = CLLocationCoordinate2DMake([[Info objectForKey:@"Y"] doubleValue],
[[Info objectForKey:@"X"] doubleValue]); //坐標需用WGS84
opt.title = [Info objectForKey:@"FULL_ADDR"]; //設定標題
opt.draggable = NO; //設定可否拖曳
[MarkerList addObject:[mapView_ addMarkerWithOptions:opt]];
}
[self MoveToBounds];
}
}
服務使用範例如下(AppID、APIKey、查詢地址請自行輸入):
●Json格式:
https://addr.tgos.tw/addrws/v30/QueryAddr.asmx/QueryAddr?oAPPId=yourID&oAPIKey=yourkey&oAddress=QueryAddress&oSRS=EPSG:3826&oFuzzyType=0&oResultDataType=JSON&oFuzzyBuffer=0&oIsOnlyFullMatch=false&oIsLockCounty=false&oIsLockTown=false&oIsLockVillage=false&oIsLockRoadSection=false&oIsLockLane=false&oIsLockAlley=false&oIsLockArea=false&oIsSameNumber_SubNumber=true&oCanIgnoreVillage=true&oCanIgnoreNeighborhood=true&oReturnMaxCount=0
●Xml格式:
https://addr.tgos.tw/addrws/v30/QueryAddr.asmx/QueryAddr?oAPPId=yourID&oAPIKey=yourkey&oAddress=QueryAddress&oSRS=EPSG:3826&oFuzzyType=0&oResultDataType=XML&oFuzzyBuffer=0&oIsOnlyFullMatch=false&oIsLockCounty=false&oIsLockTown=false&oIsLockVillage=false&oIsLockRoadSection=false&oIsLockLane=false&oIsLockAlley=false&oIsLockArea=false&oIsSameNumber_SubNumber=true&oCanIgnoreVillage=true&oCanIgnoreNeighborhood=true&oReturnMaxCount=0