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

htj*_*ohn 8 google-maps google-maps-markers ios swift

我想找到一种方法来为我的标记添加自定义属性/数据.

我用过的

  • Marker.Title(商店标题)
  • Marker.Snippet(存储对象ID)
  • Marker.Icon(商店图标)
  • Marker.userData(用于存储图像)

附加信息我想存储在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)