имя слоя отличается в ArcGis Runtime 100 - PullRequest
0 голосов
/ 06 июня 2018

Я только что обновил свой 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 он возвращает Положение изображений

У меня уже реализована резервная логика, поэтому есть ли способ получить то же имя службы во время выполнения 100?

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Во время исследования я обнаружил, что в arcgis sdk 10 для Android мы получаем имя сервиса из параметра layerInfo векторного слоя , но в ios его нетлюбой параметр layerInfo , и у нас есть прямой параметр serviceLayerName для получения имени службы слоя.

Итак, я обнаружил, что в ArcGis SDK 100 arcgis вводит параметр информации о слое в векторный слой .

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

     }
}
0 голосов
/ 06 июня 2018

Похоже, вам нужно имя службы, а не имя слоя:

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

Если вы собираетесь работать с автономными рабочими процессами, или вы не уверены и хотите быть уверенными в будущемВ случае, если это происходит в дальнейшем, вы можете быть немного шире в своей области видимости (см. диаграмму иерархии классов здесь ) и использовать:

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 должно работать для вас (после загрузки таблицы:)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...