как сохранить карту всегда в центре текущего местоположения при уменьшении масштаба в MapBox iOS - PullRequest
0 голосов
/ 08 апреля 2020

Я реализую Map-box SDK в iOS. Поэтому мое требование заключается в том, чтобы при увеличении или уменьшении масштаба или повороте карты местоположение пользователя всегда было в центре ..

Есть ли какой-либо метод или API, доступный для достижения этой функции?

1 Ответ

1 голос
/ 16 апреля 2020

Вы можете использовать свойство MGLMapView isScrollEnabled и установить для него значение false.

mapView.isScrollEnabled = false

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

optional func mapView(_ mapView: MGLMapView, shouldChangeFrom oldCamera: MGLMapCamera, to newCamera: MGLMapCamera) -> Bool

Нечто похожее на приведенный ниже код работает, но предполагает, что вы уже центрировали карту в местоположении пользователя. Также обратите внимание на! на месте пользователя ... пожалуйста, сделайте обычные проверки безопасности в вашем реальном приложении.

func mapView(_ mapView: MGLMapView, shouldChangeFrom oldCamera: MGLMapCamera, to newCamera: MGLMapCamera) -> Bool {
    newCamera.centerCoordinate = mapView.userLocation!.coordinate
    mapView.camera = newCamera

    return true
}

Надеюсь, это поможет.

...