如何在谷歌地图添加标记的地图视图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>))
这真的很简单..确保您的地图通过这样做初始化