• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - Google API 错误 - 归因不一致

[复制链接]
菜鸟教程小白 发表于 2022-12-13 02:37:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

使用 Google Places API HTTP 网络服务调用 URL 获取地点的照片数据,

https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=&radius=&sensor=false&key=

产生预期的回调。这是我用于测试的请求的响应。

2017-09-19 11:20:32.968347-0400 <MY_APP_NAME>[7502:2809094] Places Found: (
        {
        ... 
        ...
        photos =         (
                        {
                height = 5312;
                "html_attributions" =                 (
                    "<a href=\"https://maps.google.com/maps/contrib/110407035205544174409/photos\">leah steen</a>"
                );
                "photo_reference" = "CmRaAAAAcppPDrYGBnLqlyYQ_EMmsvgKXXpVjp0drGkJPWLBwlSzrWzuhtFFGCzQPl1pSez92QVktthtaMSsV1IlAWMIMPboycElhruKgUg-KFHWWrhLKOR6h8GGiR349rhokAFJEhApc7ghYIH0guUQBGJi1bKBGhQMcElN7-lSBzvCgAG3vVzANLkf6A";
                width = 2988;
            }
        );
        ...
        ...
    }
)

如您所见,这个地方有一个照片字典,其中包含相关图像的 html_attributions 值,我在整个应用程序中都对其进行了适当的处理。

问题:

当我获取同一个地方的照片数据时,通过使用 place_id,我得到了照片和属性:

2017-09-19 11:22:08.548253-0400 <MY_APP_NAME>[7502:2809094] photo data: (
    "<UIImage: 0x17048b720> size {169, 300} orientation 0 scale 2.000000",
    "leah steen{\n}"
)

我收到的当然是同一张照片,但署名没有链接。正如您从我使用网络服务的其他方法中看到的那样,这个地方的照片确实有一个归属地带有一个链接。

我很茫然。如果他们的 iOS SDK 没有返回相同的数据,我应该如何从 Google 获得完整的归因?

代码:

使用 Google other 建议的方法通过 place_id 获取地点的照片数据,您可以获得图像和图像属性(如果有的话)。

按照 Google 的要求,我使用这两种方法获取数据:

- (void)lookUpPhotosForPlaceIDNSString *)placeID
                      callbackGMSPlacePhotoMetadataResultCallback)callback;

- (void)loadPlacePhotoGMSPlacePhotoMetadata *)photo
              callbackGMSPlacePhotoImageResultCallback)callback;

这是我用于获取照片数据的代码。

// Look up photos for the place
[[GMSPlacesClient sharedClient] lookUpPhotosForPlaceID:placeID callback:^(GMSPlacePhotoMetadataList * _Nullable photos, NSError * _Nullable error) {
    
    if (error != nil) {
        response(error, NULL);
        return;
    }
    
    if (photos.results.count > 0) {
        
        GMSPlacePhotoMetadata *metaData = photos.results.firstObject;   // Using the first photo
        
        // Load the photo
        [[GMSPlacesClient sharedClient] loadPlacePhoto:metaData constrainedToSize:<SOME_SIZE> scale:[UIApplication sharedApplication].keyWindow.screen.scale callback:^(UIImage * _Nullable photo, NSError * _Nullable error) {
            
            if (error) {
                response(error, NULL);
                return;
            }
            
            NSArray *photoData = @[photo, metaData.attributions];
            
            response(nil, photoData);
            
        }];
        
    }
    else response(error, NULL);
    
}];

编辑:

作为引用,Google确实通知其用户此数据可能会发生变化,并且多个回调应该返回相同的数据。然而,使用不同 API 的多次调用不会...



Best Answer-推荐答案


您可以做几件事来验证正确的行为:

  1. 您可以切换回第一个 API 并查看它是否真的再次返回。因为医生说:

Multiple calls of this method will probably return the same photos each time. However, this is not guaranteed because the underlying data may have changed.

  1. 其次,您可以检查回调行为,如果您在调用回调时丢失了一些数据

    NSArray *photoData = @[photo, metaData.attributions];

此时我会丢失属性字符串,但只保留纯文本(leah steen)。 检查此元数据的好方法是在 loadPlacePhoto:callback:

之前

关于ios - Google API 错误 - 归因不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46304901/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap