三、ArcGIS Runtime SDK for iOS 100.2.1教程系列之圖層圖例信息獲取

        關於圖層的加載,參見前面的教程: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.+版本略顯麻煩,但是看得出來,分的更細了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章