我需要接收给定边界内的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
据我所知,place
表http://developers.facebook.com/docs/reference/fql/place/中唯一的索引列是page_id
。但我认为没有办法从其他表中获取page_id
。
是否有任何(可能更简单)的方式在给定范围内接收Facebook地点?
答案 0 :(得分:2)
你是对的,因为这些列没有被索引,所以不能使用FQL表
但您可以尝试使用Graph API调用来搜索特定位置内的位置。
例如 - https://graph.facebook.com/search?type=place¢er=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) {
});
它完全符合我的需要 - 给我一些我可以使用的地方列表。