Почему моя строка не преобразуется в mapShape в geoSwift - (происходит только с одним конкретным поиском), может быть ошибка внешней библиотеки?

Я использую библиотеку GEOSwift: https://github.com/GEOSwift/GEOSwift

Мое лучшее предположение состоит в том, что если вы посмотрите на связанное строковое изображение, оно выглядит так, как будто это неправильный круг, так что, возможно, это ошибка в библиотеке? Но я совсем не уверен в этом!

У меня проблема только тогда, когда я ввожу одну конкретную строку. Мое приложение получает массив координат маршрута, преобразует их в строку WKT (представляющую линию). Затем он создает буфер вокруг этой строки, а затем преобразует его в mapShape.

Он работает нормально, пока я не ищу один конкретный маршрут.

Это терпит неудачу здесь:

    func bufferPolyline(routeCoords: [CLLocationCoordinate2D], completion: @escaping (_ bufferCoordsArray: [LatLng]) -> ()) {
        var wktString = ""
        var i = 0
        while i < routeCoords.count {
            let lat = routeCoords[i].latitude
            let lng = routeCoords[i].longitude
            if i == routeCoords.count-1 {
                let wktLast = " \(lng) \(lat)"
                wktString += "\(wktLast)"
                i += 1
            }
            if i >= 1 && i <= routeCoords.count-2 {
                let wktMid = " \(lng) \(lat),"
                wktString += "\(wktMid)"
                i += 1
            }
            if i == 0 {
                let wktFirst = "\(lng) \(lat),"
                wktString += "\(wktFirst)"
                i += 1
            }
        }
        let linestring = Geometry.create("LINESTRING(\(wktString))")! 
        let string = linestring.buffer(width: 0.05)!
        guard let shapeLine = string.mapShape() as? MKPolygon else {
            preconditionFailure() // FAILURE HAPPENS HERE.
        }
}

Вот ссылки на изображения, чтобы увидеть, как это выглядит: LineString - /questions/25655018/preobrazovat-desyatichnuyu-v-dvojnuyu/25655034#25655034 String - https://imgur.com/a/KJRfpRX

Линейная строка и строковые значения все еще поступают, даже когда shapeLine не инициализируется, поэтому я изо всех сил пытаюсь увидеть, где я иду не так. Они также, кажется, отформатированы таким же образом.

Я пытался найти Google для WKT String validator, но не нашел его, но я предполагаю, что все должно быть в порядке, так как я возвращаю несколько других запросов без проблем. (т.е. shapeLine возвращает значение)

Мой вопрос: это похоже на проблему в моем коде или на возможную ошибку библиотеки? (Я мало верю в мой код!)

0 ответов

Другие вопросы по тегам