MKLocalSearch 返回区域外的结果

Posted

技术标签:

【中文标题】MKLocalSearch 返回区域外的结果【英文标题】:MKLocalSearch returning results outside of region 【发布时间】:2014-11-12 09:58:07 【问题描述】:

我正在使用 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
];

地图区域:

【问题讨论】:

MKLocalSearch 区域属性的文档说:“指定区域并不能保证结果都在该区域内。它只是对搜索引擎的提示。”您可以手动检查生成的 MKMapItems (mapItem.placemark.coordinate) 的距离并根据需要进行过滤,但这并不理想。由于 MKLocalSearch 的这个和其他缺陷,请考虑替代方案(请参阅***.com/questions/25027729/…)。 【参考方案1】:

根据文档:

指定一个区域并不能保证结果都是 区域内。这只是对搜索引擎的提示。

这很糟糕,但不幸的是,没有办法将结果限制在提供的区域内。

您可以考虑为此使用 Google Places API:https://developers.google.com/places/webservice/autocomplete

【讨论】:

【参考方案2】:

试试这个解决方案。在这里,我认为问题是由于您指定的区域。

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

【讨论】:

不。刚刚尝试过,我得到了相同的结果。谢谢@Kampai。

以上是关于MKLocalSearch 返回区域外的结果的主要内容,如果未能解决你的问题,请参考以下文章

DrawingArea:区域外的填充区域

QQuickwidget 抓取窗口区域外的图像

arcgis怎样让行政边界外的区域变白

UITapGestureRecognizer 不响应父视图外的子视图区域

如何裁剪多边形外的区域?

R折线图,绘图区域外的值