在 didTapMarker 中进行 API 调用以获取标记标题并在 Google 地图 API 中收到响应后分配给 iOS
Make an API call inside didTapMarker to get the marker title and assign it after response is received in Google Maps API for iOS
我正在尝试在 didTapMarker
函数中进行 API 调用。通话结束后,我试图设置 marker.title
但它不起作用。该调用是异步调用,我认为这与问题有某种关系。下次我点击标记时它会显示结果,但在第一次点击后不会。
这是代码,
func mapView(mapView: GMSMapView!, didTapMarker marker: GMSMarker!) -> Bool {
if marker.title == nil{
makeApiRequest(["id": marker.userData],
success: {
(response: Dictionary<String, JSONValue>?) in
if let name = response?["name"]?.string{
marker.title = name
}
},
failure: {
(error: NSError) in
})
}
}
请帮忙。我应该怎么做才能让它在第一次点击时工作。
我认为你可以使用 self.mapView
(假设 self.mapView 是你的实例变量)
然后在 marker.title = name
正下方做 self.mapView .selectedMarker = marker
如果您的响应块仍然不在主 UI 线程中,您可以在主 UI 线程
中更新您的 mapView
dispatch_async(dispatch_get_main_queue()) {
marker.title = name
self.mapView.selectedMarker = marker
}
我正在尝试在 didTapMarker
函数中进行 API 调用。通话结束后,我试图设置 marker.title
但它不起作用。该调用是异步调用,我认为这与问题有某种关系。下次我点击标记时它会显示结果,但在第一次点击后不会。
这是代码,
func mapView(mapView: GMSMapView!, didTapMarker marker: GMSMarker!) -> Bool {
if marker.title == nil{
makeApiRequest(["id": marker.userData],
success: {
(response: Dictionary<String, JSONValue>?) in
if let name = response?["name"]?.string{
marker.title = name
}
},
failure: {
(error: NSError) in
})
}
}
请帮忙。我应该怎么做才能让它在第一次点击时工作。
我认为你可以使用 self.mapView
(假设 self.mapView 是你的实例变量)
然后在 marker.title = name
self.mapView .selectedMarker = marker
如果您的响应块仍然不在主 UI 线程中,您可以在主 UI 线程
中更新您的 mapViewdispatch_async(dispatch_get_main_queue()) {
marker.title = name
self.mapView.selectedMarker = marker
}