Habilita el botón Mi ubicación

Imagen del botón para habilitar Mi ubicación.

El botón Mi ubicación se muestra en la esquina inferior derecha de la vista del mapa. Cuando el usuario presiona el botón, el mapa se desplaza hasta su ubicación actual.

Comenzar

Antes de probar el código de muestra, debes configurar tu entorno de desarrollo. Para obtener más información, consulta Muestras de código del SDK de Maps para iOS.

Consulta el código

Swift

import GoogleMaps import UIKit  class MyLocationViewController: UIViewController {    private let cameraLatitude: CLLocationDegrees = -33.868    private let cameraLongitude: CLLocationDegrees = 151.2086    private let cameraZoom: Float = 12    lazy var mapView: GMSMapView = {     let camera = GMSCameraPosition(       latitude: cameraLatitude, longitude: cameraLongitude, zoom: cameraZoom)     return GMSMapView(frame: .zero, camera: camera)   }()    var observation: NSKeyValueObservation?   var location: CLLocation? {     didSet {       guard oldValue == nil, let firstLocation = location else { return }       mapView.camera = GMSCameraPosition(target: firstLocation.coordinate, zoom: 14)     }   }    override func viewDidLoad() {     super.viewDidLoad()      mapView.delegate = self     mapView.settings.compassButton = true     mapView.settings.myLocationButton = true     mapView.isMyLocationEnabled = true     view = mapView      // Listen to the myLocation property of GMSMapView.     observation = mapView.observe(\.myLocation, options: [.new]) {       [weak self] mapView, _ in       self?.location = mapView.myLocation     }   }    deinit {     observation?.invalidate()   } }  extension MyLocationViewController: GMSMapViewDelegate {   func mapView(_ mapView: GMSMapView, didTapMyLocation location: CLLocationCoordinate2D) {     let alert = UIAlertController(       title: "Location Tapped",       message: "Current location: <\(location.latitude), \(location.longitude)>",       preferredStyle: .alert)     alert.addAction(UIAlertAction(title: "OK", style: .default))     present(alert, animated: true)   } }       

Objective-C

#import "GoogleMapsDemos/Samples/MyLocationViewController.h"  #import <GoogleMaps/GoogleMaps.h>  @implementation MyLocationViewController {   GMSMapView *_mapView;   BOOL _firstLocationUpdate; }  - (void)viewDidLoad {   [super viewDidLoad];   GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.868                                                           longitude:151.2086                                                                zoom:12];    _mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];   _mapView.delegate = self;   _mapView.settings.compassButton = YES;   _mapView.settings.myLocationButton = YES;    // Listen to the myLocation property of GMSMapView.   [_mapView addObserver:self              forKeyPath:@"myLocation"                 options:NSKeyValueObservingOptionNew                 context:NULL];    self.view = _mapView;    // Ask for My Location data after the map has already been added to the UI.   GMSMapView *mapView = _mapView;   dispatch_async(dispatch_get_main_queue(), ^{     mapView.myLocationEnabled = YES;   }); }  - (void)mapView:(GMSMapView *)mapView didTapMyLocation:(CLLocationCoordinate2D)location {   NSString *message = [NSString stringWithFormat:@"My Location Dot Tapped at: [lat: %f, lng: %f]",                                                  location.latitude, location.longitude];   UIAlertController *alertController =       [UIAlertController alertControllerWithTitle:@"Location Tapped"                                           message:message                                    preferredStyle:UIAlertControllerStyleAlert];   UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK"                                                      style:UIAlertActionStyleDefault                                                    handler:^(UIAlertAction *action){                                                    }];   [alertController addAction:okAction];   [self presentViewController:alertController animated:YES completion:nil]; }  - (void)dealloc {   [_mapView removeObserver:self forKeyPath:@"myLocation" context:NULL]; }  #pragma mark - KVO updates  - (void)observeValueForKeyPath:(NSString *)keyPath                       ofObject:(id)object                         change:(NSDictionary *)change                        context:(void *)context {   if (!_firstLocationUpdate) {     // If the first location update has not yet been received, then jump to that location.     _firstLocationUpdate = YES;     CLLocation *location = [change objectForKey:NSKeyValueChangeNewKey];     _mapView.camera = [GMSCameraPosition cameraWithTarget:location.coordinate zoom:14];   } }  @end       

Ejecuta la app de ejemplo completa de forma local

La app de ejemplo del SDK de Maps para iOS está disponible como archivo de descarga en GitHub. Sigue estos pasos para instalar y probar la app de ejemplo del SDK de Maps para iOS.

  1. Ejecuta git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git para clonar el repositorio de muestras en un directorio local.
  2. Abre una ventana de terminal, navega al directorio en el que clonaste los archivos de muestra y desplázate hacia abajo hasta el directorio GoogleMaps:

    Swift

    cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift pod install open GoogleMapsSwiftDemos.xcworkspace

    Objective-C

    cd maps-sdk-for-ios-samples-main/GoogleMaps pod install open GoogleMapsDemos.xcworkspace
  3. En Xcode, presiona el botón de compilación para compilar la app con el esquema actual. La compilación genera un error que te solicita que ingreses tu clave de API en el archivo SDKConstants.swift para Swift o en el archivoSDKDemoAPIKey.h para Objective-C.
  4. Obtén una clave de API de tu proyecto con el SDK de Maps para iOS habilitado.
  5. Edita el archivo SDKConstants.swift para Swift o el archivo SDKDemoAPIKey.h para Objective-C y pega tu clave de API en la definición de la constante apiKey o kAPIKey. Por ejemplo:

    Swift

    static let apiKey = "YOUR_API_KEY"

    Objective-C

    static NSString *const kAPIKey = @"YOUR_API_KEY";
  6. En el archivo SDKConstants.swift (Swift) o en el archivo SDKDemoAPIKey.h (Objective-C), quita la siguiente línea, ya que se usa para registrar el problema definido por el usuario:

    Swift

    #error (Register for API Key and insert here. Then delete this line.)

    Objective-C

    #error Register for API Key and insert here.
  7. Compila y ejecuta el proyecto. Aparecerá la ventana del simulador de iOS, que mostrará una lista de demostraciones del SDK de Maps.
  8. Elige una de las opciones que se muestran para experimentar con una función del SDK de Maps para iOS.
  9. Si se te solicita que permitas que GoogleMapsDemos acceda a tu ubicación, elige Permitir.