2016-08-22 1 views
-1

나는 didLongPressAtCoordinate을 사용하기 때문에 longitudelatitude을 가지고 있으며, 현재이 coordinate의 제목에 marker.title을 할당하려고합니다.marker.title을 좌표 (swift)로 할당하는 방법은 무엇입니까?

func mapView(mapView: GMSMapView!, didLongPressAtCoordinate coordinate: CLLocationCoordinate2D) { 

    let marker = GMSMarker() 
    marker.position = CLLocationCoordinate2D(latitude: coordinate.latitude, longitude: coordinate.longitude) 
    self.googleMapsView.clear() 
    self.googleMapsView.myLocationEnabled = false 
    marker.map = self.googleMapsView 
    marker.title = --> //my problem 


} 

난 당신이 좌표를 지오 코딩 할 필요가

+4

안녕하세요, scbas1000, 스택 오버플로에 오신 것을 환영합니다. 귀하의 질문은 매우 모호하며 답할 기회가 거의 없습니다. [묻는 방법] 가이드 (http://stackoverflow.com/help/how-to-ask)를 방문하십시오. – Alexander

+0

주목 해 주셔서 고맙습니다. 지금 편집 해주세요. – scbas1000

+1

@ scbas1000 아니요, 질문은 여전히 ​​매우 모호하며 지금까지 가지고있는 것을 보여주는 코드를 게시하지 않았습니다. 당신이 가지고있는 코드를 게시하고, 분당으로 무엇을했는지, 무엇을 달성하려고하는지 (예는 도움이 될 것인가)에 대해 명확히 논의한 다음, 오류/문제점을 나열하십시오. –

답변

1

얻으이 같은 주소 : -

func getAddressForLatLng(latitude: CLLocationDegrees, longitude: CLLocationDegrees, completionBlock : ((addrs : String)->Void)) { 
    let url = NSURL(string: "\(baseUrl)latlng=\(latitude),\(longitude)&key=\(serverKey)") 
    print(url) 


    let data = NSData(contentsOfURL: url!) 
    let json = try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! NSDictionary 
    if let result = json["results"] as? NSArray { 
     if let address = result[0]["address_components"] as? NSArray { 
      let number = address[0]["short_name"] as! String 
      let street = address[1]["short_name"] as! String 
      let city = address[2]["short_name"] as! String 
      let state = address[4]["short_name"] as! String 
      let zip = address[6]["short_name"] as! String 
      print("\(number) \(street), \(city), \(state) \(zip)") 
      completionBlock(addrs: "\(number) \(street), \(city), \(state) \(zip)") 

     } 
    } 
} 

업데이트합니다 didLongPressAtCoordinate 기능 : -

func mapView(mapView: GMSMapView!, didLongPressAtCoordinate coordinate: CLLocationCoordinate2D) { 

    let marker = GMSMarker() 
    marker.position = CLLocationCoordinate2D(latitude: coordinate.latitude, longitude: coordinate.longitude) 
    self.googleMapsView.clear() 
    self.googleMapsView.myLocationEnabled = false 
    marker.map = self.googleMapsView 
    getAddressForLatLng(coordinate.latitude, longitude: coordinate.longitude) { (addrs) in 

     marker.title = addrs 
     marker.snippet = "\(coordinate.latitude),\(coordinate.longitude)" 

    } 


} 

마음이 - base을 그리고 serverKey 귀하의 Google 콘솔 base을하고 있습니다 serverKey

+0

주와 도시가 일정한 지점에 가지 않고 코드가 자주 잘못되었음을 알게됩니다. 그것의 꼭대기에 그것은 엄격히 미국의 대다수와 일하기 위하여 쓰여지고 그것의 대다수를 그것의 이상으로 작동하지 않을 것입니다. – Sethmr

+0

답변 해 주셔서 감사합니다 #Davidian – scbas1000

0

에 대한 좋은 해결책을 찾을 수 없습니다. 당신은 분당 50 회 (Google에서 설정) 할 수있는 제한이 있으므로 그렇게하는 것이 효율적입니다. 당신이 주소를 일단 Here is a tutorial on the process

, 당신은 단지

marker.title = "\(theAddressVariableName)\n\nLat: \(coordinate.latitude)\nLon: coordinate.longitude"

형식은 그러나 당신이 원하는 말한다. 또한, 나는 왜 코드 라인이 그 기능 안에서 self.googleMapsView.myLocationEnabled = false이 될지 이해하지 못한다. 아마도 다른 곳으로 가야하지만, 배치에 대한 의심의 이익을 허용 할 것입니다.

관련 문제