【问题标题】:Can't get an image from foursquare api, on swift iOS在swift iOS上无法从foursquare api获取图像
【发布时间】:2015-12-30 20:52:18
【问题描述】:

我正在使用 das quadratfoursquare sdk 进行 swift (QuadratTouch) 一切正常期待获得图像 他们用“前缀”和“后缀”在 JSON 中标记,如 NSDictionary UIImage 最终归零

解析 JSON 并创建一个普通的 url

let parameters = [Parameter.ll:"\(lat),\(long)", Parameter.limit:"35", Parameter.radius:"\(radius)", Parameter.intent:"browse"]
    let currentTask = session.venues.search(parameters) {
        (result) -> Void in
        var places = [Place]()
        if let response = result.response {
            if let venues =  response["venues"] as? NSArray {
                for venue in venues {
                    if let categories = venue["categories"] as? NSArray {
                       let categoryInfo = categories[0] as! NSDictionary
                              if let  location = venue["location"] as? NSDictionary,
                                name = categoryInfo["name"] as? String,
                                address = location["address"] as? String,
                                lat = location["lat"] as? CLLocationDegrees,
                                long = location["lng"] as? CLLocationDegrees,
                                icon = categoryInfo["icon"] as? NSDictionary,
                                prefix = icon["prefix"] as? String,
                                suffix = icon["suffix"] as? String {
                                    let url = prefix + suffix
                                    let pos = CLLocationCoordinate2DMake(lat, long)
                                    places.append(FourSquarePlace(coordinates: pos, title: name, address: address, imageURL:url, photo: nil))
                            }

以及从SessionAuthorizationDelegate获取图片的方法

 self.session.downloadImageAtURL(NSURL(string: imageURL)!, completionHandler: { (imageData, error) -> Void in
                    //print(imageData)
                    print(imageURL)
                    if imageData != nil {
                        thisMarker.icon = UIImage(data: imageData!)
                    }
                })

我尝试将 ULR 从儿子粘贴到浏览器并得到它

AccessDeniedAccess DeniedAF1DF956303F2D6EcRetLqGf3ipb6KOsSJ9YkqiDnmEUkjhEavefWCzjlHQAivKWMLsRMQukWsYiVCYK

我猜它可能无法将访问令牌添加到图像中,但这很奇怪,因为我使用的是 sdk 方法...

【问题讨论】:

    标签: ios swift icons photo foursquare


    【解决方案1】:

    让 url = 前缀 + 后缀

    这种用法不正确。您必须指定图像的大小。

    例如

    让 url = 前缀 + "100x100" + 后缀

    另见Foursquare API document

    要组合一个可解析的照片 URL,请使用前缀 + 大小 + 后缀,例如https://irs0.4sqi.net/img/general/300x500/2341723_vt1Kr-SfmRmdge-M7b4KNgX2_PHElyVbYL65pMnxEQw.jpg.

    size 可以是以下值之一,其中 XX 或 YY 是 36、100、300 或 500 之一。

    • XXxYY
    • original:原始照片的大小
    • capXX:以 XX 的宽度或高度(以较大者为准)为照片加盖。按比例缩放另一个 - 较小的尺寸
    • widthXX:强制宽度为 XX 并按比例缩放高度
    • heightYY:强制高度为 YY 并按比例缩放宽度

    【讨论】:

    • 谢谢!我遇到了同样的问题,这解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    相关资源
    最近更新 更多