如何添加自定义数据以覆盖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 
 
    }