htj*_*ohn 8 google-maps google-maps-markers ios swift
我想找到一种方法来为我的标记添加自定义属性/数据.
我用过的
附加信息我想存储在InfoWindow上显示
说明(字符串)
一个数字(Int)
如果有更有效的方法来存储和检索要在infowindow上显示的自定义数据/属性,那将是很好的.目前任何建议都很有价值.
这是我目前所拥有的片段: 设置标记数据:
marker.title = object["objectTitle"] as! String
marker.snippet = objecti.objectId
marker.icon = UIImage(named:"markerImage")
marker.userData = UIImage(data:imageData!)
Run Code Online (Sandbox Code Playgroud)
信息窗口:
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
}
Run Code Online (Sandbox Code Playgroud)
pri*_*alo 12
我刚刚开始学习Swift时遇到了你的问题,但是你觉得这样的事情会起作用吗:
var myData = Dictionary<String, Any>()
myData["image"] = UIImage(data:imageData!)
myData["description"] = "The description"
myData["number"] = 1
marker.userData = myData
Run Code Online (Sandbox Code Playgroud)
这是一种存储我刚刚学到的多种数据类型的技术.
小智 8
我创建了一个包含我需要的所有数据的结构,并将其放在marker.userdata中,因为它支持Any类型.
let data = structName(lat: place.lat, long: place.long) // initialize struct
marker.userData = data
Run Code Online (Sandbox Code Playgroud)
Aceess它是这样的:
let markerLat = (marker.userData as! structName).lat
let markerLong = (marker.userData as! structName).long
Run Code Online (Sandbox Code Playgroud)