2016-08-09 450 views
4

Hallo, ich benutze Google Autocomplete Orte in meiner IOS App. Aber das Problem ist, dass es nicht funktioniert. und ich kann keinen aktuellen Standort des Benutzers abrufen.Den aktuellen Standort des Benutzers abrufen Google API funktioniert nicht

Die Suchfunktion ist erfolgreich Orte in der automatischen Vervollständigung Box zeigt aber das einzige Problem, das ich habe, ist nicht in der Lage des Benutzers aktuelle location.This zu erhalten, ist der Code für die Benutzer aktuellen Standort immer ich bin mit

class ViewController: UIViewController,CLLocationManagerDelegate { 


    var locationManager = CLLocationManager() 
    var placesClient : GMSPlacesClient? 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     locationManager.requestAlwaysAuthorization() 

     run() 

    } 

func run(){ 

     self.placesClient?.currentPlaceWithCallback({ (list: GMSPlaceLikelihoodList?, error: NSError?) -> Void in 
      if let error = error { 
       print("error: \(error.description)") 
       return 
      } 

      for likelihood in list!.likelihoods { 
       if let likelihood = likelihood as? GMSPlaceLikelihood { 
        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)") 
       } 
      } 
     }) 
    } 

Ich habe fügte Schlüssel in info.plist hinzu und ich kompiliere App auf meinem Telefon.

enter image description here

Antwort

0

Der folgende Beispielcode ruft die Liste der Orte, an denen das Gerät am ehesten zu befinden, und protokolliert die Namen, die Wahrscheinlichkeit und andere Details für jeden Platz.

placesClient.currentPlaceWithCallback({ (placeLikelihoods, error) -> Void in 
    guard error == nil else { 
    print("Current Place error: \(error!.localizedDescription)") 
    return 
    } 

    if let placeLikelihoods = placeLikelihoods { 
    for likelihood in placeLikelihoods.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)") 
    } 
    } 
}) 
+0

was mache ich falsch? – hellosheikh

0

Fügen Sie den folgenden in viewDidLoad()

placesClient = GMSPlacesClient.shared() 

Und Sie setzen run() direkt nach Genehmigung ersuchen, kann die API nicht das erste Mal, arbeiten führen Sie die App, da es async ist und das API reagieren würde mit Fehler, weil die Berechtigung zu diesem Zeitpunkt nicht erhalten wurde.