GeoPoint 属性 ("place:location") 未传递给 Open Graph 对象

Posted

技术标签:

【中文标题】GeoPoint 属性 ("place:location") 未传递给 Open Graph 对象【英文标题】:GeoPoint property ("place:location") isn't passing to Open Graph object 【发布时间】:2015-01-12 23:04:55 【问题描述】:

我正在 Facebook 上创建自定义故事并使用 Facebook SDK for ios 来分享它。故事由地图上的文本、图像和 GeoPoint 组成。对象和动作的创建和发布一切都很好,但有一件事——我不知道如何将 GeoPoint 属性传递给对象并使其显示在地图上。

我尝试了两种方法:

1) 继承 Place 对象并使用预定义的“place:location”属性,如下所示:

NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];
object.provisionedForPost = YES;
// ...
// other properties work perfect
// ...
object[@"place"] = @ @"location" : @ @"longitude": @(-58.381667), @"latitude":@(-34.603333) ;

这种方式只是不传递值,Object Browser "place:location" 字段为空。虽然,如果我对其进行硬编码,地图会出现在帖子中,它看起来正是我所需要的。

2) 创建自定义 GeoPoint 属性“位置”并尝试在那里传递相同的值:

NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];
object.provisionedForPost = YES;
// ...
// other properties work perfect
// ...
object[@"data"] = @
                    @"location": @
                        @"latitude": latitude, // these are NSNumber objects, but i also
                        @"longitude": longitude // tried to pass NSString objects
                       
                   ;

通过这种方式传递值并且 "myapp_namespace:location" 属性的值出现在对象浏览器中,但 Story 出于某种原因忽略了它并且地图不显示。

在这两种情况下,我都去了故事附件设置并选择了地图布局,并选择了适当的属性作为突出显示的点。我只是不明白为什么它在第一种情况下不接受价值,而在第二种情况下完全忽略了价值。对于这个问题的任何帮助,我将不胜感激,我认为这可能对社区有用,因为我真的好几个小时都找不到答案。

【问题讨论】:

您是否尝试过这里的代码示例:developers.facebook.com/docs/reference/opengraph/object-type/…?单击 iOS 示例的 iOS SDK 按钮。 @MingLi 是的,我已经看过了,但不确定它是否与创建自定义对象有关,我对@"Sample Location: Latitude", @"place:location:latitude" 这种分配方式感到困惑,尽管我也尝试过.如果我错了,请纠正我。 @MingLi 我发现的最好的教程是here。但我没有找到任何有关位置属性的示例。 【参考方案1】:

您应该使用选项 1 中的代码,但是,您当前将“纬度”和“经度”作为 NSArray 传递。尝试改用字符串:

object[@"place"] = @ @"location" : @ @"longitude": @"-58.381667", @"latitude": @"-34.603333" ;

【讨论】:

不幸的是,它对我也不起作用。实际上,我试图将坐标作为 NSString 和 NSNumber 传递,但“地点:位置”列在对象浏览器中仍然是空白的。另外我想知道为什么它在发布过程中不会引发错误,因为 Place 子类型对象需要此属性。

以上是关于GeoPoint 属性 ("place:location") 未传递给 Open Graph 对象的主要内容,如果未能解决你的问题,请参考以下文章

检查 Swift 数组上的重复属性

使用带有地图附件的 Facebook Open Graph Story (GeoPoint)

解析云代码 GeoPoint

Java 实体未映射到 ElasticSearch GeoPoint 属性

具有纬度/经度值的 Android GeoPoint

使用 python 在 Firestore 中的 GeoPoint