1

我想發佈Facebook地圖附件的故事。我可以成功地發佈故事,但附件不會顯示爲地圖。 我正在使用Facebook C#SDK(http://facebooksdk.net/)。發佈一個Facebook的故事,因爲地圖與C#不起作用

這是我設置的故事: enter image description here

自定義對象設置了所謂的地理定位的自定義屬性,關於這一點我在我的故事的attachement配置reffer: enter image description here

這就是我如何設置FB post調用的參數:

parameters["location"] = new Dictionary<string, object>(); 
((Dictionary<string, object>)parameters["location"])["title"] = "Title"; 
((Dictionary<string, object>)parameters["location"])["geolocation:latitude"] = pokk.Location.Latitude.ToString(CultureInfo.InvariantCulture); 
((Dictionary<string, object>)parameters["location"])["geolocation:longitude"] = pokk.Location.Longitude.ToString(CultureInfo.InvariantCulture); 

故事發布成功,但這是它的樣子: enter image description here

我希望你能幫助我..

Thanx提前! 迎接!

+0

我實現了一個Web應用程序類似的東西,它在時間線相同的顯示問題。最好是你在這裏創建一個錯誤報告:https://developers.facebook.com/x/bugs/created/看起來像fb行爲,集合和故事仍然存在很多錯誤。 – Jurik

+0

你有沒有機會看看解決方案 – Nico

回答

2

我花了最近幾個小時試圖診斷這個問題,並提出了一個解決方案,但代碼更改頗爲有趣。基本上,你可以做的第一件事情實際上是設置屬性「位置」是必需的。您會注意到,一旦您將Graph API設置爲因缺少必需屬性而失敗。

這是一個好兆頭,這意味着提交的內容不完全正確。在Object Browser中挖掘並手動創建對象後,我想出了一個解決方案。現在值得注意的是,我使用dnyamicExpandoObjects而不是字典,但概念是相同的。查看評論代碼

//create our location object 
dynamic locationData = new ExpandoObject(); 
locationData.title = "sample app testing " + DateTime.Now.ToString(); 

//create our geolocation object 
dynamic geoData = new ExpandoObject(); 
geoData.latitude = 37.416382; 
geoData.longitude = -122.152659; 
geoData.altitude = 42; //<-- important altitude figure 

//create our geo data item container and add the geoData object to the geolocation property 
dynamic geoDataItem = new ExpandoObject(); 
geoDataItem.geolocation = geoData; 

//set the data property of our location data to the geo data item container 
locationData.data = geoDataItem; 

//create our root object setting the location property to the location data object 
dynamic objItem = new ExpandoObject(); 
objItem.location = locationData; 

var response = context.Client.Post("me/<my_app_name>:<app_action>", objItem); 

真的,我們正在做的就是使用expando對象創建一個簡單的結構。我個人被困在什麼不知道如何完成GeoPoint運作。如果您注意到我們必須創建2個容器。

一個容器,所以我們可以在位置對象的data屬性上設置geolocation屬性。

最終的結構類似於

--- MyStory 
    --- location 
     --- title : 'Sample app testing....' 
     --- data 
      --- geolocation 
       --- latitude : 37.416... 
       --- longitude : -122.1526... 
       --- altitude : 42 

這似乎相當複雜,但這裏是一個最終的輸出預覽。

enter image description here

+0

太棒了!感謝您的解決方案!這是工作!不知怎的,我錯過了我的位置對象的「數據」標籤......只是最後一個問題:我能否影響地圖的縮放? – Nuker

+0

是的縮放是基於GeoPont的高度屬性。在這個例子中是geoData.altitude。這會在地圖上設置縮放高度 – Nico

+0

太糟糕了,我錯過了賞金。哦,很高興解決方案的作品。 – Nico

相關問題