2015-06-12 76 views
1

我想找出一种方法为我的标记添加自定义属性/数据。如何将自定义数据添加到标记(Google Maps API SWIFT)

我用什么

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

Additi Onal地区的信息我想存储在信息窗口显示

  • 描述(字符串)

  • 一个数字(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 
} 
+0

您也可以将数据存储在'NSUserDefault'或只是'NSDictionary'。 – ztan

回答

6

我碰到你的问题就来了,而刚刚开始学习斯威夫特,但你认为这样的事情会起作用:

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

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

+0

如何检索userData内的字典属性?因为userData没有下标。 –

2

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

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 
相关问题