1. 程式人生 > >IOS移動端如何獲取ArcGIS Server的服務列表

IOS移動端如何獲取ArcGIS Server的服務列表

1、應用需求

<wbr>ArcGIS Server伺服器增加、刪除服務,移動端能動態的獲取服務列表;</wbr>

2、移動端解決方法

2.1、獲取伺服器端服務列表URL地址

(1)開啟ArcGIS Server服務目錄

(2)點選rest得到服務列表URL



(3)點選rest可以看到服務列表的json串,這個url就是我們獲取服務列表的url



2.2 IOS讀取方法

(1)非同步呼叫服務

//服務URL

<wbr>NSURL* <wbr>url <wbr>= <wbr>[NSURL <wbr>URLWithString:@"http://192.168.0.1/arcgis/rest/services?f=pjson"];<br><wbr><wbr>//self.currentJsonOp是 <wbr><wbr>AGSJSONRequestOperation 物件</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr> <wbr>self.currentJsonOp <wbr>= <wbr>[[[AGSJSONRequestOperation <wbr>alloc]initWithURL:url]<wbr>autorelease];<br><wbr><wbr><wbr><wbr><wbr><br> self.currentJsonOp.target <wbr>= <wbr>self;<br> self.currentJsonOp.action <wbr>= <wbr>@selector(operation:didSucceedWithResponse:);<br> self.currentJsonOp.errorAction <wbr>= <wbr>@selector(operation:didFailWithError:);<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr> //self.queue 是 NSOperationQueue
物件
//Add <wbr>operation <wbr>to <wbr>the <wbr>queue <wbr>to <wbr>execute <wbr>in <wbr> the <wbr>background<br> [self.queue <wbr>addOperation:self.currentJsonOp];</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

(2)處理呼叫結果,得到服務名稱
//成功處理,The webservice was invoked successfully.

- <wbr>(void)operation:(NSOperation*)op <wbr>didSucceedWithResponse:(NSDictionary<wbr>*)weatherInfo<wbr>{<br> //Print <wbr>the <wbr>response <wbr>to <wbr>see <wbr>what <wbr>the <wbr>JSON <wbr> payload <wbr>looks <wbr>like.<br> NSLog(@"%@", <wbr>weatherInfo);<br> NSLog(@"number <wbr>is <wbr>%d",weatherInfo.count);<br><wbr><wbr><wbr><wbr>if([weatherInfo <wbr>objectForKey:@"services"]!=nil){<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NSArray <wbr>*servicesArray=[weatherInfo <wbr> objectForKey:@"services"];<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NSLog(@"%@,lenth <wbr>is <wbr>%d", <wbr>servicesArray,[servicesArray<wbr>count]);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>for <wbr>(int <wbr>i=0; <wbr>i&lt;[servicesArray<wbr>count];<wbr>i++) <wbr>{<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NSDictionary <wbr>*services=[servicesArray<wbr>objectAtIndex:i];<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//NSLog(@"%@", <wbr>services);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NSString <wbr>*name=[services<wbr>objectForKey:@"name"];<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NSString <wbr>*type=[services<wbr>objectForKey:@"type"];<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>NSLog(@"%@,%@",name,type);<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr>}<br><wbr><wbr><wbr><wbr>}<br> //處理失敗,Error encountered while invoking webservice. Alert user<br> - <wbr>(void)operation:(NSOperation*)op <wbr>didFailWithError:(NSError <wbr>*)error<wbr>{<br> self.mapView.callout.hidden <wbr>= <wbr>YES;<br> UIAlertView* <wbr>av <wbr>= <wbr>[[[UIAlertView <wbr>alloc] <wbr>initWithTitle:@"Sorry"<wbr><br><wbr>message:[error <wbr>localizedDescription] <wbr><br> delegate:nil <wbr>cancelButtonTitle:@"OK" <wbr><br><wbr><wbr><wbr>otherButtonTitles:nil] <wbr>autorelease];<br> [av <wbr>show];<br> }</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

這樣就動態的得到了地圖服務的URL列表