无法使用Google商家信息API获取有关地点的详细信息 - "无法调用' lookUpPlaceID' "

时间:2015-06-04 11:54:11

标签: ios swift google-places-api

我正在尝试使用Google Places API for iOS获取有关地点的详细信息。尝试调用lookUpPlaceID函数时,收到以下Swift编译器错误:

  

无法调用' lookUpPlaceID'使用类型'的参数列表(字符串,回调:(GMSPlace!,_) - > Void)'

    let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

    placesClient!.lookUpPlaceID(placeID, callback: { (place: GMSPlace!, error) -> Void in
        if error != nil {
            println("lookup place id query error: \(error.localizedDescription)")
            return
        }

        if place != nil {
            println("Place name \(place.name)")
            println("Place address \(place.formattedAddress)")
            println("Place placeID \(place.placeID)")
            println("Place attributions \(place.attributions)")
        } else {
            println("No place details for \(placeID)")
        }
    })

我正在使用Google Places API文档中提供的示例代码:

https://developers.google.com/places/ios/place-details#get-place

placesClient是GMSPlacesClient类型的对象。在代码的早期,我能够成功调用placesClient autcompleteQuery函数,所以我不认为它对我的placeClient有问题。

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:5)

在回调中,您需要将类型(GMSPlace)替换为您要使用的变量名称,这是您error正确执行的。

应该是这样的:

let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

placesClient!.lookUpPlaceID(placeID, callback: { (place, error) -> Void in
    if error != nil {
        println("lookup place id query error: \(error!.localizedDescription)")
        return
    }

    if let p = place {
        println("Place name \(p.name)")
        println("Place address \(p.formattedAddress)")
        println("Place placeID \(p.placeID)")
        println("Place attributions \(p.attributions)")
    } else {
        println("No place details for \(placeID)")
    }
})

此外,请确保在使用它们之前解开这些可选变量(地点和错误),执行强制解包(!),就像我在error上面所做的那样,或者使用if let,就像我为place做的那样。

希望这有帮助。