我是ios的新手,我不确定在我的http发布请求完成后如何更新Google地图自定义标记信息窗口图像。
我当前的自定义标记信息窗口xib看起来像这样
在我的委托方法中 mapView(mapView:GMSMapView,markerInfoWindow标记:GMSMarker)我制作了一个Alamofire.request,它为我提取了我的图像。我希望用户能够立即查看信息窗口,而无需等待图像完成。请求如下
Alamofire.request(.POST, appDelegate.host + "/get-img", parameters: params as? [String : AnyObject], encoding: .JSON , headers: headers)
.response{ (request, response, data, error) in
if let img = data {
infoWindow.img.image = UIImage(data: img)
}
}
然而,信息窗口中的图像根本不会更新。据我所知,google maps api表示在委托方法中返回视图后视图可能无法更新,但还有其他解决方法吗?
我还考虑过在加载地图视图之前请求与地图上所有标记相关的所有图像,但这可能过于昂贵。
答案 0 :(得分:3)
我通过设置:
解决了类似的问题marker.tracksInfoWindowChanges = true
在mapView markerInfoWindow方法中(在请求图像之前)然后在加载图像之后(即在"响应"处理程序中),我在infoWindow中设置图像然后将标志设置回来,所以它没有消耗资源(see tracksInfoWindowChanges docs):
marker.tracksInfoWindowChanges = false