gpt4 book ai didi

facebook-graph-api - 如何使用 Facebook API 从纬度/经度获取城市的地点 ID

转载 作者:行者123 更新时间:2023-12-04 00:12:48 24 4
gpt4 key购买 nike

我需要找到 的 Facebook 位置城市 对于许多纬度/经度点。实际点数是指个人地址,因此没有像企业那样要查找的确切地点 ID。

为了测试,我正在寻找Red Feather Lakes, CO.

  • 图搜索功能会返回很多地方,但不返回城市Example
  • 原始 FQL 不允许您按纬度/经度进行搜索,并且无论如何都没有“附近”的概念。 Example
  • 通过 ID 进行的 FQL 查询显示至少有一个“显示子文本”字段表明该对象是一个城市。 Example

  • 谢谢你的帮助。我有超过 80 年的我父亲的日期和地理标记照片,他很想在他的时间轴上看到这些照片!

    编辑

    城市不在 place表,它们只在 page 中 table 。
    有一个未记录的 distance() FQL 函数,但它只适用于 place table 。 (通过 this SO answer。)

    这有效:
    SELECT name,description,geometry,latitude,longitude, display_subtext 
    FROM place
    WHERE distance(latitude, longitude, "40.801985", "-105.593719") < 50000

    但这会产生错误“距离在表格页面中无效”:
    SELECT page_id,name,description,type,location 
    FROM page
    WHERE distance(
    location.latitude,location.longitude,
    "40.801985", "-105.593719") < 50000

    最佳答案

    这是一个光荣的黑客,但这段代码有效。诀窍是进行两个查询。首先,我们寻找靠近我们点的地方。这返回了很多商业场所。然后我们取城市 这些地方之一,并使用它查看 page该城市页面的表格。城市似乎有一个标准的命名约定,但美国和非美国城市的命名约定不同。

    一些小城市在place中有各种拼写表,因此代码循环遍历返回的位置,直到在 page 中找到匹配项 table 。

    $fb_token = 'YOUR_TOKEN';

    // Red Feather Lakes, Colorado
    $lat = '40.8078';
    $long = '-105.579';
    // Karlsruhe, Germany
    $lat = '49.037868';
    $long = '8.350124';

    $states_arr = array('AL'=>"Alabama",'AK'=>"Alaska",'AZ'=>"Arizona",'AR'=>"Arkansas",'CA'=>"California",'CO'=>"Colorado",'CT'=>"Connecticut",'DE'=>"Delaware",'FL'=>"Florida",'GA'=>"Georgia",'HI'=>"Hawaii",'ID'=>"Idaho",'IL'=>"Illinois", 'IN'=>"Indiana", 'IA'=>"Iowa", 'KS'=>"Kansas",'KY'=>"Kentucky",'LA'=>"Louisiana",'ME'=>"Maine",'MD'=>"Maryland", 'MA'=>"Massachusetts",'MI'=>"Michigan",'MN'=>"Minnesota",'MS'=>"Mississippi",'MO'=>"Missouri",'MT'=>"Montana",'NE'=>"Nebraska",'NV'=>"Nevada",'NH'=>"New Hampshire",'NJ'=>"New Jersey",'NM'=>"New Mexico",'NY'=>"New York",'NC'=>"North Carolina",'ND'=>"North Dakota",'OH'=>"Ohio",'OK'=>"Oklahoma", 'OR'=>"Oregon",'PA'=>"Pennsylvania",'RI'=>"Rhode Island",'SC'=>"South Carolina",'SD'=>"South Dakota",'TN'=>"Tennessee",'TX'=>"Texas",'UT'=>"Utah",'VT'=>"Vermont",'VA'=>"Virginia",'WA'=>"Washington",'DC'=>"Washington D.C.",'WV'=>"West Virginia",'WI'=>"Wisconsin",'WY'=>"Wyoming");

    $place_search = json_decode(file_get_contents('https://graph.facebook.com/search?type=place&center=' . $lat . ',' . $long . '&distance=10000&access_token=' . $fb_token));
    foreach($place_search->data as $result) {
    if ($result->location->city) {
    $city = $result->location->city;
    $state = $result->location->state;
    $country = $result->location->country;
    if ($country=='United States') {
    $city_name = $city . ', ' . $states_arr[$state]; // e.g. 'Chicago, Illinois'
    }
    else {
    $city_name = $city . ', ' . $country; // e.g. 'Rome, Italy'
    }
    $fql = 'SELECT name,page_id,name,description,type,location FROM page WHERE type="CITY" and name="' .$city_name. '"';
    $result = json_decode(file_get_contents('https://graph.facebook.com/fql?q=' . rawurlencode($fql) . '&access_token=' . $fb_token));
    if (count($result->data)>0) {
    // We found it!
    print_r($result);
    break;
    }
    else {
    // No luck, try the next place
    print ("Couldn't find " . $city_name . "\n");
    }
    }
    }

    关于facebook-graph-api - 如何使用 Facebook API 从纬度/经度获取城市的地点 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123287/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com