我有一个CLLocationCoordinate
数组。我想画一条恒定的线。这条线将链接每个相邻的CLLocationCoordinate
,所以当CLLocationCoordinates
’的距离非常近时,该线看起来就像一条曲线。我想知道如何开发它吗?
我试图像这样使用MKPolyLine:
var polyline:MKPolyline=MKPolyline(coordinates: arrcoordinate, count: arrcoordinate.count);
但是它不符合我的愿望。我也尝试过像MKGeodesicPolyline
一样,它也不符合我的愿望。
我只是简化了这个探针,所以我制作了一个如下的CLLocationCoordinate数组:
var arrcoordinate:[CLLocationCoordinate2D]=[CLLocationCoordinate2D].init();
arrcoordinate.append(CLLocationCoordinate2D.init(latitude: 100, longitude: 39));
arrcoordinate.append(CLLocationCoordinate2D.init(latitude: 128, longitude: 33));
arrcoordinate.append(CLLocationCoordinate2D.init(latitude: 118, longitude: 55));
arrcoordinate.append(CLLocationCoordinate2D.init(latitude: 122, longitude: 57));
print(arrcoordinate)
var polyline:MKPolyline=MKPolyline.init(coordinates: &arrcoordinate, count: arrcoordinate.count);
self.MapView.addOverlay(polyline);
并使OverlayRender委托像这样:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolyline {
var polylineRenderer=MKPolylineRenderer.init(overlay: overlay);
polylineRenderer.strokeColor = UIColor.white;
polylineRenderer.lineWidth=2
return polylineRenderer
}
return MKOverlayRenderer.init();
}
但是地图视图上没有任何行,所以我不知道为什么?
答案 0 :(得分:0)
对我来说很好。
我不得不稍微更改一下代码,因为您的坐标是荒谬的。所以我的代码版本如下:
import UIKit
import MapKit
class ViewController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var map: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
self.map.delegate = self
var arrcoordinate = [CLLocationCoordinate2D]()
arrcoordinate.append(CLLocationCoordinate2D(latitude: 0, longitude: 39))
arrcoordinate.append(CLLocationCoordinate2D(latitude: 28, longitude: 33))
arrcoordinate.append(CLLocationCoordinate2D(latitude: 18, longitude: 55))
arrcoordinate.append(CLLocationCoordinate2D(latitude: 22, longitude: 57))
let polyline = MKPolyline(coordinates: &arrcoordinate, count: arrcoordinate.count)
self.map.add(polyline)
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MKPolyline {
let polylineRenderer = MKPolylineRenderer(overlay: overlay)
polylineRenderer.strokeColor = .red
polylineRenderer.lineWidth = 2
return polylineRenderer
}
return MKOverlayRenderer()
}
}