В настоящее время я работаю с быстрым 3 - xcode.Создайте линию из двух заданных точек
У меня есть viewcontroller с картой.
Я имел аннотации к карте, так что, когда я longpress карту добавить аннотацию, как это:
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let longPressRec = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longpress(gestureRecognizer:)))
longPressRec.minimumPressDuration = 1.5 //time for pressing : seconds
map.addGestureRecognizer(longPressRec)
}
добавления аннотаций:
func longpress(gestureRecognizer: UIGestureRecognizer){
let touchPoint = gestureRecognizer.location(in: self.map)
let coord = map.convert(touchPoint, toCoordinateFrom: self.map)
let annotation = MKPointAnnotation()
annotation.coordinate = coord
annotation.title = "Point X"
map.addAnnotation(annotation)
print(coord.latitude)
print(coord.longitude)
var lastLocation = locationManager.location! //last location
var currentLocation = locationManager.location! //current location
if locationSet == false {
let firstLocation = locationManager.location! //first point
locationSet = true
}
else { //after second point
let currentLocation: CLLocation = locationManager.location!
var locations = [lastLocation, currentLocation]
var coordinates = locations.map({(location: CLLocation) -> CLLocationCoordinate2D in return location.coordinate})
var polyline = MKPolyline(coordinates: coordinates, count: locations.count)
map.add(polyline)
}
}
MapView:
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
//if overlay is MKPolyline {
print("Generating Polyline")
var renderer = MKPolylineRenderer(overlay: overlay)
renderer.strokeColor = UIColor.blue
renderer.lineWidth = 4
return renderer
// }
}
Теперь я хотел бы нарисовать линию на карте между вторым аннотацией и первой аннотацией каждый раз, когда я долго на карте.
Как я могу это сделать?
EDIT: Я пытался сделать это, но я не в состоянии. Это то, что я до сих пор ...
Что делать, если вы долго нажимаете свою карту 3 раза? Вы хотите нарисовать линию между вторым и третьим точками? –
Существует 50 способов сделать это. Как насчет того, как вы попытаетесь понять это сами, и когда вы потерпите неудачу, покажите нам свой код. – Sethmr
Если я коснусь, скажем, 5 раз, он должен сделать 4 строки: коснитесь 1 до 2, коснитесь 2 до 3, коснитесь 3 до 4, коснитесь 4 до 5. Как путь ... Я пытаюсь это сделать, но без успеха –