如何添加自定义数据以覆盖Google Maps for iOS?
问题描述:
如何将自定义数据添加到Google Maps for iOS中的GMSGroundOverlay图片?我用内置的“marker.userData”点击标记时成功地传递了标记上的数据,但地面覆盖层没有该属性?如何添加自定义数据以覆盖Google Maps for iOS?
答
好吧,我想到了这一点,如果它对任何人都有帮助。不知道这是否是这样做的最佳方式,但它有效。
1)予延长GMSGroundOverlay类在地图的主.swift文件
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
}