地址定位

地址定位

TGOS MAP API(iOS)地址定位功能以服務方式提供,傳送之參數說明如下:

oAPPId:應用程式識別碼(APPId),在申請成功後所取得,必須與應用程式介接驗證碼(APIKey)成對使用,這個值是由使用API的使用者在呼叫API時所需傳入。

oAPIKey:應用程式介接驗證碼(APIKey),在申請成功後所取得,必須與應用程式識別碼(APPId)成對使用,這個值是由使用API的使用者在呼叫API時所需傳入。

oAddress:所要查詢的門牌地址。

oSRS:回傳的座標系統,允許傳入的座標系統代碼可為EPSG:4326EPSG:3825EPSG:3826EPSG:3827EPSG:3828

oFuzzyType:門牌號碼的模糊比對機制,目前有下列三種:

(最近門牌號機制:先找最近且大於輸入的門牌號,找不到則找最近且小於輸入的門牌號;代碼為0

(單雙號機制:先找最近且大於輸入的單號或雙號門牌號,找不到則找最近且小於輸入的單號或雙號門牌號;代碼為1

(單雙號機制+最近門牌號機制:當單雙號機制找不到門牌時,就改採用最近門牌號機制;代碼為2

oResultDataType:回傳的資料格式,允許傳入的代碼為:JSONXML

oFuzzyBuffer:模糊比對回傳門牌號的許可誤差範圍,輸入格式為正整數,如輸入0則表不限制誤差範圍。

oIsOnlyFullMatch:是否只進行完全比對,允許傳入的值為:truefalse,如輸入true,模糊比對機制將不被使用。

oIsLockCounty:是否鎖定縣市,允許傳入的值為:truefalse,如輸入true,則代表查詢結果中的 [縣市要與所輸入的門牌地址中的 [縣市完全相同。

oIsLockTown:是否鎖定鄉鎮市區,允許傳入的值為:truefalse,如輸入true,則代表查詢結果中的 [鄉鎮市區要與所輸入的門牌地址中的 [鄉鎮市區完全相同。

oIsLockVillage:是否鎖定村里,允許傳入的值為:truefalse,如輸入true,則代表查詢結果中的 [村里要與所輸入的門牌地址中的 [村里完全相同。

oIsLockRoadSection:是否鎖定路段,允許傳入的值為:truefalse,如輸入true,則代表查詢結果中的 [路段要與所輸入的門牌地址中的 [路段完全相同。

oIsLockLane:是否鎖定巷,允許傳入的值為:truefalse,如輸入true,則代表查詢結果中的[要與所輸入的門牌地址中的 [完全相同。

oIsLockAlley:是否鎖定弄,允許傳入的值為:truefalse,如輸入true,則代表查詢結果中的[要與所輸入的門牌地址中的 [完全相同。

oIsLockArea:是否鎖定地區,允許傳入的值為:truefals,如輸入true,則代表查詢結果中的 [地區要與所輸入的門牌地址中的 [地區完全相同。

oIsSameNumber_SubNumber:號之、之號是否視為相同,允許傳入的值為:truefalse

oCanIgnoreVillage:找不時是否可忽略村里,允許傳入的值為:truefalse

oCanIgnoreNeighborhood:找不時是否可忽略鄰,允許傳入的值為:truefalse

oReturnMaxCount:如為多筆時,限制回傳最大筆數,輸入格式為正整數,如輸入 0 則表不限制回傳筆數。

詳細設定說明請參考:

https://addr.tgos.tw/addrws/v30/QueryAddr.asmx

各參數建議值:

oFuzzyType0

oFuzzyBuffer0

oIsOnlyFullMatchfalse

oIsLockCountyfalse

oIsLockTownfalse

oIsLockVillagefalse

oIsLockRoadSectionfalse

oIsLockLanefalse

oIsLockAlleyfalse

oIsLockAreafalse

oIsSameNumber_SubNumbertrue

oCanIgnoreVillagetrue

oCanIgnoreNeighborhoodtrue

oReturnMaxCount0

程式範例如下:

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];

}

}

服務使用範例如下(AppIDAPIKey、查詢地址請自行輸入)

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

 

 

回到上方