如何在Google Maps for iOS中添加自定义数据以进行叠加?

时间:2016-11-17 14:31:31

标签: ios swift swift2 swift3 google-maps-sdk-ios

如何在Google Maps for iOS中向GMSGroundOverlay图片添加自定义数据?当使用内置的“marker.userData”单击时,我成功传递了标记数据,但地面叠加层没有该属性?

1 个答案:

答案 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
    }