图层名称在ArcGis Runtime 100中有所不同

时间:2018-06-06 10:41:55

标签: ios swift arcgis-runtime

我刚刚更新了我的ArcGis sdk以使用sdk版本100.2.1。

以前获取我正在使用的图层名称

AGSFeatureLayer *featureLayer = (AGSFeatureLayer *) layer;
layerName = featureLayer.serviceLayerName

现在在sdk 100.2.1中没有参数名称

layerName = layer?.name

但它返回不同的字符串

在10.2.1中它正在撤回POI 在100.2.1中它返回图像位置

我已经实施了支持的loagic 那么有没有办法在运行时100中获得相同的服务名称?

2 个答案:

答案 0 :(得分:0)

看起来您想要服务的名称而不是图层的名称:

layerName = (layer?.featureTable as? AGSServiceFeatureTable)?.tableName

如果您打算使用离线工作流程,或者您不确定并且想要在将来发生的情况下自己面向未来,那么您的范围可能会更广泛(请参阅类层次结构图here)并使用:

layerName = (layer?.featureTable as? AGSArcGISFeatureTable)?.tableName

<强>更新 请注意,正如您在回复中提到的,您需要确保加载了要素表,因此这样的事情可能更合适:

let serviceLayerTable = layer?.featureTable as? AGSServiceFeatureTable
serviceLayerTable?.load(completion: { error in
    guard error == nil else {
        print("Error loading table: \(error!.localizedDescription)")
        return
    }
    if let layerName = serviceLayerTable?.tableName {

    }
})

如果您愿意,可以从layerInfo阅读,但tableName属性应该适用于您(一旦加载表格:)。

答案 1 :(得分:0)

在进行研究时我发现在 arcgis sdk 10 for android 中,我们从功能层 layerInfo参数获取服务名称,但在ios中不是任何layerInfo参数,我们有一个直接参数serviceLayerName来获取图层的服务名称。

所以我发现在 ArcGis sdk 100中,arcgis在要素图层中引入了图层信息参数

let serviceFeatureTable = featureLayer?.featureTable
serviceFeatureTable.load { (error) in
     if let layerName = serviceFeatureTable.layerInfo?.serviceLayerName {

     }
}