Swift 5:如何在tap/touch上的GoogleMap上添加带坐标的Marker?
Swift 5: How to add Marker on GoogleMap on tap/touch with coordinates?
我正在为 iOS 学习 GoogleMap-SDK,在此过程中我确实搜索了上述问题并找到了令人满意的答案,但没有找到实际有用的答案。
: Swift 3 google map add markers on touch
它添加了标记但没有地名或地点详细信息,没有该标记就没有那么有用,为此我必须搜索其他答案以从坐标中获取地址。
所以,我在这里合并了两个答案,以节省开发人员的时间并使其标记更实用。
为Swift5.0+
First, make sure you have added GMSMapViewDelegate
delegate to your ViewController Class
我们不需要 UILongPressGestureRecognizer
或 UITapGestureRecognizer
,GMSMapViewDelegate
为此提供了方便的默认方法。
///This default function fetches the coordinates on long-press on `GoogleMapView`
func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) {
//Creating Marker
let marker = GMSMarker(position: coordinate)
let decoder = CLGeocoder()
//This method is used to get location details from coordinates
decoder.reverseGeocodeLocation(CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude)) { placemarks, err in
if let placeMark = placemarks?.first {
let placeName = placeMark.name ?? placeMark.subThoroughfare ?? placeMark.thoroughfare! ///Title of Marker
//Formatting for Marker Snippet/Subtitle
var address : String! = ""
if let subLocality = placeMark.subLocality ?? placeMark.name {
address.append(subLocality)
address.append(", ")
}
if let city = placeMark.locality ?? placeMark.subAdministrativeArea {
address.append(city)
address.append(", ")
}
if let state = placeMark.administrativeArea, let country = placeMark.country {
address.append(state)
address.append(", ")
address.append(country)
}
// Adding Marker Details
marker.title = placeName
marker.snippet = address
marker.appearAnimation = .pop
marker.map = mapView
}
}
}
希望对您有所帮助!!!
我正在为 iOS 学习 GoogleMap-SDK,在此过程中我确实搜索了上述问题并找到了令人满意的答案,但没有找到实际有用的答案。
: Swift 3 google map add markers on touch
它添加了标记但没有地名或地点详细信息,没有该标记就没有那么有用,为此我必须搜索其他答案以从坐标中获取地址。
所以,我在这里合并了两个答案,以节省开发人员的时间并使其标记更实用。
为Swift5.0+
First, make sure you have added
GMSMapViewDelegate
delegate to your ViewController Class
我们不需要 UILongPressGestureRecognizer
或 UITapGestureRecognizer
,GMSMapViewDelegate
为此提供了方便的默认方法。
///This default function fetches the coordinates on long-press on `GoogleMapView`
func mapView(_ mapView: GMSMapView, didLongPressAt coordinate: CLLocationCoordinate2D) {
//Creating Marker
let marker = GMSMarker(position: coordinate)
let decoder = CLGeocoder()
//This method is used to get location details from coordinates
decoder.reverseGeocodeLocation(CLLocation(latitude: coordinate.latitude, longitude: coordinate.longitude)) { placemarks, err in
if let placeMark = placemarks?.first {
let placeName = placeMark.name ?? placeMark.subThoroughfare ?? placeMark.thoroughfare! ///Title of Marker
//Formatting for Marker Snippet/Subtitle
var address : String! = ""
if let subLocality = placeMark.subLocality ?? placeMark.name {
address.append(subLocality)
address.append(", ")
}
if let city = placeMark.locality ?? placeMark.subAdministrativeArea {
address.append(city)
address.append(", ")
}
if let state = placeMark.administrativeArea, let country = placeMark.country {
address.append(state)
address.append(", ")
address.append(country)
}
// Adding Marker Details
marker.title = placeName
marker.snippet = address
marker.appearAnimation = .pop
marker.map = mapView
}
}
}
希望对您有所帮助!!!