2016-08-22 3 views
-1

У меня есть longitude и latitude, потому что я использую didLongPressAtCoordinate, и на данный момент я хочу назначить marker.title на звание этого coordinate.Как назначить marker.title по координате (быстро)?

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)" 

    } 


} 

виду, что: - BaseUrl И serverKey ваш Google консоли BaseUrl, и serverKey

+0

Вы понимаете, что государство и город не ходят в постоянные места и что ваш код ошибочен довольно часто. Кроме того, он строго написан для работы с большинством США и не будет работать с большинством вне его. – Sethmr

+0

спасибо за ваш ответ #Dreavidian – 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 внутри этой функции. Вероятно, это должно быть куда-то еще, но я позволю себе сомневаться в его размещении.