MKLocalSearch возвращает результаты за пределами региона

Я использую Apple Maps, чтобы получить список адресов в этом районе. Однако, похоже, он возвращает результаты со всего мира, а не из региона карты, который я указываю.

Я использую следующий код и проверил регион, чтобы убедиться, что это «в целом» весь Лондон (см. вложение) для mapView с теми же параметрами. Однако в моих результатах иногда есть места в Германии, США или Южной Америке.

Кто-нибудь может увидеть, что я делаю неправильно?

MKLocalSearchRequest* request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = searchTerm;

CLLocationCoordinate2D cornerCoordinate = CLLocationCoordinate2DMake(51.5007282, -0.1246263);
request.region = MKCoordinateRegionMakeWithDistance(cornerCoordinate, 50000, 50000);

MKLocalSearch* search = [[MKLocalSearch alloc] initWithRequest:request];
[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {

    //results come in here
}];

Регион карты: введите здесь описание изображения


person theDuncs    schedule 12.11.2014    source источник
comment
Документы для свойства региона MKLocalSearch говорят: Указание региона не гарантирует, что все результаты будут внутри региона. Это просто подсказка поисковой системе. Вы можете вручную проверить расстояние до результирующих MKMapItems (mapItem.placemark.coordinate) и отфильтровать по мере необходимости, но это не идеально. Из-за этого и других недостатков MKLocalSearch рассмотрите альтернативы (см. очевидные результаты"> stackoverflow.com/questions/25027729/).   -  person    schedule 12.11.2014


Ответы (2)


Согласно документации:

Указание региона не гарантирует, что все результаты будут внутри региона. Это просто подсказка поисковой системе.

Это облом, но, к сожалению, нет возможности ограничить результаты только указанным регионом.

Вы можете использовать для этого API Google Places: https://developers.google.com/places/webservice/autocomplete

person zvonicek    schedule 16.08.2015

Попробуйте это решение. Здесь я думаю, что проблема связана с указанным вами регионом.

MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc] init];
request.naturalLanguageQuery = searchTerm;
MKCoordinateSpan span = MKCoordinateSpanMake(.1, .1);

CLLocationCoordinate2D cornerCoordinate = CLLocationCoordinate2DMake(51.5007282, -0.1246263);
request.region = MKCoordinateRegionMake(cornerCoordinate, span);
MKLocalSearch *search = [[MKLocalSearch alloc] initWithRequest:request];


[search startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) {
}];
person Kampai    schedule 12.11.2014
comment
Неа. Только что попробовал, и я получаю те же результаты. Спасибо, хотя @Kampai. - person theDuncs; 12.11.2014