Получите координаты в onLongPressGesture на карте.
Мой вопрос очень похож на этот: Зафиксировать местоположение touchDown onLongPressGesture в SwiftUI?
Однако есть одна существенная особенность: я хочу получить координаты.onLongPressGesture
на . В этом случае решение исходного вопроса имеет две основные проблемы:
Это нарушает настройки по умолчанию
Map
функция перетаскивания.Он фиксирует координату при «отпускании», а не при «нажатии и удержании в течение X секунд». Я хочу получить координаты после нажатия и удержания настроенного количества секунд (
minimumDuration
параметр), но до поднятия пальца.
Я пробовал разные комбинации жестов в разном порядке:.onTapGesture
,DragGesture
и т. д., но объединить их работоспособным способом не удалось (либо перетаскивание карты нарушается, либо координата определяется при поднятии пальца, либо какие-то другие проблемы).
Еще я пытался создать прозрачный оверлей и применить к нему какие-то жесты, но тоже не получилось...
Я также видел этот вопрос (и ответ), но он не помогает, потому что не фиксирует координаты (и, IIRC, он также нарушил функцию перетаскивания): У кого-нибудь работает SwiftUI+MapKit+LongPress?
1 ответ
Исходя из того, что ответов здесь нет (как и на форуме разработчиков Apple) и ни один из моих дальнейших экспериментов не увенчался успехом, я предполагаю, что добиться желаемого поведения с помощьюMap
компонент. Мне пришлось вернуться к комбинацииMKMapView
иUILongPressGestureRecognizer
. Более подробную информацию можно найти в ответах на этот вопрос: Добавление аннотации к виду карты при длительном нажатии в Swift.