Geofire在一定距离后不显示位置

时间:2016-06-30 17:18:51

标签: ios objective-c firebase firebase-realtime-database geofire

我在iOS上使用gebase的firebase我正在从我的firebase数据库加载数据但是如果位置有点远,它在地图中不显示为MKAnnotation ....

我需要一种方法来过滤它应搜索的半径。 我看了geo queryAtRegion:,但它不是应该使用的那个..

代码是

  [[FIRAuth auth] addAuthStateDidChangeListener:^(FIRAuth * _Nonnull auth, FIRUser * _Nullable user) {

[self.geo setLocation:[[CLLocation alloc] initWithLatitude: lat longitude:log] forKey:[NSString stringWithFormat:@"%@", user.displayName] withCompletionBlock:^(NSError *error) {

       if (error){
         NSLog(@"%@", error.localizedDescription);


 } else {

             }

         }];
      }];

对于抓取是这个..

- (void)loadData{
    self.regionQuery = [self.geo queryWithRegion:region];

    NSDate *methodStart = [NSDate date];

    [_regionQuery observeEventType:GFEventTypeKeyEntered withBlock:^(NSString *key, CLLocation *location) {
        pinAnnotation = [[Pin alloc] init];
        [pinAnnotation setKey: key];
        [pinAnnotation setCoordinate:location.coordinate];


        [pinAnnotation setTitle: [NSString stringWithFormat:@"%f",location.coordinate.latitude]];
        [pinAnnotation setSubtitle:keyy];


        [self.mapView addAnnotation:pinAnnotation];
        self.annotations[key] = pinAnnotation;

        NSDate *methodFinish = [NSDate date];
        NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:methodStart];
        NSLog(@"executionTime = %f", executionTime);
    }];

}

1 个答案:

答案 0 :(得分:0)

如果您想按半径进行过滤,请尝试使用geofire的圆圈查询。请查看自述文件,了解geofire github页面here上的示例。