我想创建自己的标记,因为我需要跟踪有关它们的额外信息(例如,添加日期,标记ID)......
所以我创建了另一个类,如下所示:
class myMarker: GMSMarker {
var markerID: Int
var addedDate: NSDate
}
但我不知道下一步该做什么......我应该创建一个" init"填充我的markerId和addedDate的方法?或者我应该覆盖GMSMarker构造函数(不是" init") 它可以是
class myMarker: GMSMarker {
var markerID: Int
var addedDate: NSDate
var myMarker: GMSMarker
init(marID: Int, date: NSDate, GMSMarker: markerwithoutDateNorId){
self.markerID = marID
self.addedDate = date
self.myMarker = markerwithoutDateNorId
}
}
我真的不知道如何实现这一点。也许我甚至不需要实现构造函数,但是使用GMSMarker构造函数(我相信我继承了)然后使用set方法设置标记ID和日期?
或者我可以覆盖GMSMarker构造函数,然后使用super(what-is-expecting-here)然后我会添加日期和标记ID。
我真的需要创建自己的标记类型,因为我需要跟踪这些事情...例如,我希望将来删除所有超过1周的标记...例如...如果我没有跟踪标记日期,那就不可能了。
我真的需要Swift和编程。我非常感谢你的帮助:)
答案 0 :(得分:2)
还有另一种方法,GMSMarker具有 userData 属性,可以接受AnyObject。
var info: Dictionary<String, AnyObject>?
info[“markerID”] = 0
info[“addedDate”] = NSDate()
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(latitude:latitude, longitude:longitude)
marker.map = nil
marker.tracksInfoWindowChanges = false
marker.map = self.mapView
marker.userData = info
答案 1 :(得分:0)
根据此documentation,创建一个GMSMarker
对象,添加包含position
和title
的标记,并设置其map
。下面是一个演示如何将标记添加到现有GMSMapView
对象的示例。标记在坐标10,10
处创建,并在单击时在信息窗口中显示字符串“Hello world”。
let position = CLLocationCoordinate2DMake(10, 10)
let marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = mapView
从此tutorial开始,在Google Maps SDK中,标记是GMSMarker
类的对象。初始化此类对象时,您必须指定以CLLocationCoordinate2D
类型表示的经度和纬度。
let coordinate = CLLocationCoordinate2D(latitude: self.mapTasks.fetchedAddressLatitude, longitude: self.mapTasks.fetchedAddressLongitude)
标记对象初始化后,地图SDK知道放置它的位置,然后需要指定要添加标记的地图对象。
检查这些相关的主题:
希望这有帮助!
答案 2 :(得分:0)
扩展GMSMarker类
extension GMSMarker{
fileprivate struct AssociatedKeys{
static var anyExtraData : AnyObject?
}
var anyExtraData: AnyObject? {
get {
return objc_getAssociatedObject(self, &AssociatedKeys.anyExtraData) as? AnyObject)
}
set (newValue){
if let newValue = newValue {
objc_setAssociatedObject(
self,
&AssociatedKeys.anyExtraData,
newValue as AnyObject?,
objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC)
}
}
}
}
然后,您可以在GMSMarker对象中使用它:
let marker = GMSMarker()
marker.iconView = //Your UIView to resemble the new custom Marker.
marker.anyExtraData = //AnyObject
答案 3 :(得分:0)
//来自可变数组的地图上的过去标记我们必须用于语句
//创建标记 让marker = GMSMarker()
for i in 0 ..
// possitioning marker,这里标记,mrk,name是可变数组 marker.position = CLLocationCoordinate2D(纬度:self.mark [i] as!CLLocationDegrees,经度:self.mrk [i] as!CLLocationDegrees)//可变数组 marker.title =“” marker.snippet = self.name [i] as! String //可变数组 marker.map = self.mapView }