Текущее местоположение с помощью Google Maps и Swift - PullRequest
0 голосов
/ 19 сентября 2019

Мне нужно показать мое реальное текущее местоположение.Я использовал эти два руководства в качестве ссылок: Google Maps SDK iOS и Рэй Вендерлих .

Ни то, ни другое не помогло показать мне мое реальное текущее местоположение, оно показывает местоположение Apple.

Я добавил Privacy - Location When In Use Usage Description и LSApplicationQueriesSchemes в свой файл info.plist.

Что не так с моим кодом?

Как я могу добавить маркер с моим текущим местоположением?

Мой код:

AppDelegate.swift

import GoogleMaps
import GooglePlaces
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    GMSServices.provideAPIKey("AIzaSyCNcYUEURD7DSk6qksdKyp63w-ZetdWQZc")
    GMSPlacesClient.provideAPIKey("AIzaSyCNcYUEURD7DSk6qksdKyp63w-ZetdWQZc")
    return true
}

ViewController.swift

import UIKit
import GoogleMaps
import GooglePlaces

class ViewController: UIViewController {

    @IBOutlet weak var mapView: GMSMapView!
    private var locationManager = CLLocationManager()


    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        locationManager.delegate = self
        locationManager.requestWhenInUseAuthorization()
    }
 }

 extension ViewController: CLLocationManagerDelegate {
// 2
func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
    // 3
    guard status == .authorizedWhenInUse else {
        return
    }
    // 4
    locationManager.startUpdatingLocation()

    //5
    mapView.isMyLocationEnabled = true
    mapView.settings.myLocationButton = true
}

// 6
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
    guard let location = locations.first else {
        return
    }

    // 7
    mapView.camera = GMSCameraPosition(target: location.coordinate, zoom: 15, bearing: 0, viewingAngle: 0)

    // 8
    locationManager.stopUpdatingLocation()
  }
}

1 Ответ

2 голосов
/ 19 сентября 2019

Если вы запустите это в симуляторе, вы получите одно из предустановленных местоположений.Вы можете изменить местоположение симулятора, зайдя в DEBUG> Location> select preset или custom.Если вы хотите установить местоположение симулятора на свое текущее местоположение, перейдите на maps.google.com, щелкните правой кнопкой мыши на карте и выберите «Что здесь?»и это даст вам широту / долготу.Скопируйте и вставьте их в «настраиваемое местоположение» из вышеуказанных настроек.

Если вы работаете на реальном устройстве, вы получите местоположение устройства, при условии, что вы запросили все правильные разрешения и настроили info.plistзаписей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...