如何在Google Maps for iOS中向GMSGroundOverlay图片添加自定义数据?当使用内置的“marker.userData”单击时,我成功传递了标记数据,但地面叠加层没有该属性?
答案 0 :(得分:1)
好吧,如果它对其他人有帮助,我想出来了。不确定这是否是最好的方法,但它确实有效。
1。)我在地图的主.swift文件中扩展了GMSGroundOverlay类
extension GMSGroundOverlay {
private struct customData {
static var userData:Any? = nil
}
var userData:Any? {
get {
return customData.userData
}
set {
customData.userData = newValue
}
}
}
2。)我在叠加层添加到地图
之前传递叠加层上的数据
let overlayData:[String:Any] = ["id":id,"html":html,"picture":picture,"photos":photos]
overlay.userData = overlayData
3。)单击叠加时我收到数据
func mapView(_ mapView: GMSMapView, didTapOverlay overlay: GMSGroundOverlay) -> Bool {
print("# You tapped overlay with data: ")
for (key,value) in overlay.userData as! [String:Any] {
print("# \(key) = \(value)")
}
return false
}