ilink-world/ios/Pods/GoogleMaps/SwiftExample/GoogleMapsSwiftDemos/Swift/Samples/CameraViewController.swift

60 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 CameraViewController: UIViewController {
private let interval: TimeInterval = 1 / 30
private lazy var mapView: GMSMapView = {
let camera = GMSCameraPosition(target: .victoria, zoom: 20, bearing: 0, viewingAngle: 0)
return GMSMapView(frame: .zero, camera: camera)
}()
private var timer: Timer?
override func loadView() {
mapView.settings.zoomGestures = false
mapView.settings.scrollGestures = false
mapView.settings.rotateGestures = false
mapView.settings.tiltGestures = false
view = mapView
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// Every 0.033 seconds, adjust the position of the camera.
timer = Timer.scheduledTimer(
timeInterval: interval, target: self, selector: #selector(moveCamera), userInfo: nil,
repeats: true)
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
timer?.invalidate()
}
// Updates zoom and viewing angle, the map zoom out and the map appears in perspective, with
// far-away features appearing smaller, and nearby features appearing larger.
@objc func moveCamera() {
let zoom = max(mapView.camera.zoom - 0.1, 17.5)
let newPosition = GMSCameraPosition(
target: mapView.camera.target, zoom: zoom, bearing: mapView.camera.bearing,
viewingAngle: mapView.camera.viewingAngle + 10)
mapView.animate(to: newPosition)
}
}