SWIFT Как получить MKPolyine lineWidth относительно системы координат его рендерера? (Нажмите на наложение полилинии в просмотре карты) - PullRequest
0 голосов
/ 06 июня 2019

Приведенный ниже код работает, когда я пытаюсь щелкнуть наложенную ломаную линию в своем виде карты, но она требует знания точной ширины ломаной линии в координатах чертежа средства визуализации.Например, 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)
                    }  
                }
            }
        }
    }
...