我已经在ArcGIS Online上创建了一个要素服务,该服务具有大约2000个要素。每个功能都有四个字段:名称,纬度,经度和一个布尔验证字段(真/假)。使用了两个自定义符号-一个用于验证的特征,一个用于未验证的特征。
我已经从我的本机(xcode / swift)iOS应用程序成功连接到要素服务,并且要素正确显示在底图的顶部。
我已经实现了触摸委托,并成功检测到何时点击了功能符号。我遇到的问题是尝试查询(读取)与所点击符号关联的“名称”字段属性。我尝试使用下面的代码,但无法读取属性:

 func geoView(_ geoView: AGSGeoView, didTapAtScreenPoint screenPoint: CGPoint, mapPoint: AGSPoint) {

    if let activeSelectionQuery = activeSelectionQuery {
        activeSelectionQuery.cancel()
    }
    guard let featureLayer = featureLayer else {
        return
    }
    //tolerance level
    let toleranceInPoints: Double = 12
    //use tolerance to compute the envelope for query
    let toleranceInMapUnits = toleranceInPoints * viewMap.unitsPerPoint
    let envelope = AGSEnvelope(xMin: mapPoint.x - toleranceInMapUnits,
                               yMin: mapPoint.y - toleranceInMapUnits,
                               xMax: mapPoint.x + toleranceInMapUnits,
                               yMax: mapPoint.y + toleranceInMapUnits,
                               spatialReference: viewMap.map?.spatialReference)

    //create query parameters object
    let queryParams = AGSQueryParameters()
    queryParams.geometry = envelope


    //run the selection query
    activeSelectionQuery = featureLayer.selectFeatures(withQuery: queryParams, mode: .new) { [weak self] (queryResult: AGSFeatureQueryResult?, error: Error?) in
        if let error = error {
            print("error: ",error)
        }
        if let result = queryResult {
            print("\(result.featureEnumerator().allObjects.count) feature(s) selected")
            print("name: ", result.fields)
        }
    }
}


我正在使用ArGIS iOS 100.6 SDK。
在解决此问题方面的任何帮助将不胜感激。

最佳答案

featureLayer选择方法仅更新地图视图显示以在视觉上突出显示要素。

featureLayer,您应该获得featureTable,然后在其上调用query()。请注意,有两种方法。一个简单的query()可以获取最少的属性,或者an override on AGSServiceFeatureTable可以让您指定要返回所有字段。您可能需要在该覆盖上指定.loadAll来取回name字段。我们这样做是为了避免下载过多的信息(默认情况下,我们下载的内容足以符号化和标记功能)。

关于swift - 无法从ArcGIS Online Feature Service查询要素属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58769608/

10-12 20:34