如何为 google 中的地图视图添加标记 maps sdk for ios in swift
How to add marker for a map view in google maps sdk for ios in swift
尝试向Google地图添加标记,但应用程序在addMarker()
函数调用时崩溃,异常详情如下,
由于未捕获的异常“GMSThreadException”而终止应用程序,原因:'All calls to the Google Maps SDK for iOS must be made from the UI thread'
仅供参考 vwGogleMap 是全局的,在我试图绘制标记的函数中。
func addMarker() -> Void
{
var vwGogleMap : GMSMapView?
var position = CLLocationCoordinate2DMake(17.411647,78.435637)
var marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = vwGogleMap
}
如有任何帮助,我们将不胜感激,
TIA。
var marker = GMSMarker()
marker.location = location
marker.title = location.name
marker.snippet = "Info window text"
marker.map = mapView
location
属性 必须设置 CLLocationCoordinate2D
要创建新的位置坐标,请使用:
CLLocationCoordinate2D(latitude: CLLocationDegrees(<latitude>), longitude: CLLocationDegrees(<longitude>))
真的很简单..
通过这样做确保您的地图已初始化
在闭包中执行UI更新时(在我的例子中-绘制标记),请记住获取主线程并执行UI 仅在主线程上运行。
我的错误是,我试图在 Web 服务完成块中绘制标记。
dispatch_async(dispatch_get_main_queue(),
{
var position = CLLocationCoordinate2DMake(17.411647,78.435637)
var marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = vwGogleMap
})
// For swift 3.0 support.
// 1. Get Main thread
DispatchQueue.main.async
{
// 2. Perform UI Operations.
var position = CLLocationCoordinate2DMake(17.411647,78.435637)
var marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = vwGoogleMap
}
希望这对某人有所帮助!
@IBOutlet weak var mapView: GMSMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.camera = GMSCameraPosition.camera(withLatitude: 18.514043, longitude: 57.377796, zoom: 6.0)
let marker = GMSMarker(position: CLLocationCoordinate2D(latitude: 18.514043, longitude: 57.377796))
marker.title = "Lokaci Pvt. Ltd."
marker.snippet = "Sec 132 Noida India"
marker.map = mapView
}
/// Marker - Google Place marker
let marker: GMSMarker = GMSMarker() // Allocating Marker
marker.title = "Title" // Setting title
marker.snippet = "Sub title" // Setting sub title
marker.icon = UIImage(named: "") // Marker icon
marker.appearAnimation = .pop // Appearing animation. default
marker.position = location.coordinate // CLLocationCoordinate2D
DispatchQueue.main.async { // Setting marker on mapview in main thread.
marker.map = mapView // Setting marker on Mapview
}
尝试向Google地图添加标记,但应用程序在addMarker()
函数调用时崩溃,异常详情如下,
由于未捕获的异常“GMSThreadException”而终止应用程序,原因:'All calls to the Google Maps SDK for iOS must be made from the UI thread'
仅供参考 vwGogleMap 是全局的,在我试图绘制标记的函数中。
func addMarker() -> Void
{
var vwGogleMap : GMSMapView?
var position = CLLocationCoordinate2DMake(17.411647,78.435637)
var marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = vwGogleMap
}
如有任何帮助,我们将不胜感激,
TIA。
var marker = GMSMarker()
marker.location = location
marker.title = location.name
marker.snippet = "Info window text"
marker.map = mapView
location
属性 必须设置 CLLocationCoordinate2D
要创建新的位置坐标,请使用:
CLLocationCoordinate2D(latitude: CLLocationDegrees(<latitude>), longitude: CLLocationDegrees(<longitude>))
真的很简单.. 通过这样做确保您的地图已初始化
在闭包中执行UI更新时(在我的例子中-绘制标记),请记住获取主线程并执行UI 仅在主线程上运行。
我的错误是,我试图在 Web 服务完成块中绘制标记。
dispatch_async(dispatch_get_main_queue(),
{
var position = CLLocationCoordinate2DMake(17.411647,78.435637)
var marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = vwGogleMap
})
// For swift 3.0 support.
// 1. Get Main thread
DispatchQueue.main.async
{
// 2. Perform UI Operations.
var position = CLLocationCoordinate2DMake(17.411647,78.435637)
var marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = vwGoogleMap
}
希望这对某人有所帮助!
@IBOutlet weak var mapView: GMSMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.camera = GMSCameraPosition.camera(withLatitude: 18.514043, longitude: 57.377796, zoom: 6.0)
let marker = GMSMarker(position: CLLocationCoordinate2D(latitude: 18.514043, longitude: 57.377796))
marker.title = "Lokaci Pvt. Ltd."
marker.snippet = "Sec 132 Noida India"
marker.map = mapView
}
/// Marker - Google Place marker
let marker: GMSMarker = GMSMarker() // Allocating Marker
marker.title = "Title" // Setting title
marker.snippet = "Sub title" // Setting sub title
marker.icon = UIImage(named: "") // Marker icon
marker.appearAnimation = .pop // Appearing animation. default
marker.position = location.coordinate // CLLocationCoordinate2D
DispatchQueue.main.async { // Setting marker on mapview in main thread.
marker.map = mapView // Setting marker on Mapview
}