【发布时间】:2019-09-19 15:02:27
【问题描述】:
我有一个 CLLocationCoordinate2D 数组,需要画一条线连接数组中的第一个索引和最后一个索引。
我已经在这里和其他地方看到了答案,但它们主要适用于旧版本的 swift,或者适用于您首先转换为双精度或其他任何内容的字符串数组,或者仅适用于单个位置。
我尝试过创建 MKPolyline、viewForOverlay 等,但无法显示该线。我错过了什么?
let locationManager = CLLocationManager()
let regionRadius: CLLocationDistance = 3000
var locations: [CLLocationCoordinate2D] = []
var latitude: [CLLocationDegrees] = []
var longitude: [CLLocationDegrees] = []
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
mapView.register(MKMarkerAnnotationView.self, forAnnotationViewWithReuseIdentifier: MKMapViewDefaultAnnotationViewReuseIdentifier)
createAnnotations()
centerMapOnLocation(location: initialLocation)
var polyline = MKPolyline(coordinates: &locations, count: locations.count)
mapView.addOverlay(polyline)
}
// MARK: - Create Annotaions
func createAnnotations() {
locations = zip(latitude, longitude).map(CLLocationCoordinate2D.init)
AppLogger.logInfo("\(locations)")
for location in locations {
let annotation = MKPointAnnotation()
annotation.coordinate = CLLocationCoordinate2D(latitude: location.latitude, longitude: location.longitude)
mapView.addAnnotation(annotation)
}
}
// MARK: - Region Zoom
func centerMapOnLocation(location: CLLocation) {
let coordinateRegion = MKCoordinateRegion(center: location.coordinate,
latitudinalMeters: regionRadius,
longitudinalMeters: regionRadius)
mapView.setRegion(coordinateRegion, animated: true)
}
// MARK: - Draw Polylines
func mapView(mapView: MKMapView!, viewForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
if (overlay is MKPolyline) {
let pr = MKPolylineRenderer(overlay: overlay)
pr.strokeColor = UIColor.blue.withAlphaComponent(0.5)
pr.lineWidth = 5
return pr
}
return nil
}
预期输出:从位置数组中,我们基本上绘制了行驶路线。这不是获取路线的方法,因为驱动器已经被占用了。
【问题讨论】:
标签: swift mapkit mkpolyline