57 lines
1.9 KiB
Swift
Executable File
57 lines
1.9 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
|
|
|
|
// Sample code for GeoCoder service.
|
|
class GeocoderViewController: UIViewController {
|
|
|
|
private lazy var mapView: GMSMapView = {
|
|
let camera = GMSCameraPosition(latitude: -33.868, longitude: 151.2086, zoom: 12)
|
|
return GMSMapView(frame: .zero, camera: camera)
|
|
}()
|
|
|
|
private lazy var geocoder = GMSGeocoder()
|
|
|
|
override func loadView() {
|
|
view = mapView
|
|
mapView.delegate = self
|
|
}
|
|
}
|
|
|
|
extension GeocoderViewController: GMSMapViewDelegate {
|
|
func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) {
|
|
// On a long press, reverse geocode this location.
|
|
geocoder.reverseGeocodeCoordinate(coordinate) { response, error in
|
|
guard let address = response?.firstResult() else {
|
|
let errorMessage = error.map { String(describing: $0) } ?? "<no error>"
|
|
print(
|
|
"Could not reverse geocode point (\(coordinate.latitude), \(coordinate.longitude)): \(errorMessage)"
|
|
)
|
|
return
|
|
}
|
|
print("Geocoder result: \(address)")
|
|
let marker = GMSMarker(position: address.coordinate)
|
|
marker.appearAnimation = .pop
|
|
marker.map = mapView
|
|
|
|
guard let lines = address.lines, let title = lines.first else { return }
|
|
marker.title = title
|
|
if lines.count > 1 {
|
|
marker.snippet = lines[1]
|
|
}
|
|
}
|
|
}
|
|
}
|