Как переместить карту камеры, когда маркер перетаскивает границы экрана в iOS? - PullRequest
0 голосов
/ 14 мая 2019

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

// Is not working as the marker and map keeps moving
func mapView(_ mapView: GMSMapView, didDrag marker: GMSMarker) {
    let camera = GMSCameraPosition(target: marker.position, zoom: zoom)
    self.mapView.map.animate(to: camera)
}

1 Ответ

1 голос
/ 18 мая 2019

Вы использовали правильную функцию, но сначала вам нужно проверить, находится ли текущая позиция маркера в пределах границ карты или нет.Если он не находится в граничном диапазоне, то мы должны установить положение камеры.

Для этого выполните следующие два шага.

  • Замените, что вы сделали Dragфункция с приведенным ниже кодом

    func mapView(_ mapView: GMSMapView, didDrag marker: GMSMarker) {
    if !isMarkerWithinScreen(marker: marker) {
        let camera = GMSCameraPosition(target: marker.position, zoom: mapViewForScreen.camera.zoom)
        self.mapView.animate(to: camera)
    }
    }
    
  • Добавьте эту функцию в свой viewController, чтобы проверить, находится ли маркер на границе или нет.

    func isMarkerWithinScreen(marker: GMSMarker, _ mapView: GMSMapView) -> Bool {
    let region = self.mapView.projection.visibleRegion()
    let bounds = GMSCoordinateBounds(region: region)
    return bounds.contains(marker.position)
    }
    

Я уже сделал это.Не стесняйтесь спрашивать, если вы все еще сталкиваетесь с этой проблемой.

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