Я использую библиотеку 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 String - https://imgur.com/a/KJRfpRX
theЛинейная строка и строковые значения все еще поступают, даже когда shapeLine не инициализируется, поэтому я изо всех сил пытаюсь увидеть, где я иду не так.Они также, похоже, отформатированы одинаково.
Я пытался найти Google для проверки строки WKT, но не нашел его, но я предполагаю, что все должно быть в порядке, так как я возвращаю несколько других запросов без проблем.(то есть shapeLine возвращает значение)
Мой вопрос: выглядит ли это как проблема в моем коде или возможная ошибка библиотеки?(я мало верю в свой код!)