Как перехватить панорамирование и масштабирование карты (Swift 4) - PullRequest
0 голосов
/ 23 ноября 2018

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

Решения, предложенные здесь , позволяют пользователю выполнять панорамирование за пределами области, а затем используют regionDidChangeAnimated, чтобы панорамировать их обратно в заданные границы.

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

Мне кажется, я ищу что-то вроде следующего псевдокода:

func blockMapViewPanEvent(_ mapView: MKMapView){
    return mapView.visibleMapRect.isContainedWithin(topLeft, bottomRight)
}

IЯ знаю, что MapBox Swift SDK достигает этого, поэтому я думаю, что это возможно.Могу ли я сделать это с простым старым MapKit?

Редактировать для Clarity:

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

Я не хочу отключать все взаимодействия с пользователем в представлении карты.

1 Ответ

0 голосов
/ 23 ноября 2018

Если я правильно вас понимаю, вы хотите отключить взаимодействие с пользователем на карте.

Вот несколько параметров, доступных в режиме просмотра карты.Это может быть полезно для вас

mapView.zoomEnabled = false
mapView.scrollEnabled = false
mapView.userInteractionEnabled = false

Если у вас есть проблемы с ними, вы можете просто поставить прозрачный вид на карту

...