【发布时间】:2019-07-22 13:34:51
【问题描述】:
我创建了一个应用程序,其中我使用 (MapKit) 制作了一张地图,当我按下“开始”时,它会自动放大我的位置并放置注释。
但是从这里开始,我很困惑。我正在尝试从起始位置到当前位置绘制一条折线。 (并更新我所做的每一个动作)。举个例子,如果我向北走 300 米,我应该能够查看手机上的地图并看到折线在跟随我。
所以从注解开始----->(折线)到用户。并随时更新(这样你就可以看到线条在移动
我怎样才能做到这一点?如果您知道,请在 cmets 中告诉我。我会非常感谢它! :)
在正确位置添加注解的代码:
@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)
}
简而言之:
我希望折线从起始位置开始,然后跟随用户走到任何地方,直到按下停止按钮。就像一直在追逐蓝点。你知道吗?请打我
【问题讨论】: