如何在谷歌地图添加标记的地图视图sdk for iOS在Swift中

试图向Google地图添加标记,但是应用程序在addMarker()函数调用时addMarker() ,Exception的详细信息如下,

由于未捕获exception“ GMSThreadException ”而终止应用程序,原因是:“所有对iOS版Google地图SDK的调用必须由UI线程调用”

FYI 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。

在closures中执行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 } 

希望这有助于某人!

 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>)) 

这真的很简单..确保您的地图通过这样做初始化