2016-11-28 3 views
0

userdata를 사용하여 Google지도 아이콘에 맞춤 데이터를 추가하고 있습니다. 내가 만든 클래스를 통해 marker.userdata를 설정 중입니다. 마커가 많으므로 사전 변수를 클래스에 할당 한 다음 해당 정보를 userdata에 할당합니다.특정 키의 특정 탭드 마커. 사용자 데이터 값 업데이트

내 질문에 마커를 두드리고 내 userdata를 레이블에 표시하면 사용자가 해당 레이블을 설정할 텍스트 필드를 변경할 수 있습니다. 해당 탭핑 된 마커에 대한 특정 userdata 값을 업데이트/새로 고침/재설정하려면 어떻게합니까?

, 클래스 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

내가 제안 할 것은 Places API for IOS에 대한 구글 공식 문서를 읽는 것입니다을 만드는

class markerUserData{ 
var nameUserData: String 
var tags: String 

init(Name: String, Tags: String) { 
    self.nameUserData = Name 
    self.tags = Tags 
} 

설정 IOS 용 Google Places API는 장소 포함 정보를 제공합니다. g 장소의 이름과 주소.

장소 ID는 장소를 고유하게 식별하는 텍스트 식별자입니다. iOS 용 Google Places API에서 GMSPlace 객체에서 장소의 ID를 검색 할 수 있습니다. 장소 ID를 저장하고 나중에 GMSPlace 개체를 다시 검색하는 데 사용할 수 있습니다.

ID로 장소를 가져 오려면 장소 ID와 콜백 메소드를 전달하여 GMSPlacesClient lookUpPlaceID:callback:으로 전화하십시오.

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

안녕하세요, 감사하지만 이러한 문서를 반복해서 읽었습니다. 내가 뭘 혼란스러워 위의 예에서 placeID 알려져있다 ("ChIJV4k8_9UodterU5KXbkYpSYs") 자동 완성 메서드를 사용하는 반면 나는 분명히 placeID 변수를 항상 그렇다면 나는 그것을 바꿀 것이라고 varID placeID = GMSPlace.placeID 또는 방법 ? 또는 가져 오기 프로그램을 사용하여 자동 완성을 수행해야합니까? –

0

Google지도에서 특정 위치를 찾으려면. 우리는 Google지도 추적을 사용합니다. 더 많은 정보를 원하시면 Here

장소 ID는 장소를 고유하게 식별하는 텍스트 식별자입니다. iOS 용 Google Places API에서 GMSPlace 객체에서 장소의 ID를 검색 할 수 있습니다. 장소 ID를 저장하고 나중에 GMSPlace 객체를 다시 검색하는 데 사용할 수 있습니다.

ID로 장소를 가져 오려면 GMSPlacesClient lookUpPlaceID : callback :을 호출하고 장소 ID와 콜백 메소드를 전달합니다.

API는 지정된 콜백 메서드를 호출하고 GMSPlace 개체를 전달합니다. 장소를 찾지 못하면 place 객체는 nil입니다.

// 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