Con el SDK de Maps para iOS, puedes personalizar la manera en que los usuarios interactúan con tu mapa, ya que te ofrece la posibilidad de determinar qué componentes integrados en la IU aparecerán en el mapa y qué gestos estarán permitidos.
Controles del mapa
El SDK de Maps para iOS proporciona algunos controles de la IU integrados que son similares a los que se encuentran en la aplicación de Google Maps para iOS. Puedes activar o desactivar la visibilidad de estos controles con la clase GMSUISettings.
Los cambios realizados en esta clase se reflejan de inmediato en el mapa.
Brújula
El SDK de Maps para iOS proporciona un gráfico de brújula que, en ciertas circunstancias, aparece en la esquina superior derecha del mapa. La brújula solo se mostrará cuando la cámara esté orientada de modo que tenga un rumbo distinto de cero. Cuando el usuario hace clic en la brújula, la cámara adopta una posición en la que el rumbo equivale a cero (es decir, la orientación predeterminada), y la brújula se atenúa poco después.
La brújula viene desactivada de manera predeterminada. Puedes habilitar la brújula configurando la propiedad compassButton de GMSUISettings como YES. Sin embargo, no puedes forzar su aparición en todo momento.
El botón Mi ubicación aparece en la esquina inferior derecha de la pantalla solo cuando está habilitado. Cuando un usuario hace clic en el botón, la cámara se anima para enfocarse en la ubicación actual del usuario si se conoce. Puedes habilitar el botón configurando la propiedad myLocationButton de GMSUISettings como YES.
Swift
mapView.settings.myLocationButton=true
Objective-C
mapView.settings.myLocationButton=YES;
Selector de piso
El control del selector de piso aparece cerca de la esquina inferior derecha de la pantalla cuando se destaca un mapa de interiores. Cuando hay dos o más mapas de interiores visibles, el selector de piso se relaciona con el edificio más cercano al centro de la pantalla. Cada edificio tiene un piso predeterminado, que se selecciona cuando aparece por primera vez el selector. Puedes seleccionar un piso diferente eligiéndolo en el seleccionador.
Para inhabilitar el control del selector de piso, configura la propiedad indoorPicker de GMSUISettings como NO.
Swift
mapView.settings.indoorPicker=false
Objective-C
mapView.settings.indoorPicker=NO;
Gestos del mapa
Puedes inhabilitar los gestos predeterminados en el mapa configurando las propiedades de la clase GMSUISettings, que está disponible como propiedad de GMSMapView.
Los siguientes gestos pueden habilitarse y deshabilitarse de manera programática. Ten en cuenta que inhabilitar el gesto no limitará el acceso programático a la configuración de la cámara.
scrollGestures: Controla si los gestos de desplazamiento están habilitados o inhabilitados. Si se habilitan, los usuarios pueden deslizar el dedo para desplazar la cámara.
zoomGestures: Controla si los gestos de zoom están habilitados o inhabilitados. Si se habilita esta opción, los usuarios pueden presionar dos veces, presionar con dos dedos o pellizcar para acercar la cámara. Ten en cuenta que, si presionas dos veces o pellizcas la pantalla cuando scrollGestures está habilitado, es posible que la cámara se desplace horizontalmente hasta el punto especificado.
tiltGestures: Controla si los gestos de inclinación están habilitados o inhabilitados. Si se habilita esta opción, los usuarios pueden deslizar dos dedos hacia arriba o hacia abajo para inclinar la cámara.
rotateGestures: Controla si los gestos de rotación están habilitados o inhabilitados. Si se habilita esta opción, los usuarios podrán usar un gesto de rotación con dos dedos para rotar la cámara.
En el ejemplo siguiente, se desactivan los gestos de desplazamiento y zoom.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-03 (UTC)"],[[["\u003cp\u003eThis documentation outlines how to customize user interaction with the Google Maps SDK for iOS, focusing on controlling built-in UI components and map gestures.\u003c/p\u003e\n"],["\u003cp\u003eDevelopers can enable or disable UI controls like the compass, My Location button, and floor picker using the \u003ccode\u003eGMSUISettings\u003c/code\u003e class.\u003c/p\u003e\n"],["\u003cp\u003eMap gestures such as scrolling, zooming, tilting, and rotating can be individually enabled or disabled through properties of the \u003ccode\u003eGMSUISettings\u003c/code\u003e class.\u003c/p\u003e\n"],["\u003cp\u003eDisabling a gesture does not restrict programmatic access to camera settings, only user interaction.\u003c/p\u003e\n"],["\u003cp\u003eThese customizations provide developers with flexibility to tailor the map experience within their iOS applications.\u003c/p\u003e\n"]]],["The Maps SDK for iOS allows customization of user interaction with the map via the `GMSUISettings` class. Built-in UI controls, like the compass, My Location button, and floor picker, can be toggled on or off. The compass is enabled by setting `compassButton` to `YES`, the My Location button with `myLocationButton = YES`, and the floor picker is disabled by `indoorPicker = NO`. Map gestures (scroll, zoom, tilt, rotate) can be enabled or disabled by setting the properties of the same name to `YES` or `NO` respectively.\n"],null,["\u003cbr /\u003e\n\nSelect platform: [Android](/maps/documentation/android-sdk/controls \"View this page for the Android platform docs.\") [iOS](/maps/documentation/ios-sdk/controls \"View this page for the iOS platform docs.\") [JavaScript](/maps/documentation/javascript/controls \"View this page for the JavaScript platform docs.\")\n\n\u003cbr /\u003e\n\nUsing the Maps SDK for iOS, you can customize the way in which users\ninteract with your map, by determining which of the built in UI components\nappear on the map and which gestures are allowed.\n\nMap controls\n\nThe Maps SDK for iOS provides some built-in UI controls that are\nsimilar to those found in the Google Maps for iOS application. You can\ntoggle the visibility of these controls using the `GMSUISettings` class.\nChanges made on this class are immediately reflected on the map.\n| **Note:** Each control has a predetermined position relative to the edge of the map. You can move the controls away from the edges by [padding](/maps/documentation/ios-sdk/map#map_padding) the map.\n\nCompass \n\nThe Maps SDK for iOS provides a compass graphic which appears in the\ntop right corner of the map under certain circumstances. The compass will only\nappear when the camera is oriented such that it has a non-zero bearing. When the\nuser clicks on the compass, the camera animates back to a position with bearing\nof zero (the default orientation) and the compass fades away shortly afterwards.\n\nThe compass is disabled by default. You can enable the compass by setting the\n`compassButton` property of `GMSUISettings` to `YES`. However, you cannot\nforce the compass to always be shown.\n\n\nSwift \n\n```swift\nlet camera = GMSCameraPosition(latitude: 37.757815, longitude: -122.50764, zoom: 12)\nlet mapView = GMSMapView(frame: .zero, camera: camera)\nmapView.settings.compassButton = true\n \n```\n\nObjective-C \n\n```objective-c\nGMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:37.757815\n longitude:-122.50764\n zoom:12];\nGMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];\nmapView.settings.compassButton = YES;\n \n```\n\n\u003cbr /\u003e\n\nMy Location button \n\nThe My Location button appears in the bottom right corner of the screen *only*\nwhen the My Location button is enabled. When a user clicks the button, the\ncamera animates to focus on the user's current location if the user's location\nis known. You can enable the button by setting the\n`myLocationButton` property of `GMSUISettings` to `YES`.\n\n\nSwift \n\n```swift\nmapView.settings.myLocationButton = true\n \n```\n\nObjective-C \n\n```objective-c\nmapView.settings.myLocationButton = YES;\n \n```\n\n\u003cbr /\u003e\n\nFloor picker \n\nThe floor picker control appears near the bottom right of the screen whenever an\nindoor map is featured prominently. When two or more indoor maps are visible the\nfloor picker relates to the building nearest to the center of the screen. Each\nbuilding has a default floor which is selected when the picker is first\ndisplayed. You can choose a different floor by selecting it from the picker.\n\nYou can disable the floor picker control by setting the `indoorPicker` property\nof `GMSUISettings` to `NO`.\n\n\nSwift \n\n```swift\nmapView.settings.indoorPicker = false\n \n```\n\nObjective-C \n\n```objective-c\nmapView.settings.indoorPicker = NO;\n \n```\n\n\u003cbr /\u003e\n\nMap gestures\n\nYou can disable the default gestures on the map by setting properties of the\n`GMSUISettings` class, which is available as a property of the `GMSMapView`.\nThe following gestures can be enabled and disabled programmatically. Note that\ndisabling the gesture won't limit programmatic access to the camera\nsettings.\n\n- `scrollGestures` --- controls whether scroll gestures are enabled or disabled. If enabled, users may swipe to pan the camera.\n- `zoomGestures` --- controls whether zoom gestures are enabled or disabled. If enabled, users may double tap, two-finger tap, or pinch to zoom the camera. Note that double tapping or pinching when `scrollGestures` are enabled may pan the camera to the specified point.\n- `tiltGestures` --- controls whether tilt gestures are enabled or disabled. If enabled, users may use a two-finger vertical down or up swipe to tilt the camera.\n- `rotateGestures` --- controls whether rotate gestures are enabled or disabled. If enabled, users may use a two-finger rotate gesture to rotate the camera.\n\nIn the example below, both pan and zoom gestures have been disabled.\n\n\nSwift \n\n```swift\noverride func loadView() {\n let camera = GMSCameraPosition.camera(\n withLatitude: 1.285,\n longitude: 103.848,\n zoom: 12\n )\n\n let mapView = GMSMapView.map(withFrame: .zero, camera: camera)\n mapView.settings.scrollGestures = false\n mapView.settings.zoomGestures = false\n self.view = mapView\n}\n \n```\n\nObjective-C \n\n```objective-c\n- (void)loadView {\n GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285\n longitude:103.848\n zoom:12];\n GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];\n mapView.settings.scrollGestures = NO;\n mapView.settings.zoomGestures = NO;\n self.view = mapView;\n}\n \n```\n\n\u003cbr /\u003e"]]