Приведенный ниже код работает, когда я пытаюсь щелкнуть наложенную ломаную линию в своем виде карты, но она требует знания точной ширины ломаной линии в координатах чертежа средства визуализации.Например, 650.0 работает при определенном увеличении, но если я увеличу еще больше, правильная ширина может быть примерно 150. Есть ли способ найти ширину линии ломаной в координатах рендерера, чтобы сделать функцию копирования работоспособной?
Я пробовал polylineRenderer.lineWidth, но он возвращает ширину относительно другой системы координат.
@objc func didTapGesture(_ sender: UITapGestureRecognizer) {
let touchPoint = sender.location(in: mapView)
let touchCoordinate = mapView.convert(touchPoint, toCoordinateFrom: mapView)
let mapPoint = MKMapPoint(touchCoordinate)
for overlay in mapView.overlays {
if overlay is MKPolyline {
if let polylineRenderer = mapView.renderer(for: overlay) as? MKPolylineRenderer {
let polylinePoint = polylineRenderer.point(for: mapPoint)
let width: CGFloat = 650.0
let copiedPath: CGPath = polylineRenderer.path.copy(strokingWithWidth: width, lineCap: .butt, lineJoin: .miter, miterLimit: 1.0)
if copiedPath.contains(polylinePoint) {
polylineRenderer.strokeColor = polylineRenderer.strokeColor?.withAlphaComponent(1.0)
}
}
}
}
}