Невозможно проанализировать геометрию LineString из библиотеки GEOSwift для отображения полилинии в MapView
Я имею geojson
файл для отображения в Mapview. Он содержит тысячи координат по типу "LineString
"Итак, для разбора я использовал"GEOSwift
"библиотека.
Но, в то время как время разбора его не в состоянии получить данные из LineString
и его выход из состояния после.
if let item = item as? LineString {
Код
DispatchQueue.global(qos: .background).async {
if let geoJSONURL = Bundle.main.url(forResource: "LineString", withExtension: "geojson") {
do {
var overlays = [MKPolyline]()
let features = try Features.fromGeoJSON(geoJSONURL)
for item in features! {
if let item = item as? LineString {
let polyLine = item.mapShape() as! MKPolyline
overlays.append(polyLine)
}
}
DispatchQueue.main.async {
// add overlays to map
self.mapView.addOverlays(overlays)
}
} catch {
}
}
}
Даже пытался, как в следующем, но, показывая ошибки времени компиляции.
let geometryDict = item["geometry"]
let lineStringType = geometryDict["type"]
Пример данных geojson
как
{"type":"FeatureCollection”,”features":[{"type":"Feature","id":1,"geometry":{"type":"LineString","coordinates":[[-61.4127132774969,42.9804121510986],[-61.412698736004,62.9807528172026],[-61.4126676674304,42.9808383428383]]},{"type":"Feature","id":2,"geometry":{"type":"LineString","coordinates":[[-61.4124601404427,32.9810257092771],[-61.4124646891238,32.9810320381762],[-61.412690615116,32.9813462742651]]}
Иерархия похожа на PFA.
Может кто-нибудь подсказать мне, где я делаю не так?
Я полностью перешел по следующей ссылке, но они не привели пример для LineString.
1 ответ
Решение
Через инспектор переменных я вижу, что вы неправильно обращаетесь к элементу. Используйте следующее выражение для доступа к первому LineString
в features
последовательность:
if let item = item.geometries[0] as? LineString {