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?
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!
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'étendreGMSAutocompleteViewControllerDelegate
pour l'emplacement actuel
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
}
Pour Objective-c, la méthode est la suivante:
[mapView moveCamera:[GMSCameraUpdate setTarget:<CLLocationCoordinate2DMake>]];