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

前端之家收集整理的这篇文章主要介绍了ios – 使用MKLocalSearch搜索地图上的位置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用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 search
MKLocalSearch *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,Ireland
Coordinate: 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);
    }
原文链接:https://www.f2er.com/iOS/333826.html

猜你在找的iOS相关文章