ios – 使用MKLocalSearch搜索地图上的位置

ios – 使用MKLocalSearch搜索地图上的位置,第1张

概述我想使用MKLocalSearch在地图中搜索.此功能在iOS 6.1中可用.有人知道如何使用这个或任何人都可以举例说明如何使用MKLocalSearch? MKLocalSearchResponse documentation MKLocalSearch的API非常容易理解.最基本的,你 > alloc-init和MKLocalSearchRequest >将其naturalLanguageQu 我想使用MKLocalSearch在地图中搜索.此功能在iOS 6.1中可用.有人知道如何使用这个或任何人都可以举例说明如何使用MKLocalSearch?

MKLocalSearchResponse documentation

解决方法 MKLocalSearch的API非常容易理解.最基本的,你

> alloc-init和MKLocalSearchRequest
>将其naturalLanguagequery设置为某个搜索词
>使用搜索请求初始化MKLocalSearch对象
>告诉本地搜索开始,将其传递给完成处理程序
>对响应中的MKMAPItem对象数组执行某些 *** 作

搜索咖啡馆:

// Create a search request with a string MKLocalSearchRequest *searchRequest = [[MKLocalSearchRequest alloc] init];[searchRequest setNaturalLanguagequery:@"Cafe"];// Create the local search to perform the searchMKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:searchRequest];[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response,NSError *error) {    if (!error) {        for (MKMAPItem *mAPItem in [response mAPItems]) {            NSLog(@"name: %@,Placemark Title: %@",[mAPItem name],[[mAPItem placemark] Title]);        }    } else {        NSLog(@"Search Request Error: %@",[error localizedDescription]);    }}];

您可以为此搜索指定区域:

// Search for Cafes in Paris MKLocalSearchRequest *searchRequest = [[MKLocalSearchRequest alloc] init];[searchRequest setNaturalLanguagequery:@"Cafe"];CLLocationCoordinate2D parisCenter = CLLocationCoordinate2DMake(48.8566667,2.3509871);MKCoordinateRegion parisRegion = MKCoordinateRegionMakeWithdistance(parisCenter,15000,15000);[searchRequest setRegion:parisRegion];

您还可以从用户放大的MKMapVIEw中获取该区域.这将带来更好的结果:

[searchRequest setRegion:self.mapVIEw.region];

响应对象MKLocalSearchResponse包含一个MKMapItem对象的数组(mAPItems)和一个名为boundingRegion的MKCoordinateRegion,它是一个包含所有结果的区域.您可以使用它来设置地图视图以显示所有结果:

[self.mapVIEw setRegion:response.boundingRegion];

MKMAPItem对象数组不能放在地图上(它们用于发送到地图应用程序),但每个对象都包含一个可以添加到地图的地标属性:

[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response,MKAnnotation Title: %@",[[mAPItem placemark] Title]);            NSLog(@"Coordinate: %f %f",[[mAPItem placemark] coordinate].latitude,[[mAPItem placemark] coordinate].longitude);            // Should use a weak copy of self            [self.mapVIEw addAnnotation:[mAPItem placemark]];        }    } else {        NSLog(@"Search Request Error: %@",[error localizedDescription]);    }}];

搜索都柏林在地图视图和日志上放置一个图钉:

name: dublin,Co. dublin,MKAnnotation Title: dublin,IrelandCoordinate: 53.344104 -6.267494

返回的对象中有大量额外的细节,特别是在您搜索业务时.以下是一些:

[localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response,NSError *error) {    if (!error) {        NSLog(@"Results: %@",[response mAPItems]);        MKMAPItem *mAPItem = [[response mAPItems] objectAtIndex:0];        NSLog(@"name:%@ Phone:%@ URL:%@",[mAPItem phoneNumber],[mAPItem url]);        NSLog(@"Placemark: %@",[mAPItem placemark]);        MKPlacemark *placemark = [mAPItem placemark];        NSLog(@"Placemark Address: %@",[placemark addressDictionary]);        MKCoordinateRegion boundingRegion = [response boundingRegion];        NSLog(@"Bounds: %f %f",boundingRegion.span.latitudeDelta,boundingRegion.span.longitudeDelta);    }
总结

以上是内存溢出为你收集整理的ios – 使用MKLocalSearch搜索地图上的位置全部内容,希望文章能够帮你解决ios – 使用MKLocalSearch搜索地图上的位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1103813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存