В первой части вы можете использовать функцию делегата вида карты Google "mapView: didTapAtCoordinate:"
В этом методе делегата вы можете добавить маркер в месте, где вы коснулись.
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20)
marker.title = "your title"
marker.snippet = "your snippet"
marker.map = mapView
В позиции маркера вы можете указать координаты, которые вы получаете в вышеупомянутом методе делегата.
Во второй части вы можете использовать этот фрагмент кода для получения адреса:
вам нужно будет импортировать местоположение ядра:
import CoreLocation
let geocoder = CLGeocoder()
geocoder.reverseGeocodeLocation(currentLocation, completionHandler: {
placemarks, error in
if error == nil && placemarks.count > 0 {
placemarks.last as? CLPlacemark
}
})
currentLocation здесь будут координаты, которые вы получите из метода делегата didTapAtCoordinate.