Проложить направление к булавкам на карте - PullRequest
0 голосов
/ 05 июня 2018

Прямо сейчас я пишу карту в iOS и пытаюсь выяснить, как получить направление для каждого закодированного мной булавки, который постоянно установлен на карте.

Например, что я хочу, чтобы моя панель поиска - это когда я набираю имя одного из тех постоянных пинов, которые я поместил, панель поиска распознает, чтобы перейти прямо к этому пину, который яразмещены.

Мне нужно знать, как добраться до булавок, которые я поместил на мою карту.Я нажимаю на булавки, но не получаю направления к нему из текущего местоположения.Вот что я пытаюсь выяснить.

Вот что у меня есть для моих пинов, которые я поместил:

let location11 = CLLocationCoordinate2D( latitude: 33.232233, longitude: -111.232322)

let span11 =  MKCoordinateSpanMake(0.02, 0.02)

let region11 = MKCoordinateRegion(center: location11, span: span11);

mapView.setRegion(region11, animated: true)

let Annotation10 = MKPointAnnotation()
Annotation10.coordinate = location11
Annotation10.title = " blahhh "
Annotation10.subtitle = "Campus"

mapView.addAnnotation (Annotation10)

А вот как я настроил свой делегат searchBar:

extension ViewController: UISearchBarDelegate {
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        searchBar.endEditing(true)
        let localSearchRequest = MKLocalSearchRequest()
        localSearchRequest.naturalLanguageQuery = searchBar.text
        let region = MKCoordinateRegion(center: currentCoordinate, span: MKCoordinateSpan(latitudeDelta: 0.002, longitudeDelta: 0.002))
        localSearchRequest.region = region
        let localSearch = MKLocalSearch(request: localSearchRequest)
        localSearch.start { (response, _) in
            guard let response = response else { return }
            guard let firstMapItem = response.mapItems.first else
            { return }
            self.getDirections(to: firstMapItem)
        }
    }

А вот мой делегат просмотра карты:

extension ViewController: MKMapViewDelegate {
    func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
        if overlay is MKPolyline {
            let renderer = MKPolylineRenderer(overlay: overlay)
            renderer.strokeColor = .yellow
            renderer.lineWidth = 5
            return renderer
        }
        if overlay is MKCircle {
            let renderer = MKCircleRenderer(overlay: overlay)
            renderer.strokeColor = .red
            renderer.fillColor = .red
            renderer.alpha = 0.005
            return renderer
        }
        return MKOverlayPathRenderer()
    }
}

1 Ответ

0 голосов
/ 05 июня 2018

Сначала передайте ваш делегат переменной mkmapview вашему родительскому представлению / viewcontroller.Существуют методы делегата для получения выбранного пина. Сначала добавьте пин с правильной информацией на карту с помощью метода делегата MKMapView:

func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
    let annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "pin")//Add your information here to the pin....like title,tag,color...}

Затем при нажатии на представление пина будет вызван этот метод .... getпин-код и извлекать информацию, необходимую для расчета маршрута

  func mapView(_ mapView: MKMapView, didSelect view: MKAnnotationView) {//Get location and other info from view}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...