我刚刚更新了我的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中获得相同的服务名称?
答案 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 {
}
}