web-dev-qa-db-fra.com

Déplacer la caméra Google Maps vers un lieu

Je travaille avec une vue Google Maps et je souhaite ajouter un bouton à la carte qui, une fois appuyé, déplacera la caméra à un emplacement spécifique. J'ai actuellement une prise de bouton et une action connectée au bouton. 

@IBAction func locationTapped(_ sender: Any) {
    print("tapped")
    let location = GMSCameraPosition.camera(withLatitude: place.latitude, longitude: place.longitude, zoom: 17.0)

    mapView.camera = location
}

place existe mais, pour une raison quelconque, la caméra ne bouge pas. J'ai essayé différentes versions de code et consulté la documentation de Google Maps, mais aucune des options ne donne de résultats. Quelqu'un peut-il me dire ce que je fais mal?

10
ch1maera

La classe GMSMapView a la fonction suivante:

animate(to: GMSCameraPosition)

Donc, dans votre exemple de code, au lieu de faire ceci:

mapView.camera = location

Essayez de faire ceci:

mapView.animate(to: location)

J'espère que cela t'aides!

17
Pheepster

dans Swift3 et Swift4 pour déplacer le marqueur à la position actuelle, utilisez ceci:

func myLocationBtnAction(_ sender: UIButton) {
            mapView.moveCamera(GMSCameraUpdate.setTarget(CLLocationCoordinate2D(latitude: (mapView.myLocation?.coordinate.latitude)!, longitude: (mapView.myLocation?.coordinate.longitude)!), zoom: 16))

et pour un emplacement spécifique, utilisez ceci:

let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: lng, zoom: 16)
            mapView?.camera = camera
            mapView?.animate(to: camera)

et n'oubliez pas d'étendreGMSAutocompleteViewControllerDelegatepour l'emplacement actuel 

11
Mohsen mokhtari

Swift 2.3

Ce code est utilisé pour mon but. Dans quel marqueur appuyez l'événement utilisé, ce qui déplace la position de la carte sur la caméra. J'espère que vous trouverez votre solution.

 func mapView(mapView: GMSMapView, didTapMarker marker: GMSMarker) -> Bool {
        mapView.selectedMarker = marker
        var point = mapView.projection.pointForCoordinate(marker.position)
        let camera = mapView.projection.coordinateForPoint(point)
        let position = GMSCameraUpdate.setTarget(camera)
        mapView.animateWithCameraUpdate(position)
        return true
    }
0
Jaydeep

Pour Objective-c, la méthode est la suivante:

[mapView moveCamera:[GMSCameraUpdate setTarget:<CLLocationCoordinate2DMake>]];
0
Er. Vihar