71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
		
		
			
		
	
	
			71 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Swift
		
	
	
	
|  | // 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 StructuredGeocoderViewController: 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 StructuredGeocoderViewController: 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 | ||
|  |       marker.title = address.thoroughfare | ||
|  | 
 | ||
|  |       var snippet = "" | ||
|  |       if let subLocality = address.subLocality { | ||
|  |         snippet.append("subLocality: \(subLocality)\n") | ||
|  |       } | ||
|  |       if let locality = address.locality { | ||
|  |         snippet.append("subLocality: \(locality)\n") | ||
|  |       } | ||
|  |       if let administrativeArea = address.administrativeArea { | ||
|  |         snippet.append("administrativeArea: \(administrativeArea)\n") | ||
|  |       } | ||
|  |       if let country = address.country { | ||
|  |         snippet.append("country: \(country)\n") | ||
|  |       } | ||
|  |       marker.snippet = snippet | ||
|  |     } | ||
|  |   } | ||
|  | } |