我正在使用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
}
答案 0 :(得分:1)
我可以建议阅读Places API for IOS的官方Google文档,IOS的Google Places API提供有关地点的信息,包括地点的名称和地址。
地点ID是唯一标识地点的文字标识符。在Google Places API for iOS中,您可以从GMSPlace对象中检索地点的ID。您可以存储地点ID,并在以后再次使用它来检索GMSPlace对象。
要按ID获取地点,请拨打GMSPlacesClient lookUpPlaceID:callback:,传递地点ID和回调方式。
API调用指定的回调方法,传入GMSPlace对象。如果找不到该位置,则该位置对象为零。
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)")
}
})
答案 1 :(得分:0)
在Google地图上查找特定位置。我们使用谷歌地图跟踪。有关详细信息,请访问Here
地点ID是唯一标识地点的文字标识符。在Google Places API for iOS中,您可以从GMSPlace对象中检索地点的ID。您可以存储地点ID,并在以后再次使用它来检索GMSPlace对象。
要按ID获取地点,请调用GMSPlacesClient lookUpPlaceID:callback:,传递地点ID和回调方法。
API调用指定的回调方法,传入GMSPlace对象。如果找不到该位置,则该位置对象为零。
// Here use your placeID
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
placesClient.lookUpPlaceID(placeID, callback: { (place, error) -> Void in
if let error = error {
print("lookup place id query error: \(error.localizedDescription)")
return
}
guard let place = place else {
print("No place details for \(placeID)")
return
}
print("Place name \(place.name)")
print("Place address \(place.formattedAddress)")
print("Place placeID \(place.placeID)")
print("Place attributions \(place.attributions)")
})
以下代码示例检索设备最可能位于的位置列表,并记录每个位置的名称,可能性和其他详细信息。
placesClient.currentPlace(callback: { (placeLikelihoodList, error) -> Void in
if let error = error {
print("Pick Place error: \(error.localizedDescription)")
return
}
if let placeLikelihoodList = placeLikelihoodList {
for likelihood in placeLikelihoodList.likelihoods {
let place = likelihood.place
print("Current Place name \(place.name) at likelihood \(likelihood.likelihood)")
print("Current Place address \(place.formattedAddress)")
print("Current Place attributions \(place.attributions)")
print("Current PlaceID \(place.placeID)")
}
}
})
//Add a marker
//To add a marker, create a GMSMarker object that includes a position and title, and set its map.
let position = CLLocationCoordinate2D(latitude: 10, longitude: 10)
let marker = GMSMarker(position: position)
marker.title = "Hello World"
marker.map = mapView