0

我在 CoreData 中存储了数千个位置,我想搜索Google Maps visibleRegion 中的位置。我以前使用边界框进行搜索,但添加轴承功能会破坏这种类型的查询。我有几个想法,但这一定是一些经过深思熟虑的解决方案的常见问题。我很想看看是否有任何解决方案使用geohashes。

这是我的查询,当方位不是正北时会中断。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(lat > %f AND lat < %f AND lng > %f AND lng < %f)",
                                    [self.googleMap.projection visibleRegion].nearLeft.latitude,
                                    [self.googleMap.projection visibleRegion].farLeft.latitude,
                                    [self.googleMap.projection visibleRegion].nearLeft.longitude,
                                    [self.googleMap.projection visibleRegion].nearRight.longitude
                               ];
4

1 回答 1

0

您可以计算可见区域的轴对齐边界框,然后使用它来查找您的位置。其中一些仍将在实际可见区域之外,但至少您将过滤掉其中的大部分。

中的GMSCoordinateBoundsGMSCoordinateBounds.h可用于使这更容易:

GMSMapView* _mapView = ...;

GMSCoordinateBounds* bounds = 
    [[GMSCoordinateBounds alloc] 
        initWithRegion: [_mapView.projection visibleRegion]];
CLLocationCoordinate2D northEast = bounds.northEast;
CLLocationCoordinate2D southWest = bounds.southWest;

另请注意,当前存在可见区域太大的错误,请参见此处:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=5107

有关该问题的解决方法,请参见此处:

Google Maps iOS SDK:如何从相机的可见区域获取准确的经纬度坐标?

于 2013-04-15T00:24:46.740 回答