關於圖層的加載,參見前面的教程:https://blog.csdn.net/qq_31672459/article/details/79729826
當圖層加載完畢,我們將可以獲取到圖層所有的圖例信息,100.2.1版本的api並未通過代理的方式回傳加載狀態,而是通過block回調,見代碼:
//加載動態圖層,一般該圖層拿來展示元素以供展示管線數據、管控數據等,還有查詢等用途
AGSArcGISMapImageLayer *dynamicLayer = [AGSArcGISMapImageLayer ArcGISMapImageLayerWithURL:[NSURL URLWithString:@"http://地址及端口號/arcgis/rest/services/CJXCMap/CJXCMapService/MapServer"]];
[self.map.operationalLayers addObject:dynamicLayer];
[dynamicLayer loadWithCompletion:^(NSError * _Nullable error) {
if (!error) {
for (id<AGSLayerContent> sublayer in dynamicLayer.subLayerContents) {
//一般無法抓取到有子圖層的圖層圖例,爲了得到所有的圖例只能遍歷出來
//此處以最多兩層圖層爲例,若圖層層級較多,自行封裝遞歸方法遍歷所有圖例
if (sublayer.subLayerContents.count) {
for (id<AGSLayerContent> subSublayer in sublayer.subLayerContents) {
//抓取圖例信息
[subSublayer fetchLegendInfosWithCompletion:^(NSArray<AGSLegendInfo *> * _Nullable legendInfos, NSError * _Nullable error) {
//得到的圖例信息自行展示
if (legendInfos.count) {
AGSLegendInfo *legend = legendInfos.firstObject;
AGSPictureMarkerSymbol *picSymble = (AGSPictureMarkerSymbol *)legend.symbol;
NSLog(@"得到的圖例名稱:%@,圖例圖片:%@",legend.name,picSymble.image);
}
}];
}
}else{
//抓取圖例信息
[sublayer fetchLegendInfosWithCompletion:^(NSArray<AGSLegendInfo *> * _Nullable legendInfos, NSError * _Nullable error) {
//得到的圖例信息自行展示
}];
}
}
}
}];
最新版本的圖例獲取比較10.+版本略顯麻煩,但是看得出來,分的更細了。