大佬教程收集整理的这篇文章主要介绍了ios – 如何访问MKMapItem的类别或类型,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
谢谢
我担心您只能从MKPlacemark获取地址详细信息.
现在您需要做的是,从MKPlacemark获取地址详细信息,您需要获得任何开源API的帮助,这些API可以帮助您将地址分类为某些标签/注释.
因此,从第三方API,您可以进行神奇的搜索.我没有搜索API / Webservice,但它应该在那里.
目标C代码:
- (void) searchForPlace:(NSString *) keyWord { [[UIApplication sharedApplication] setNetworkActivityInDicatorVisible:YES]; MKLocalSearchrequest *request = [[MKLocalSearchrequest alloc] init]; request.naturalLanguageQuery = keyWord; // @"restaurant" MKCoordinateSpan span = MKCoordinateSpanMake(.1,.1); CLLOCATIOnCoordinate2D LOCATIOn = self.mapView.centerCoordinate; request.region = MKCoordinateRegionMake(LOCATIOn,span); MKLocalSearch *search = [[MKLocalSearch alloc] initWithrequest:request]; [search startWithCompletionHandler: ^(MKLocalSearchResponse *response,NSError *error) { [self.txtSearch setEnabled:YES]; [self removeMapOverlay]; [[UIApplication sharedApplication] setNetworkActivityInDicatorVisible:NO]; if (!error) { // Result found @try { if (response.mapItems && [response.mapItems count] > 0) { for (MKMapItem *item in response.mapItems) { MKPlacemark *placeMark = item.placemark; // Address details NSDictionary *address = placeMark.addressDictionary; NSString *titleString = @""; NSString *subtitleString = @""; NSString *name = @""; NSString *Thoroughfare = @""; NSString *State = @""; NSString *City = @""; NSString *Country = @""; name = [address objectForKey:@"Name"] ? [address objectForKey:@"Name"] : @""; Thoroughfare = [address objectForKey:@"Thoroughfare"] ? [address objectForKey:@"Thoroughfare"] : @""; State = [address objectForKey:@"State"] ? [address objectForKey:@"State"] : @""; City = [address objectForKey:@"City"] ? [address objectForKey:@"City"] : @""; Country = [address objectForKey:@"Country"] ? [address objectForKey:@"Country"] : @""; titleString = [NSString StringWithFormat:@"%@ %@",name,Thoroughfare]; subtitleString = [NSString StringWithFormat:@"%@ %@ %@",State,City,Country]; CustomAnnotation *Annotation = [[CustomAnnotation alloc] initWithtitle@R_415_6964@String subtitle:subtitleString detailURL:item.url LOCATIOn:placeMark.LOCATIOn.coordinate]; [self.mapView addAnnotation:Annotation]; } [self mapView:self.mapView regionDidChangeAnimated:YES]; } } @catch (NSException *exception) { NSLog(@"Exception :%@",exception.description); } } else { NSLog(@"No result found."); } }]; }
SWIFT代码:
func searchForPlace(keyword: String) { UIApplication.sharedApplication().networkActivityInDicatorVisible = true var requset = MKLocalSearchrequest() requset.naturalLanguageQuery = keyword let span = MKCoordinateSpanMake(0.1,0.1) let region = MKCoordinateRegion(center: self.mapView.centerCoordinate,span: span) var search = MKLocalSearch(request: requset) search.startWithCompletionHandler { (var response: MKLocalSearchResponse!,var error: NSError!) -> Void in UIApplication.sharedApplication().networkActivityInDicatorVisible = false if (error != nil) { // Result found if (response.mapItems != nil && response.mapItems.count > 0) { for item: MKMapItem! in response.mapItems as [MKMapItem] { var placeMark = item.placemark as MKPlacemark! // Address details... var address = placeMark.addressDictionary as NSDictionary! var titleString: String! var subtitleString: String! var name: String! var Thoroughfare: String! var State: String! var City: String! var Country: String! var emptyString: String! = " " name = (address.objectForKey("name") != nil ? address.objectForKey("name") : emptyString) as String Thoroughfare = (address.objectForKey("Thoroughfare") != nil ? address.objectForKey("Thoroughfare") : emptyString) as String State = (address.objectForKey("State") != nil ? address.objectForKey("State") : emptyString) as String City = (address.objectForKey("City") != nil ? address.objectForKey("City") : emptyString) as String Country = (address.objectForKey("Country") != nil ? address.objectForKey("Country") : emptyString) as String titleString = String(format: "%@ %@",ThoroughfarE) subtitleString = String(format: "%@ %@ %@",Country) var customAnnotation = CustomAnnotation(coordinate: placeMark.LOCATIOn.coordinate,title: titleString,subtitle: subtitleString,detailURL: item.url) self.mapView.addAnnotation(customAnnotation) } self.mapView(self.mapView,regionDidChangeAnimated: truE) } } } }
以上是大佬教程为你收集整理的ios – 如何访问MKMapItem的类别或类型全部内容,希望文章能够帮你解决ios – 如何访问MKMapItem的类别或类型所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。