我已经编写了这个函数来在加载视图中添加叠加层,并且它可以很好地工作。
如何根据我点击按钮时传递的新坐标,使用此功能或任何其他方法更新叠加。
我正在传递一个类型CLLocationCoordinate2D
坐标的数组。
func drawpolyline(loclist: Array<CLLocationCoordinate2D>) {
// if let overlays = self.mainMapView?.overlays {
// self.mainMapView.removeOverlays(overlays)
// }
if (loclist != nil && loclist.count > 1) {
let startmark = loclist.first
let cord1 = CLLocationCoordinate2D(latitude: (startmark?.latitude)!, longitude: (startmark?.longitude)!)
let polyline = MKPolyline(coordinates: loclist, count: loclist.count)
print(polyline.pointCount)
let latDelta:CLLocationDegrees = 0.02
let lonDelta:CLLocationDegrees = 0.02
let mapSpan = MKCoordinateSpanMake(latDelta, lonDelta)
let mapRegion = MKCoordinateRegion(center: cord1, span: mapSpan)
// let adjustedRegion: MKCoordinateRegion = [self.mainMapView regionThatFits:viewRegion]
if (mainMapView != nil) {
self.mainMapView.delegate = self
self.mainMapView.add(polyline)
self.mainMapView.setRegion(mapRegion, animated: true);
// self.mainMapView.addAnnotation(mapAnnotation);
}
} else {
configureMap()
}
}
//function of MKMapViewDelegate for making overlays
//Function to give polyline color and width etc.
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
//Return an `MKPolylineRenderer` for the `MKPolyline` in the `MKMapViewDelegate`s method
if let polyline = overlay as? MKPolyline {
let testlineRenderer = MKPolylineRenderer(polyline: polyline)
testlineRenderer.strokeColor = .blue
testlineRenderer.lineWidth = 3.0
return testlineRenderer
}
fatalError("Something wrong...")
return MKOverlayRenderer()
}
答案 0 :(得分:0)
我假设你有一个按钮设置,并与IBAction链接。
您需要从按钮操作中调用drawpolyline
函数,以新的坐标格式与之前在启动时调用它时的格式相同,但是对于新位置。
如果您不理解,可能会提供一些有关如何在启动时调用drawpolyline
函数的更多信息,我假设在viewDidLoad
。
如果您不知道如何拨打按钮
@IBAction func showListPressed(_ sender: UIButton) {
// call drawpolyline function here with new coordinates
}