62 lines
2.0 KiB
Swift
Executable File
62 lines
2.0 KiB
Swift
Executable File
// Copyright 2020 Google LLC. All rights reserved.
|
|
//
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
|
|
// file except in compliance with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software distributed under
|
|
// the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
// ANY KIND, either express or implied. See the License for the specific language governing
|
|
// permissions and limitations under the License.
|
|
|
|
import GoogleMaps
|
|
import UIKit
|
|
|
|
class MyLocationViewController: UIViewController {
|
|
lazy var mapView: GMSMapView = {
|
|
let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 1)
|
|
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)
|
|
}
|
|
}
|