2014-11-12 6 views
2

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

Я использую следующий код и проверил область, чтобы убедиться, что это «широко» весь Лондон (см. Вложение) для 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 
}]; 

Карта региона: enter image description here

+1

Документов для свойства MKLocalSearch области говорит:. «Указание региона не гарантирует, что результаты будут все внутри региона Это всего лишь намек к поисковой системе. " Вы вручную проверяете расстояние полученных MKMapItems (mapItem.placemark.coordinate) и фильтруете по мере необходимости, но это не идеально. Из-за этого и других недостатков MKLocalSearch рассмотрите альтернативы (см. Http://stackoverflow.com/questions/25027729/mklocalsearch-not-finding-obvious-results?rq=1). – Anna

ответ

0

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

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) { 
}]; 
+0

Нет. Просто попробовал, и я получаю те же результаты. Спасибо, хотя @ Kampai. – theDuncs

2

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

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

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

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