Создайте экземпляр GMSMapView как свойство экземпляра вне метода addMarker.А в методе addMarker измените положение камеры и добавьте маркеры.
let mapView = GMSMapView()
private func addMarker(title:String, snippet:String , latitude:Double , longitude:Double){
let camera = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: 6.0)
self.mapView.animate(to: camera)
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
}
При добавлении нескольких маркеров один за другим не анимируйте положение камеры в последней позиции маркера.Чтобы показать все маркеры в просмотре карты, вы можете использовать GMSCoordinateBounds
let mapView = GMSMapView()
var bounds = GMSCoordinateBounds()
override func viewDidLoad() {
super.viewDidLoad()
addMarker(title: "pala", snippet: "nanana", latitude: 35.741522, longitude: 9.805937)
addMarker(title: "pala", snippet: "nanana", latitude: 36.89939467218524, longitude: 10.187976658321267)
}
private func addMarker(title:String, snippet:String , latitude:Double , longitude:Double){
// Creates a marker in the center of the map.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)
marker.title = title
marker.snippet = snippet
marker.map = mapView
bounds = bounds.includingCoordinate(marker.position)
let update = GMSCameraUpdate.fit(bounds, withPadding: 50)
mapView.animate(with: update)
}