با استفاده از Maps SDK برای iOS، میتوانید به رویدادهایی که روی نقشه رخ میدهند، مانند رویدادهای تغییر دوربین یا رویدادهای ضربه زدن به نشانگر، گوش دهید.
مقدمه
 برای گوش دادن به رویدادها، باید پروتکل GMSMapViewDelegate را پیادهسازی کنید. معمولاً این پروتکل را روی کنترلر نمای (view controller) که نقشه را نمایش میدهد، پیادهسازی میکنید. در زیر مثالی آورده شده است: 
سویفت
import GoogleMaps class Events: UIViewController, GMSMapViewDelegate { // ... }
هدف-سی
@import GoogleMaps; @interface Events : UIViewController <GMSMapViewDelegate> @end
 وقتی GMSMapView ایجاد شد، میتوانید نماینده آن را به کنترلر نمای خود تنظیم کنید. GMSMapViewDelegate فقط متدهای اختیاری ارائه میدهد. برای گوش دادن به هر رویداد خاص، باید متد مربوطه را پیادهسازی کنید. 
سویفت
override func loadView() { super.loadView() let camera = GMSCameraPosition.camera( withLatitude: 1.285, longitude: 103.848, zoom: 12 ) let mapView = GMSMapView.map(withFrame: .zero, camera: camera) mapView.delegate = self self.view = mapView } // MARK: GMSMapViewDelegate func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { print("You tapped at \(coordinate.latitude), \(coordinate.longitude)") }
هدف-سی
- (void)loadView { [super loadView]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; mapView.delegate = self; self.view = mapView; } #pragma mark - GMSMapViewDelegate - (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate { NSLog(@"You tapped at %f,%f", coordinate.latitude, coordinate.longitude); }
موقعیت دوربین
 با استفاده از GMSMapViewDelegate ، میتوانید به تغییرات موقعیت دوربین که برای رندر نقشه استفاده میشود، گوش دهید. سه رویداد مجزا وجود دارد.
mapView:willMove:نشان میدهد که موقعیت دوربین در شرف تغییر است. اگر آرگومانgestureرویYESتنظیم شده باشد، این به دلیل انجام یک حرکت طبیعی توسط کاربر درGMSMapView، مانند pan یا tilt، است. در غیر این صورت،NOنشان میدهد که این بخشی از یک تغییر برنامهریزی شده است - برای مثال، از طریق روشهایی مانندanimateToCameraPosition:یا بهروزرسانی مستقیم لایه نقشه. همچنین اگر کاربر روی دکمههای My Location یا compass که انیمیشنهایی ایجاد میکنند که دوربین را تغییر میدهند، ضربه زده باشد، ممکن استNOباشد.این متد ممکن است چندین بار قبل از فراخوانی
mapView:idleAtCameraPosition:فراخوانی شود، اگرچه این معمولاً فقط در صورتی اتفاق میافتد که انیمیشنها و حرکات همزمان رخ دهند - برای مثال، یک حرکت، انیمیشن فعلی را لغو میکند وmapView:willMove:را برای بار دوم فراخوانی میکند.mapView:didChangeCameraPosition:به طور مکرر در طول یک حرکت یا انیمیشن فراخوانی میشود، و همیشه پس از فراخوانی تابعmapView:willMove:است. موقعیت دوربین میانی به آن ارسال میشود.در نهایت،
mapView:idleAtCameraPosition:زمانی که موقعیت دوربین درGMSMapViewغیرفعال میشود، فراخوانی میشود و موقعیت دوربین مربوطه را مشخص میکند. در این مرحله، تمام انیمیشنها و حرکات متوقف شدهاند.برنامهها میتوانند از این رویداد برای بهروزرسانی نشانگرها یا سایر محتوای نمایش داده شده در
GMSMapViewاستفاده کنند، به جای اینکه، برای مثال، محتوا را با هر تغییر دوربین مجدداً بارگذاری کنند.
 برای مثال، یک برنامه میتواند GMSMapView را در حین حرکت پاک کند و سپس موقعیت قرارگیری دوربین را به صورت معکوس ژئوکدگذاری کند. 
سویفت
let geocoder = GMSGeocoder() func mapView(_ mapView: GMSMapView, willMove gesture: Bool) { mapView.clear() } func mapView(_ mapView: GMSMapView, idleAt cameraPosition: GMSCameraPosition) { geocoder.reverseGeocodeCoordinate(cameraPosition.target) { (response, error) in guard error == nil else { return } if let result = response?.firstResult() { let marker = GMSMarker() marker.position = cameraPosition.target marker.title = result.lines?[0] marker.snippet = result.lines?[1] marker.map = mapView } } }
هدف-سی
GMSGeocoder *geocoder; - (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture { [mapView clear]; } - (void)mapView:(GMSMapView *)mapView idleAtCameraPosition:(GMSCameraPosition *)cameraPosition { id handler = ^(GMSReverseGeocodeResponse *response, NSError *error) { if (error != nil) { return; } GMSReverseGeocodeResult *result = response.firstResult; GMSMarker *marker = [GMSMarker markerWithPosition:cameraPosition.target]; marker.title = result.lines[0]; marker.snippet = result.lines[1]; marker.map = mapView; }; [geocoder reverseGeocodeCoordinate:cameraPosition.target completionHandler:handler]; }
رویدادهای مربوط به کسب و کارها و سایر نقاط مورد علاقه
به طور پیشفرض، نقاط مورد علاقه (POI) به همراه آیکونهای مربوطهشان روی نقشه پایه ظاهر میشوند. POIها شامل پارکها، مدارس، ساختمانهای دولتی و موارد دیگر و همچنین POIهای تجاری مانند مغازهها، رستورانها و هتلها میشوند.
شما میتوانید به رویدادهای کلیک روی یک POI پاسخ دهید. به راهنمای کسب و کارها و سایر نقاط مورد علاقه مراجعه کنید.
رویدادهای دیگر
 برای آشنایی با فهرست کامل متدهای GMSMapViewDelegate ، به راهنمای مرجع مراجعه کنید.