[英]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.