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

时间:2015-06-12 01:43:42

标签: ios swift google-maps google-maps-markers

我正在尝试找出为我的标记添加自定义属性/数据的方法。

我使用过什么

  • 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!)

信息窗口:

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
}

2 个答案:

答案 0 :(得分:11)

我刚刚开始学习Swift时遇到了你的问题,但是你觉得这样的事情会起作用吗?

var myData = Dictionary<String, Any>()
myData["image"] = UIImage(data:imageData!)
myData["description"] = "The description"
myData["number"] = 1
marker.userData = myData

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

答案 1 :(得分:5)

我创建了一个包含我需要的所有数据的结构,并将其放在marker.userdata中,因为它支持Any类型。

let data = structName(lat: place.lat, long: place.long) // initialize struct
marker.userData = data

Aceess就像这样:

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