You need to use GMSMapView
selectedMarker
property, also you need to move the camera to the new selectedMarker position
Full Code example
import UIKit
import GoogleMaps
struct MarkerStruct {
let name: String
let lat: CLLocationDegrees
let long: CLLocationDegrees
}
class TapViewController: UIViewController, GMSMapViewDelegate {
let markers = [
MarkerStruct(name: "Food Hut 1", lat: 52.649030, long: 1.174155),
MarkerStruct(name: "Foot Hut 2", lat: 35.654154, long: 1.174185),
MarkerStruct(name: "Foot Hut 3", lat: 22.654154, long: 1.174185),
MarkerStruct(name: "Foot Hut 4", lat: 50.654154, long: 1.174185),
]
var mapView : GMSMapView? = nil
var mapMarkers : [GMSMarker] = []
var timer : Timer? = nil
override func viewDidLoad() {
super.viewDidLoad()
let camera = GMSCameraPosition.camera(withLatitude: 52.649030, longitude: 1.174155, zoom: 14)
mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
mapView?.delegate = self
self.view = mapView
for marker in markers {
let position = CLLocationCoordinate2D(latitude: marker.lat, longitude: marker.long)
let locationmarker = GMSMarker(position: position)
locationmarker.title = marker.name
locationmarker.map = mapView
mapMarkers.append(locationmarker)
}
timer = Timer.scheduledTimer(timeInterval: 15, target: self, selector: #selector(self.selectRandomMarker), userInfo: nil, repeats: true)
}
//Selecting random marker
func selectRandomMarker(){
let randomIndex = arc4random_uniform(UInt32(self.mapMarkers.count))
self.mapView?.selectedMarker = self.mapMarkers[Int(randomIndex)]
self.mapView?.animate(toLocation: (self.mapView?.selectedMarker!.position)!)
}
}