Как получить адрес без ненужных полей с помощью Yandex MapKit
Хочу получить адрес без страны и области, в Поиск в MapKit: Tips & Tricks есть пример как выбрать город,
val city = response.collection.children.firstOrNull()?.obj
?.metadataContainer
?.getItem(ToponymObjectMetadata::class.java)
?.address
?.components
?.firstOrNull { it.kinds.contains(Address.Component.Kind.LOCALITY) }
?.name
но что если мне нужен весь адрес, но без страны и области.
У меня получилось вот так:
val requiredAddress = geoObject
.metadataContainer
.getItem(ToponymObjectMetadata::class.java)
?.address
?.components
?.map {
if (!it.kinds.contains(Address.Component.Kind.COUNTRY)) {
if (!it.kinds.contains(Address.Component.Kind.PROVINCE)) {
it.name
} else {
""
}
} else {
""
}
}
но в итоге я получаю пустые значения в начале списка, например:
[, , , Всеволожский район, Всеволожское городское поселение, Всеволожск, микрорайон Южный, Знаменская улица, 14]
которые надо удалять. Либо надо отдельно брать каждое поле и добавлять их поочередно к строке.
Нет ли способа сделать это красивее и лаконичнее?
Ответы (1 шт):
Автор решения: LetsDank
→ Ссылка
В коде вместо удаления значений вы проставляете пустые строки, поэтому получается такой массив c пустыми значениями в начале на выходе.
Ниже привел исправленную версию кода, убрав блоки кода, где выполняется условие (страна или область).
val requiredAddress = geoObject
.metadataContainer
.getItem(ToponymObjectMetadata::class.java)
?.address
?.components
?.map {
if (!it.kinds.contains(Address.Component.Kind.COUNTRY) &&
!it.kinds.contains(Address.Component.Kind.PROVINCE)) {
it.name
}
}