Можно ли создать собственное всплывающее окно для MGLPolyline? - PullRequest
0 голосов
/ 10 февраля 2019

Итак, я искал способ сделать MGLP-полилинию доступной для записи .Один из способов, который я задумал для этого, состоит в том, чтобы использовать всплывающее окно, добавленное MapBox, чтобы оно показывало что-то, но сделать всплывающее окно невидимым, чтобы я мог что-то делать (вызывать функцию) при записи определенной строки.

В настоящее время, когда вы добавляете polyline.title , затем, когда вы нажимаете на кнопку ниже, запускается функция, но при этом или при нулевом значении ("") она не запускается

        func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
        // Always allow callouts to popup when annotations are tapped.
        print("ok ran?")
        return true
    }

Однако мне не удалось найти способ сделать всплывающее окно невидимым или не отображать его, чтобы я мог просто запустить функцию, когда она записана на пленку. Есть ли способ сделать это?Или как вообще добиться того, что я хочу сделать, масштабируемым образом?

Обновление:

        func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
        // Always allow callouts to popup when annotations are tapped.
        print("ok ran?")
        return false
    }

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

1 Ответ

0 голосов
/ 10 февраля 2019

Когда вы нажимаете на MGLPolyline, вы выбираете его.Даже если вы вернули false из annotationCanShowCallout:, полилиния выбирается после касания, хотя, вероятно, нет видимой метки.Вот почему некоторые из ваших нажатий не имеют видимых действий.Эти касания отменяют выбор ломаной линии (снова невидимо).

Что вы можете сделать, это вернуть false из annotationCanShowCallout: (при условии, что вы не хотите, чтобы ЛЮБЫЕ аннотации имели выноску) и использовать другой метод делегата длядостичь желаемой цели.

func mapView(_ mapView: MGLMapView, annotationCanShowCallout annotation: MGLAnnotation) -> Bool {
    return false
}

func mapView(_ mapView: MGLMapView, didSelect annotation: MGLAnnotation) {
    print("Tapped")
    mapView.deselectAnnotation(annotation, animated: false)
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...