Я создал сервис объектов в ArcGIS online, который насчитывает около 2000 объектов. Каждая функция имеет четыре поля: имя, широта, долгота и логическое поле проверки (true / false). Используются два пользовательских символа - один для проверенных функций и один для неподтвержденных функций. Я успешно подключился к сервису объектов из моего родного (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. Любая помощь будет признательна в решении этой проблемы.