我正在使用userdata向我的google地图标记添加自定义数据。我正在通过创建的类设置marker.userdata。因为我有很多标记,所以我将字典变量分配给类,然后将该信息分配给userdata。
我的问题是,一旦我点击了标记并在标签中显示了我的用户数据,用户就可以更改我希望设置该标签的文本字段。如何更新/刷新/重置特定于该点击标记的用户数据值?
设置类
class markerUserData{
var nameUserData: String
var tags: String
init(Name: String, Tags: String) {
self.nameUserData = Name
self.tags = Tags
}
创建markers.userdata
for p in STOREDPlaces {
let name = p["StoredPlaceName"] as? String
let tags = p["Tags"] as? Strin
markers.map = self.vwGMap
self.vwGMap.setNeedsDisplay()
let storedPlaceUserData = markerUserData(Name: name!, Tags: tags!)
markers.userData = storedPlaceUserData
}
抽头函数
func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool {
detailsName.text = (marker.userData as! markerUserData).nameUserData
tagsMarker = (marker.userData as! markerUserData).tags
}
@IBAction func editingTextField(_ sender: Any) {
//So in here i want something which will update (marker.userData as! markerUserData).tags and set it to whatever has been edited
}
最佳答案
我的建议是阅读Places API for IOS的官方Google文档,Google place s API for IOS提供了关于地点的信息,包括地点的名称和地址。
场所ID是唯一标识场所的文本标识符。在Google Places API for iOS中,您可以从GMSPlace对象检索一个位置的ID。您可以存储place ID,然后使用它再次检索GMSPlace对象。
要按ID获取place,请调用GMSPlacesClient lookUpPlaceID:callback:,传递place ID和回调方法。
API调用指定的回调方法,传入GMSPlace对象。如果找不到位置,则place对象为nil。
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
GMSPlacesClient.shared().lookUpPlaceID(placeID, callback: { (place: GMSPlace?, error: NSError?) -> Void in
if let error = error {
print("lookup place id query error: \(error.localizedDescription)")
return
}
if let place = place {
print("Place name \(place.name)")
print("Place address \(place.formattedAddress)")
print("Place placeID \(place.placeID)")
print("Place attributions \(place.attributions)")
} else {
print("No place details for \(placeID)")
}
})
关于ios - 更新给定键的特定轻击的marker.userdata值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40850061/