Facebook - 通过位置名称获取位置/地点 ID

Posted

技术标签:

【中文标题】Facebook - 通过位置名称获取位置/地点 ID【英文标题】:Facebook - obtain location /places ID via location name 【发布时间】:2011-03-18 20:39:37 【问题描述】:

我可以通过带有位置 ID 的图形 API 发送查询来返回位置的详细信息,但是我希望实现相反的效果 - 通过发送包含位置名称(城市、状态等)。这可能吗?

【问题讨论】:

【参考方案1】:

这可以通过几种不同的方法实现。您可以使用 long / lat 位置进行搜索,并将地名放入查询中。此搜索将仅搜索地点。

执行以下操作

https://graph.facebook.com/search?q=ritual&type=place&center=37.76,-122.427&distance=1000&access_token=mytoken.

这将返回仪式咖啡。

另一种方法是使用以下方法搜索 facebook 页面 https://graph.facebook.com/search?q=ritual%20coffee&type=page&access_token=mytoken

这种方式比较困难,因为您显然需要更详细地解析列表。

【讨论】:

我找不到该端点的文档参考。这个解决方案是某种黑匣子吗?【参考方案2】:

您也可以使用来自 facebook 的 place sdk:

compile group: 'com.facebook.android', name: 'facebook-places', version: '4.30.0' // For latest version, see https://developers.facebook.com/docs/android/

然后:

PlaceSearchRequestParams.Builder builder = new PlaceSearchRequestParams.Builder();

builder.setSearchText("Cafe");
builder.setDistance(1000); // 1,000 meter maximum distance.
builder.setLimit(10);
builder.addField(PlaceFields.ID);

GraphRequest request = PlaceManager.newPlaceSearchRequestForLocation(builder.build());

request.setCallback(new GraphRequest.Callback() 
    @Override
    public void onCompleted(GraphResponse response) 
        // Handle the response. The returned ID in JSON is the placeId.
    

request.executeAsync();

【讨论】:

更多信息在这里:developers.facebook.com/docs/places/android/search【参考方案3】:

如果我正确理解您的问题,您可以使用 fql: https://api.facebook.com/method/fql.query?query=QUERY where 查询应该是这样的: 从 name = 的地方选择 page_id ;

这里有一个页面供您参考: http://developers.facebook.com/docs/reference/fql/place/

【讨论】:

你也可以使用php sdk或者JS sdk达到同样的效果。 感谢埃拉德的回答。不幸的是,这不是一个可行的解决方案 - 我收到此错误:“您的语句不可索引。WHERE 子句必须包含可索引列。这些列在从developers.facebook.com/docs/reference/fql 链接的表中标有 *”。查看您链接到的 FQL Place 页面,看来 page_id 是唯一的索引列:( 那么我想在 facebook 架构中没有解决方案。从理论上讲,您可以通过从位置表中选择 * 从 1 到其他任何值来创建自己的数据库,但这似乎是一个糟糕的解决方案。

以上是关于Facebook - 通过位置名称获取位置/地点 ID的主要内容,如果未能解决你的问题,请参考以下文章

从获取的坐标中获取位置名称

怎样在高德地图上标记位置?

Facebook 地点 API:是不是可以获取地点图片?

如何在 windows phone 8 中找到当前地点的名称?

为啥我在家时得到不同的地点名称?

位置 API。获取城市的区域