原文出处:http://phpadvocate.com/blog/2013/01/ios-6-1-simple-example-using-mklocalsearch/
/* MyMapViewController.m */ /** * @author Jonathon Hibbard */ #import "MyMapViewController.h" #import <MapKit/MapKit.h> #import <CoreLocation/CoreLocation.h> #import <AddressBook/AddressBook.h> @interface StoresMapViewController () <MKMapViewDelegate> // Don't forget to hook this up through IB/NiB - You'll also need to set the mapview's delegate to be this object as well... @property (nonatomic, weak) IBOutlet MKMapView *mapView; // LocalSearch Stuff... @property (nonatomic, strong) MKLocalSearch *localSearch; @property (nonatomic, strong) MKLocalSearchRequest *localSearchRequest; @property CLLocationCoordinate2D coords; //@property MKMapItem *currentLocation; @end @implementation StoresMapViewController -(void)viewDidLoad { [super viewDidLoad]; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // // Temporary - change this to use the user's current location or whatever you want... // // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! [self setupCoordsUsingAddress:@"Manchester KY 40962"]; } -(void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; self.localSearch = nil; self.localSearchRequest = nil; } -(void)setupCoordsUsingAddress:(NSString *)address { CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) { if(error) { NSLog(@"FAILED to obtain geocodeAddress String. Error : %@", error); abort(); } else if(placemarks && placemarks.count > 0) { // Find all retail stores... [self issueLocalSearchLookup:@"retail" usingPlacemarksArray:placemarks]; } }]; } // Ex: [self issueLocalSearchLookup:@"grocery"]; -(void)issueLocalSearchLookup:(NSString *)searchString usingPlacemarksArray:(NSArray *)placemarks { // Search 0.250km from point for stores. CLPlacemark *placemark = placemarks[0]; CLLocation *location = placemark.location; self.coords = location.coordinate; // Set the size (local/span) of the region (address, w/e) we want to get search results for. MKCoordinateSpan span = MKCoordinateSpanMake(0.6250, 0.6250); MKCoordinateRegion region = MKCoordinateRegionMake(self.coords, span); [self.mapView setRegion:region animated:NO]; // Create the search request self.localSearchRequest = [[MKLocalSearchRequest alloc] init]; self.localSearchRequest.region = region; self.localSearchRequest.naturalLanguageQuery = searchString; // Perform the search request... self.localSearch = [[MKLocalSearch alloc] initWithRequest:self.localSearchRequest]; [self.localSearch startWithCompletionHandler:^(MKLocalSearchResponse *response, NSError *error) { if(error){ NSLog(@"localSearch startWithCompletionHandlerFailed! Error: %@", error); return; } else { // We are here because we have data! Yay.. a whole 10 records of it too *flex* // Do whatever with it here... for(MKMapItem *mapItem in response.mapItems){ // Show pins, pix, w/e... NSLog(@"Name for result: = %@", mapItem.name); // Other properties includes: phoneNumber, placemark, url, etc. // More info here: https://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKLocalSearch/Reference/Reference.html#//apple_ref/doc/uid/TP40012893 } MKCoordinateSpan span = MKCoordinateSpanMake(0.2, 0.2); MKCoordinateRegion region = MKCoordinateRegionMake(self.coords, span); [self.mapView setRegion:region animated:NO]; } }]; } @end;
相关推荐
style=flat)]( Krishnamurthy/LocalSearchKit)用法要运行示例项目, pod install克隆 repo,然后从 Example 目录运行pod install 。 使用 cocoapods 来设置你的项目。 如果您不使用 cocoapods,则为 Objective-C ...
输入地名,创建一个`MKLocalSearch.Request`,然后使用`MKLocalSearch`发起请求。成功后,解析返回的`MKLocalSearchResponse`获取坐标,然后创建`MKPointAnnotation`并在地图上添加该标注: ```swift let request ...
为了实现地址搜索功能,我们需要使用`MKLocalSearchRequest`和`MKLocalSearch`类。`MKLocalSearchRequest`用于封装用户输入的地址信息,而`MKLocalSearch`则用于执行基于这个请求的本地搜索。 在用户点击搜索按钮后...
我们可以使用`CLLocationManager`的`requestWhenInUseAuthorization()`或`requestAlwaysAuthorization()`方法来请求相应的授权。 ```swift if CLLocationManager.locationServicesEnabled() { locationManager....
用户输入的关键词会被转换为MKLocalSearch.Request对象,然后通过MKLocalSearch发起搜索请求,获取结果后在地图上显示为标注。 CDMapViewDemo,作为项目的主要代码文件,可能包含了以下关键组件: 1. 自定义的...
本文将深入探讨这两个框架的核心概念、使用方法及实际应用。 MapKit是Apple的API,用于在iOS应用中集成地图功能。它提供了丰富的接口,可以显示地图、添加标记、绘制路线、设置覆盖物等。MapKit支持多种地图样式,...
对于地图显示,可以使用`regionDidChangeAnimated`方法来监听地图的移动,只在需要时加载新的地图数据。 以上就是iOS地图定位功能实现的核心知识点,通过这些技术,开发者可以创建出功能丰富的地图应用,为用户提供...
除此之外,源码可能还涉及到地理编码(Geocoding)和反地理编码(Reverse Geocoding)功能,即地址到坐标和坐标到地址的转换,这可以通过`MKLocalSearch`和`CLGeocoder`实现。同时,为了优化用户体验,源码可能包含...
例如,你可以创建一个MKLocalSearchRequest对象,设置其自然语言查询为一个地址,然后使用MKLocalSearch发起请求。完成处理程序会返回一个包含MKMapItem对象的结果数组,每个MKMapItem代表一个匹配的地理位置。 **...
我们将深入探讨相关的知识点,包括MapKit框架、大头针(Annotation)的使用、获取周边地址信息以及集成到Xcode7.1的项目中。 首先,MapKit是Apple提供的一个强大的框架,用于在iOS应用中集成地图功能。它允许开发者...
例如,如果你有一个地址字符串"北京市海淀区中关村大街1号",你可以创建一个MKLocalSearchRequest,设置其naturalLanguageQuery属性为这个地址,然后使用MKLocalSearch来进行搜索,得到的结果会包含对应的经纬度坐标...
MapKit还提供了许多其他功能,如搜索地址(MKLocalSearch)、添加标注(MKPointAnnotation)、显示路线(MKDirections)等。通过组合使用Core Location和MapKit,开发者可以构建出功能丰富的地图应用,满足用户在...
MKLocalSearchRequest和MKLocalSearch可以用于执行这些操作,帮助用户在地图上查找地点或者根据坐标获取详细地址。 5. **路径规划(Directions)**: - MKDirections类提供了计算两点间路线的功能,包括驾车、步行...
6. **地理编码与反地理编码**:如果源码涉及到地理位置的文本输入,可能会使用MapKit的`MKLocalSearchRequest`和`MKLocalSearch`类来实现地理编码(将地址转换为坐标)和反地理编码(将坐标转换为地址)。...
对于地址选择,Android提供了`AutocompleteTextView`,iOS则有`MKLocalSearch`和`UISearchController`,它们支持地理位置搜索和建议。 为了优化用户体验,滚轮滑动效果还需要考虑以下几点: 1. **流畅性**:滚动...
MapKit提供了许多其他功能,如添加标注(`MKAnnotation`)来表示特定地点,使用`MKLocalSearch`进行本地搜索,或通过`MKDirections`计算路径和导航。例如,你可以创建自定义的标注类来展示地图上的兴趣点: ```...
MapKit提供了`MKLocalSearch`类来执行这些操作,这对于搜索目的地和获取其坐标至关重要。 3. **路线规划**:MapKit支持多种交通方式(如驾车、步行、骑行)的路径计算。开发者可能使用`MKDirections`类来请求路线,...
例如,你可以使用`MKLocalSearch`来执行本地搜索,或者使用`MKDirections`来计算两点之间的路线。同时,`MKPolyline`和`MKPolygon`可以用来绘制路径或区域。 总的来说,Swift中的MapKit框架为iOS开发者提供了强大的...
同时,我们还可以利用`MKLocalSearch`进行地点搜索,或者使用`MKDirections`请求路线,将结果展示在地图上。这些功能需要处理请求的回调,以获取并显示搜索结果或导航路线。 在项目"maps-ios-swiftui-main"中,应该...