如何在界限内获取Facebook位置列表

时间:2012-08-28 20:45:05

标签: javascript facebook facebook-fql

我需要接收给定边界内的facebook位置列表(由NE和WS坐标定义)

我从javascript应用程序调用以下fql.query:

 FB.api({
    method: "fql.query",

    query: "SELECT name,description,geometry,latitude,longitude,checkin_count,display_subtext FROM place WHERE latitude < '" + bounds.getNorthEast().lat() + "' and longitude < '" + bounds.getNorthEast().lng() + "' and latitude > '" +  bounds.getSouthWest().lat() + "' and longitude > '" +  bounds.getSouthWest().lng() +"'"
  },
  function(response) {
     /// 
 }

但我收到错误604

Your statement is not indexable. The WHERE clause must contain an indexable column. Such columns are marked with * in the tables linked from http://developers.facebook.com/docs/reference/fql 

据我所知,placehttp://developers.facebook.com/docs/reference/fql/place/中唯一的索引列是page_id。但我认为没有办法从其他表中获取page_id

是否有任何(可能更简单)的方式在给定范围内接收Facebook地点?

2 个答案:

答案 0 :(得分:2)

你是对的,因为这些列没有被索引,所以不能使用FQL表 但您可以尝试使用Graph API调用来搜索特定位置内的位置。
例如 - https://graph.facebook.com/search?type=place&center=37.76,-122.427&distance=1000&access_token= ...
这来自此处的图谱API文档 - https://developers.facebook.com/docs/reference/api/

答案 1 :(得分:0)

我用fql制作它,我的灵感来自这个答案:

Facebook places: order results by distance

我搜索的不是边界内,而是距离中心点的距离,但使用的是fql.query语言:

    FB.api({
      method: "fql.query",
      query: "SELECT page_id, name, description, latitude, longitude, checkin_count, distance(latitude, longitude, '"  + centerlat + "', '" + centerlon + "') FROM place WHERE distance(latitude, longitude, '" + centerlat + "', '" + centerlon + "') < '" + distance +"'" 
      },
      function(response) {

      });

它完全符合我的需要 - 给我一些我可以使用的地方列表。