繁体   English   中英

Facebook SDK和iOS:循环遍历附近的地方

[英]Facebook SDK & iOS: Loop to run through nearby places

我是Facebook SDK的新手,正在尝试建立一个循环以遍历FBPlacePickerViewController中显示的10个附近地点,然后获取经度和纬度并将其存储在数组中。 这是视图的示例: 在此处输入图片说明

我发现我可以像这样获取和存储long和lat:

- (void)facebookPlaces {
 FBPlacePickerViewController *placePickerController = [[FBPlacePickerViewController alloc] init];
    placePickerController.title = @"Nearby Places";
NSString *placeName = placePickerController.selection.name;
 if (!placeName) {
             placeName = @"<No Place Selected>";
         }
         // This grabs the long and lat of each place selected:
         NSString *firstLat = [[NSString alloc] initWithFormat:@"%f", placePickerController.locationCoordinate.latitude];
         NSLog(@"First Lat: %@", firstLat);
         NSString *firstLong = [[NSString alloc] initWithFormat:@"%f", placePickerController.locationCoordinate.longitude];
         NSLog(@"First Long: %@", firstLong);
}

现在,我想设置一个循环以编程方式选择10个最近的位置,然后将long和lats存储在数组中。 我有两个问题:首先,我不确定如何以编程方式选择/获取10个地方。 我可以手动启动该应用程序,启动此视图, 点击其中一个 ,然后仅在点击“完成”时收集信息。 我希望仅通过代码一次选择10个。 有谁知道如何创建这样的循环? 还是有更好的方法? 我对代码很陌生。

编辑:看起来FQL是获取10个最近地点的经纬度的最佳方法。 这是我到目前为止编写的代码(感谢Paulw11的所有帮助)。 唯一的问题是我遇到了“错误:操作无法完成。(com.facebook.sdk错误5。)”。 这是我的代码的样子:

- (void)facebookPlaces {

    NSString *query =
    @"SELECT page_id FROM place WHERE distance(latitude, longitude, 37.75377496892, -122.42077080676) < 500 limit 10";
    // Set up the query parameter
    NSDictionary *queryParam = @{ @"q": query };
    // Make the API request that uses FQL
    [FBRequestConnection startWithGraphPath:@"/fql"
                                 parameters:queryParam
                                 HTTPMethod:@"GET"
                          completionHandler:^(FBRequestConnection *connection,
                                              id result,
                                              NSError *error) {
                              if (error) {
                                  NSLog(@"Error: %@", [error localizedDescription]);
                              } else {
                                  NSLog(@"Result: %@", result);
                              }
                          }];
}

您应该在类中实现FBPlacePickerDelegate协议,而不是直接访问placePickerController.selection.name 然后,您可以在placePickerViewControllerSelectionDidChange:方法中访问选定的位置。

FBPlacePickerDelegate协议还定义了一个placePickerViewController:shouldIncludePlace:方法,该方法针对将添加到选择器中的每个位置调用-您可以使用此方法捕获数组中的位置。

但是,基于问题的第二部分,我怀疑您真正想做的是在没有用户界面的情况下检索附近的地方。 为此,您需要查询Facebook Graph API。Facebook FQL的答案:获取范围内的签入显示了使用distance()函数的FQL查询-您应该可以将其用作起点。

您可以使用FQL查询,例如SELECT page_id FROM place WHERE distance(latitude, longitude, "37.75377496892", "-122.42077080676") < 500 limit 10以检索指定纬度和经度500米以内的10个地点。

您可以使用Graph API Explorer来尝试FQL查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM