Новый стиль базовой карты скоро появится на платформе Google Maps. Это обновление стиля карты включает новую цветовую палитру по умолчанию, модернизированные булавки, а также улучшения интерфейса и удобства использования карты. Все стили карт будут автоматически обновлены в марте 2025 г. Дополнительную информацию о доступности и о том, как принять участие раньше, см. в разделе Новый стиль карты для платформы Google Maps .
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Кнопка «Мое местоположение» отображается в правом нижнем углу карты. Когда пользователь нажимает кнопку, карта перемещается к текущему местоположению пользователя.
Начать
Прежде чем вы сможете опробовать пример кода, вам необходимо настроить среду разработки. Дополнительную информацию см. в примерах кода Maps SDK для iOS .
Посмотреть код
Быстрый
importGoogleMapsimportUIKitclassMyLocationViewController:UIViewController{privateletcameraLatitude:CLLocationDegrees=-33.868privateletcameraLongitude:CLLocationDegrees=151.2086privateletcameraZoom:Float=12lazyvarmapView:GMSMapView={letcamera=GMSCameraPosition(latitude:cameraLatitude,longitude:cameraLongitude,zoom:cameraZoom)returnGMSMapView(frame:.zero,camera:camera)}()varobservation:NSKeyValueObservation?varlocation:CLLocation?{didSet{guardoldValue==nil,letfirstLocation=locationelse{return}mapView.camera=GMSCameraPosition(target:firstLocation.coordinate,zoom:14)}}overridefuncviewDidLoad(){super.viewDidLoad()mapView.delegate=selfmapView.settings.compassButton=truemapView.settings.myLocationButton=truemapView.isMyLocationEnabled=trueview=mapView// Listen to the myLocation property of GMSMapView.observation=mapView.observe(\.myLocation,options:[.new]){[weakself]mapView,_inself?.location=mapView.myLocation}}deinit{observation?.invalidate()}}extensionMyLocationViewController:GMSMapViewDelegate{funcmapView(_mapView:GMSMapView,didTapMyLocationlocation:CLLocationCoordinate2D){letalert=UIAlertController(title:"Location Tapped",message:"Current location: <\(location.latitude), \(location.longitude)>",preferredStyle:.alert)alert.addAction(UIAlertAction(title:"OK",style:.default))present(alert,animated:true)}}
#import "GoogleMapsDemos/Samples/MyLocationViewController.h"#import <GoogleMaps/GoogleMaps.h>@implementationMyLocationViewController{GMSMapView*_mapView;BOOL_firstLocationUpdate;}-(void)viewDidLoad{[superviewDidLoad];GMSCameraPosition*camera=[GMSCameraPositioncameraWithLatitude:-33.868longitude:151.2086zoom:12];_mapView=[GMSMapViewmapWithFrame:CGRectZerocamera:camera];_mapView.delegate=self;_mapView.settings.compassButton=YES;_mapView.settings.myLocationButton=YES;// Listen to the myLocation property of GMSMapView.[_mapViewaddObserver:selfforKeyPath:@"myLocation"options:NSKeyValueObservingOptionNewcontext: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*)mapViewdidTapMyLocation:(CLLocationCoordinate2D)location{NSString*message=[NSStringstringWithFormat:@"My Location Dot Tapped at: [lat: %f, lng: %f]",location.latitude,location.longitude];UIAlertController*alertController=[UIAlertControlleralertControllerWithTitle:@"Location Tapped"message:messagepreferredStyle:UIAlertControllerStyleAlert];UIAlertAction*okAction=[UIAlertActionactionWithTitle:@"OK"style:UIAlertActionStyleDefaulthandler:^(UIAlertAction*action){}];[alertControlleraddAction:okAction];[selfpresentViewController:alertControlleranimated:YEScompletion:nil];}-(void)dealloc{[_mapViewremoveObserver:selfforKeyPath:@"myLocation"context:NULL];}#pragma mark - KVO updates-(void)observeValueForKeyPath:(NSString*)keyPathofObject:(id)objectchange:(NSDictionary*)changecontext:(void*)context{if(!_firstLocationUpdate){// If the first location update has not yet been received, then jump to that location._firstLocationUpdate=YES;CLLocation*location=[changeobjectForKey:NSKeyValueChangeNewKey];_mapView.camera=[GMSCameraPositioncameraWithTarget:location.coordinatezoom:14];}}@end
Пример приложения Maps SDK для iOS доступен в виде архива для загрузки на GitHub . Выполните следующие действия, чтобы установить и опробовать пример приложения Maps SDK для iOS.
Запустите git clone https://github.com/googlemaps-samples/maps-sdk-for-ios-samples.git , чтобы клонировать репозиторий образцов в локальный каталог.
Откройте окно терминала, перейдите в каталог, в который вы клонировали файлы примеров, и перейдите к каталогу GoogleMaps:
Быстрый
cd maps-sdk-for-ios-samples-main/GoogleMaps-Swift
pod installopen GoogleMapsSwiftDemos.xcworkspace
Цель-C
cd maps-sdk-for-ios-samples-main/GoogleMaps
pod installopen GoogleMapsDemos.xcworkspace
В Xcode нажмите кнопку компиляции, чтобы создать приложение с текущей схемой. При сборке возникает ошибка, предлагающая ввести ключ API в файл SDKConstants.swift для Swift или файл SDKDemoAPIKey.h для Objective-C.
Если у вас еще нет ключа API, следуйте инструкциям , чтобы настроить проект в консоли Google Cloud и получить ключ API. При настройке ключа в облачной консоли вы можете ограничить ключ идентификатором пакета примера приложения, чтобы гарантировать, что только ваше приложение может использовать ключ. Идентификатор пакета по умолчанию для примера приложения SDK — com.example.GoogleMapsDemos .
Отредактируйте файл SDKConstants.swift для Swift или файл SDKDemoAPIKey.h для Objective-C и вставьте свой ключ API в определение константы apiKey или kAPIKey . Например:
Быстрый
static let apiKey = "YOUR_API_KEY"
Цель-C
staticNSString*constkAPIKey=@"YOUR_API_KEY";
В файле SDKConstants.swift (Swift) или файле SDKDemoAPIKey.h (Objective-C) удалите следующую строку, поскольку она используется для регистрации определяемой пользователем проблемы:
Быстрый
#error (Register for API Key and insert here. Then delete this line.)
Цель-C
#error Register for API Key and insert here.
Создайте и запустите проект. Появится окно симулятора iOS со списком демонстрационных версий Maps SDK .
Выберите один из отображаемых вариантов, чтобы поэкспериментировать с функцией Maps SDK для iOS.
Если будет предложено разрешить GoogleMapsDemos доступ к вашему местоположению, выберите «Разрешить» .
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-03-09 UTC."],[[["The \"My Location\" button, located in the bottom right corner of the map, centers the map on the user's current location when tapped."],["The provided code samples (Swift and Objective-C) demonstrate how to implement the \"My Location\" functionality within a map view."],["To run the sample code, you'll need to configure your development environment, including obtaining and integrating a Google Maps API key."],["The full sample app can be downloaded and explored to experiment with various features of the Maps SDK for iOS."]]],["The content describes implementing a \"My Location\" feature in a map view using the Google Maps SDK for iOS. When enabled, a button appears, allowing the user to center the map on their current location upon tapping. The code examples show how to set up the map, enable the \"My Location\" button and feature, and observe changes to the user's location. Additionally, it details setting up a project and API key. It also describes setting up a tap handler on the current user's location in the map.\n"]]