为什么我的lineString无法在geoSwift中转换为mapShape-(仅在一次特定搜索中发生),可能是外部库错误?

时间:2019-04-09 19:39:09

标签: swift error-handling geos 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-https://imgur.com/a/7OLPZkM 字符串-https://imgur.com/a/KJRfpRX

线串和字符串值仍然通过,即使shapeLine不初始化也是如此,所以我很努力地查看错误之处。它们似乎也采用相同的格式。

我尝试用Google搜索WKT字符串验证器,但没有找到一个,但我认为应该没问题,因为我返回了多个其他搜索,都没有问题。 (即shapeLine返回一个值)

我的问题是:这看起来像是我的代码中的问题,还是库的可能错误? (我对自己的代码不信任!)

0 个答案:

没有答案