Поиск CoreData с картами visibleRegion

У меня есть несколько тысяч местоположений, хранящихся в CoreData, и я хотел бы найти местоположения, которые находятся в пределах Google Карты visibleRegion. Раньше я выполнял поиск с ограничивающей рамкой, но с добавлением функции пеленга прерывает этот тип запроса. У меня есть несколько идей, но это должна быть общая проблема с некоторыми хорошо продуманными решениями. Мне было бы интересно узнать, используют ли какие-либо решения геохеши.

Это мой запрос, который ломается, когда пеленг не на север.

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
                               ];

person jspooner    schedule 14.04.2013    source источник


Ответы (1)


Вы можете рассчитать выровненный по осям ограничивающий прямоугольник видимой области, а затем использовать его для поиска своих местоположений. Некоторые из них по-прежнему будут находиться за пределами фактической видимой области, но, по крайней мере, вы отфильтруете большинство из них.

Чтобы сделать это проще, можно использовать класс GMSCoordinateBounds в GMSCoordinateBounds.h:

GMSMapView* _mapView = ...;

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

Также обратите внимание, что в настоящее время существует ошибка, из-за которой visibleRegion слишком велик, см. здесь:

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

См. здесь обходной путь к этой проблеме:

Google Maps iOS SDK: как получить точные координаты широты и долготы из видимой области камеры?

person Saxon Druce    schedule 15.04.2013
comment
Да, это работает довольно хорошо. Иногда он загружает немного больше или недостаточно, но это кажется приемлемой суммой. - person jspooner; 16.04.2013