2016-11-28 2 views
0

Я использую userdata для добавления пользовательских данных в мои маркеры карт google. Я устанавливаю marker.userdata через класс, который я создал. Поскольку у меня много маркеров, я назначаю переменные словаря классу и затем присваиваю эту информацию пользовательским данным.Обновить определенные измеренные значения 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 
} 

ответ

1

Что я могу предложить прочитать официальную документацию Google для Places API for IOS, API Google Places для IOS предоставляет информацию о местах, включая g имя и адрес места.

Идентификатор места - это текстовый идентификатор, который однозначно идентифицирует место. В API Google Адресов для iOS вы можете получить идентификатор места из объекта GMSPlace. Вы можете сохранить идентификатор места и использовать его для последующего восстановления объекта GMSPlace.

Чтобы получить место по ID, позвоните по телефону GMSPlacesClient lookUpPlaceID:callback:, передав идентификатор места и метод обратного вызова.

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)") 
    } 
}) 
+0

Эй, спасибо, но я прочитал эти документы снова и снова. То, что меня смущает, заключается в приведенном выше примере, как известно идентификатор placeID («ChIJV4k8_9UodTERU5KXbkYpSYs»), тогда как с использованием метода автозаполнения, который я использую, переменная placeID всегда изменяется, поэтому я бы сделал это var placeID = GMSPlace.placeID или как ? Или мне нужно сделать автозаполнение с помощью сборщика? –

0

Чтобы найти особое место на карте Google. Мы используем отслеживание карт Google. Для получения дополнительной информации вы можете пойти Here

Идентификатор места - это текстовый идентификатор, который однозначно идентифицирует место. В API Google Адресов для iOS вы можете получить идентификатор места из объекта GMSPlace. Вы можете сохранить идентификатор места и использовать его для последующего восстановления объекта GMSPlace.

Чтобы получить место по ID, вызовите GMSPlacesClient lookUpPlaceID: callback :, передав идентификатор места и метод обратного вызова.

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 
Смежные вопросы