如何向标记添加自定义数据(Google Maps API SWIFT)

9
我正在想办法为我的标记添加自定义属性/数据。
我已经使用了以下内容:
- Marker.Title(存储标题) - Marker.Snippet(存储对象ID) - Marker.Icon(存储图标) - Marker.userData(存储图片)
我希望能够存储更多的信息以在信息窗口中显示:
- 描述(字符串) - 数字(整数)
如果有更有效的存储和检索自定义数据/属性以在信息窗口中显示的方法,那将是非常好的。目前任何建议都将是宝贵的。
以下是我目前的一部分代码:设置标记数据:
 marker.title = object["objectTitle"] as! String
 marker.snippet = objecti.objectId
 marker.icon = UIImage(named:"markerImage")
 marker.userData = UIImage(data:imageData!)

信息窗口:

func mapView(mapView: GMSMapView!, markerInfoWindow marker: GMSMarker!) -> UIView! {
    var infoWindow :CustomInfoWindow = NSBundle.mainBundle().loadNibNamed("eventInfo", owner: self, options: nil)[0] as! CustomInfoWindow

    infoWindow.eventTitle.text = marker.title

    infoWindow.Image.image = marker.userData as? UIImage
    marker.userData = UIImage(data:imageData!)
     marker.snippet = object.objectId
    return infoWindow
}

你也可以将数据存储在NSUserDefault或者只是在NSDictionary中。 - ztan
2个回答

14
我创建了一个包含所需数据的结构体,并将其放在marker.userdata中,因为它支持任何类型。
let data = structName(lat: place.lat, long: place.long) // initialize struct
marker.userData = data

像这样访问它:

let markerLat = (marker.userData as! structName).lat
let markerLong = (marker.userData as! structName).long

很棒的解决方案!感谢分享。 - htjohn
没问题 @htjohn - Gamz Rs

12
我在学习Swift的初期看到了你的问题,但你认为这样做是否可行:
var myData = Dictionary<String, Any>()
myData["image"] = UIImage(data:imageData!)
myData["description"] = "The description"
myData["number"] = 1
marker.userData = myData

这是一种我最近刚学到的存储多种数据类型的技术。


1
我该如何检索userData中的Dictionary属性?因为userData没有下标。 - bradford gray
非常好的解决方案。您能告诉我如何检索存储在marker.userData中的数据吗? - Arjun
抱歉,我不记得了。自从我进行实验以来已经过了太长时间。 - primehalo
结构体数据类型似乎是这里的最佳选择,而不是字典(请参见Gamz Rs的答案)。 - Braden Holt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接