Google Maps SDK for iOS에서 현재 위치 보기

8453 단어 iOSSwiftGoogleMapsAPI

소개



Google Maps SDK for iOS를 사용할 기회가 많기 때문에,
비망록으로서 Google Map을 앱상에 표시→현재 위치를 표시하는 곳까지를 정리해 두고 싶습니다.

개발 환경


  • Xcode:11.1(11A1027)
  • Swift 5
  • iOS: 13.1

  • 구현



    다음과 같은 Step으로 나누어 구현합니다.
  • Google Maps SDK for iOS의 키 가져 오기
  • Google Map을 앱에 표시
  • 현재 위치를지도에 표시

  • 1. Google Maps SDK for iOS Key 얻기



    여기의 단계에 따라 API Key 가져 오기

    2. Google Map을 앱에 표시



    여기 을 따라 앱에 표시

    Cocoapods 설치



    여기 를 참고로 Cocoapods 를 인스톨 해

    Podfile 편집



    Podfile
    source 'https://github.com/CocoaPods/Specs.git'
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GoogleMaps'
    end
    

    pod install 실행


    $ pod install
    

    AppDelegate.swift로 키 등록



    AppDelegate.swift
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        GMSServices.provideAPIKey({input your API key})
        return true
    }
    

    지도를 앱에 표시



    ViewController.swift
    import UIKit
    import GoogleMaps
    
    class ViewController: UIViewController {
    
        var mapView = GMSMapView()
    
        override func viewDidLoad() {
            super.viewDidLoad()
            setupMap()
        }
    
        private func setupMap() {
            // GoogleMapの初期位置(仮で東京駅付近に設定)
            let camera = GMSCameraPosition.camera(withLatitude: 35.6812226, longitude: 139.7670594, zoom: 12.0)
            mapView = GMSMapView.map(withFrame: CGRect.zero, camera: camera)
            view = mapView
        }
    

    현재 위치를 지도에 표시



    현재 위치를 얻으려면 사용자에게 현재 위치 취득 권한을 요청해야합니다.

    이 부분도 Google Maps SDK 문서 에 기재되어 있으므로, 이쪽을 따라 진행해 갑니다

    1. 위치 정보를 얻기 위해 Info.plist 편집



    Info.plist
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>現在地を表示するために使用します.</string>
    

    이번에는 앱 사용 중에만 위치 정보를 얻기 위해 Privacy - Location When In Use Usage Description를 작성했습니다.

    항상 위치 정보를 얻으려면 Privacy - Location Always and When In Use Usage Description

    2. 위치 정보 취득의 다이얼로그를 표시한다



    ViewController.swift
    
        var locationManager = CLLocationManager() // 追記
    
        override func viewDidLoad() {
            requestLoacion() // 追記
        }
    
        private func setupMap() {
            ...
            mapView.isMyLocationEnabled = true // 追記
            view = mapView
        }
    
        // 以下、追記
        private func requestLoacion() {
            // ユーザにアプリ使用中のみ位置情報取得の許可を求めるダイアログを表示
            locationManager.requestWhenInUseAuthorization()
            // 常に取得したい場合はこちら↓
            // locationManager.requestAlwaysAuthorization()
        }
    

    이상을 추가하고 다시 빌드를 실행해 보면 다음과 같은 대화 상자가 표시됩니다



    위의 대화 상자에서 Allow While Using App 또는 Allow Once를 선택하면지도에 파란색 마커가 표시되는지 궁금합니다.

    Simulator에서 현재 위치 보기



    Simulator에서 동작을 확인한 경우 위의 흐름에서 현재 위치를 볼 수 없을 수 있습니다.
    이 경우 Simulator의 GPS 설정을 변경해야합니다.

    Simulator를 선택한 상태에서,Debug -> Location -> Custom Location를 선택합니다.


    표시되는 View 에 임의의 좌표를 넣어 주면 그 위치가 현재 위치로서 표시되게 됩니다
    ex)東京駅付近
    Latitude: 35.681223
    Longitude: 139.767059
    





    끝에



    이제 Google Map에서 현재 위치를 볼 수 있습니다.

    좋은 웹페이지 즐겨찾기