Я объявляю точку следующим образом:
makeAnnotation(givenTitle: "Start", pointCoords: userCoords)
turnLocations.append(userCoords)
let region = MKCoordinateRegion(center: userCoords, latitudinalMeters: 100, longitudinalMeters: 100)
mapView.setRegion(region, animated: true)
userCoords
устанавливается правильно, и заголовок «Пуск» отображается на карте без визуального вывода для аннотации, хотя и увеличивает ее масштаб. правильно с регионом. Когда я вычисляю расстояние между этим «Стартом» и другими моими аннотациями и складываю их вместе, он работает правильно и даже восстанавливает начальный маршрут. Однако, когда я делаю ломаную линию следующим образом: (и отрисовываю ее правильно)
let polyline = MKPolyline(coordinates: turnLocations, count: turnLocations.count) //makes polyLine w/ coords given
mapView.addOverlay(polyline)
Она только делает ломаную линию между каждой другой точкой в массиве turnLocations
или соединяет ее странным образом (это должно соединиться повернуть1)
![https://imgur.com/a/kP3wbWc](https://i.stack.imgur.com/CiHUS.png)
Редактировать: Поскольку меня спросили, вот как добавляются другие координаты в очереди:
let coords = mapView.convert(tapLocation,toCoordinateFrom: mapView)
print("Tapped at lat: \(coords.latitude) long: \(coords.longitude)")
makeAnnotation(givenTitle: "Turn\(annotations.count)", pointCoords: coords)
turnLocations.append(coords)
И он определяется вверху следующим образом:
var turnLocations: [CLLocationCoordinate2D] = []
И очищается с помощью
turnLocations = []
Всякий раз, когда пользователь сбрасывает координаты в приложении (со сбросом кнопка) Кнопка запуска добавляется всякий раз, когда нет аннотаций
if(turnLocations.count < 1){ //if start isn't there already, it creates it
makeAnnotation(givenTitle: "Start", pointCoords: userCoords)
turnLocations.append(userCoords)
let region = MKCoordinateRegion(center: userCoords, latitudinalMeters: 100, longitudinalMeters: 100)
mapView.setRegion(region, animated: true)
}
, и userCoords определяется с этим после обновления userLocation (с помощью встроенного метода диспетчера местоположений)
userCoords = mapView.userLocation.coordinate