Я создал приложение, в котором у меня есть карта с использованием (MapKit), и когда я нажимаю «Старт», оно автоматически увеличивает мое местоположение и размещает аннотацию.
Но отсюда я запутался.Я пытаюсь нарисовать линию от начальной позиции до текущей.(И обновлять каждое движение, которое я делаю).Например, если я пройду 300 метров на север, я смогу проверить карту на своем телефоне и увидеть, что линия полиция преследует меня.
Итак, начните с аннотации -----> (Polyline) для пользователя.И постоянно обновляйте его (чтобы вы могли видеть движение строки
Как мне это сделать? Если вы знаете, пожалуйста, дайте мне знать в комментариях. Я был бы очень благодарен за это! :))
Код для добавления аннотации в правильной позиции:
@IBAction func StartWalk(_ sender: Any)
{
if play == true
{
play = false
//Set resetbutton disabled.
ResetButton.isHidden = true
//Set new image when play is true
PlayStop.setImage(UIImage(named: "Stop"), for: .normal)
//Bool to check if button is stopped (op)
isStopped = false
//Checking userpermission to allow map and current location
if (CLLocationManager.locationServicesEnabled())
{
locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()
//Retrieve current position
if let userLocation = locationManager.location?.coordinate
{
//Zooming in to current position
let viewRegion = MKCoordinateRegion(center: userLocation, latitudinalMeters: 200, longitudinalMeters: 200)
mapView.setRegion(viewRegion, animated: false)
//Creating a start annotation
let annotation = MKPointAnnotation()
annotation.title = "Start"
annotation.coordinate = userLocation
mapView.addAnnotation(annotation)
}
}
}
}
Идея для строки поли:
//Create polyline
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer
{
if(overlay is MKPolyline)
{
let polyLineRender = MKPolylineRenderer(overlay: overlay)
polyLineRender.strokeColor = UIColor.blue.withAlphaComponent(1)
polyLineRender.lineWidth = 3
return polyLineRender
}
return MKPolylineRenderer()
}
//Updating location + polylines
@objc func update()
{
//Startposition
let startLat = locationManager.location?.coordinate.latitude
let startlong = locationManager.location?.coordinate.longitude
let startResult = CLLocation(latitude: startLat!, longitude: startlong!)
//This should be the current user location.
let stopLat = locationManager.location?.coordinate.latitude
let stopLong = locationManager.location?.coordinate.longitude
let stopResult = CLLocation(latitude: stopLat!, longitude: stopLong!)
let locations =
[
CLLocationCoordinate2D(latitude: startLat!, longitude: startlong!),
CLLocationCoordinate2D(latitude: stopLat!, longitude: stopLong!)
]
//Draw polyline on the map
let aPolyLine = MKPolyline(coordinates: locations, count: locations.count)
//Adding polyline to mapview
mapView.addOverlay(aPolyLine)
}
Чтобы сделать ее короткой:
Я хочу, чтобы линия поли начиналась с начальной позиции, а затем следовала за пользователем, куда бы он ни шел, пока не будет нажата кнопка остановки.Как погоня за синей точкой во все времена.Вы знаете?Пожалуйста, ударил меня