Вы можете достичь этого с помощью GMSCoordinateBounds
Ссылка: https://stackoverflow.com/a/45169325/8447312
Имейте объект bounds перед циклом for:
var bounds = GMSCoordinateBounds()
Тогда в вашем дляВ цикле вы сделаете положение каждого маркера включенным в объект Bounds:
var bounds = GMSCoordinateBounds()
for document in snapshot!.documents {
print(document.data())
let marker = GMSMarker()
self.location.append(Location(trackingData: document.data()))
let latitude = document.data()["Latitude"] ?? 0
let longitude = document.data()["longitude"] ?? 0
marker.position = CLLocationCoordinate2D(latitude: latitude as! CLLocationDegrees , longitude: longitude as! CLLocationDegrees)
marker.map = self.mapView
marker.userData = self.location
marker.icon = UIImage(named: "marker")
//include position for each marker
bounds = bounds.includingCoordinate(marker.position)
}
//when your loop is completed you included all your marker's coordinate in your bounds now, you need to animate:
mapView.animate(with: GMSCameraUpdate.fit(bounds, with: UIEdgeInsets(top: 20.0, left: 20.0, bottom: 20.0, right: 20.0)))
Я дал 20 вставок для каждой стороны, вы можете изменить его на значение по вашему желанию.
О чертежестроки попробуйте это:
Создайте путь прямо над вами, создайте границы:
let path = GMSMutablePath()
Затем в цикле for добавьте позицию каждого маркера в этот путь, как вы сделали для границ:
path.add(marker.position)
В конце, перед анимацией вашей карты, создайте такие направления, как:
let directions = GMSPolyline(path: path)
directions.strokeWidth = 1.0
directions.map = mapView
Весь код (пути добавлены):
var bounds = GMSCoordinateBounds()
var path = GMSMutablePath()
for document in snapshot!.documents {
print(document.data())
let marker = GMSMarker()
self.location.append(Location(trackingData: document.data()))
let latitude = document.data()["Latitude"] ?? 0
let longitude = document.data()["longitude"] ?? 0
marker.position = CLLocationCoordinate2D(latitude: latitude as! CLLocationDegrees , longitude: longitude as! CLLocationDegrees)
marker.map = self.mapView
marker.userData = self.location
marker.icon = UIImage(named: "marker")
bounds = bounds.includingCoordinate(marker.position)
path.add(marker.position)
}
let directions = GMSPolyline(path: path)
directions.strokeWidth = 1.0
directions.map = mapView
mapView.animate(with: GMSCameraUpdate.fit(bounds, with: UIEdgeInsets(top: 20.0, left: 20.0, bottom: 20.0, right: 20.0)))