手机
当前位置:查字典教程网 >编程开发 >IOS开发 >iOS开发之离线地图核心代码
iOS开发之离线地图核心代码
摘要:一,效果图。二,工程图。三,代码。ViewController.h#import#import#import"MapLocation.h"@...

一,效果图。

iOS开发之离线地图核心代码1

二,工程图。

iOS开发之离线地图核心代码2

三,代码。

ViewController.h

#import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> #import "MapLocation.h" @interface ViewController : UIViewController <MKMapViewDelegate> { MKMapView *_mapView; NSString *addressString; } @end

ViewController.m

#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //调用系统自带的高德地图 //显示当前某地的离线地图 _mapView = [[MKMapView alloc] init]; _mapView.frame = CGRectMake(0, 40, 320,400); _mapView.delegate = self; _mapView.mapType = MKMapTypeStandard; [self.view addSubview:_mapView]; addressString=@"光启城"; NSLog(@"---addressString---%@",addressString); [self geocodeQuery]; } - (void)geocodeQuery{ if (addressString == nil || [addressString length] == 0) { return; } CLGeocoder *geocoder = [[CLGeocoder alloc] init]; [geocoder geocodeAddressString:addressString completionHandler:^(NSArray *placemarks, NSError *error) { NSLog(@"查询记录数:%ld",[placemarks count]); if ([placemarks count] > 0) { [_mapView removeAnnotations:_mapView.annotations]; } for (int i = 0; i < [placemarks count]; i++) { CLPlacemark* placemark = placemarks[i]; //调整地图位置和缩放比例 MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(placemark.location.coordinate, 10000, 10000); [_mapView setRegion:viewRegion animated:YES]; MapLocation *annotation = [[MapLocation alloc] init]; annotation.streetAddress = placemark.thoroughfare; annotation.city = placemark.locality; annotation.state = placemark.administrativeArea; annotation.zip = placemark.postalCode; annotation.coordinate = placemark.location.coordinate; [_mapView addAnnotation:annotation]; } }]; } #pragma mark Map View Delegate Methods - (MKAnnotationView *) mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>) annotation { MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[_mapView dequeueReusableAnnotationViewWithIdentifier:@"PIN_ANNOTATION"]; if(annotationView == nil) { annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"PIN_ANNOTATION"]; } annotationView.pinColor = MKPinAnnotationColorPurple; annotationView.animatesDrop = YES; annotationView.canShowCallout = YES; return annotationView; } - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { _mapView.centerCoordinate = userLocation.location.coordinate; } - (void)mapViewDidFailLoadingMap:(MKMapView *)theMapView withError:(NSError *)error { NSLog(@"error : %@",[error description]); } @end

MapLocation.h

#import <MapKit/MapKit.h> @interface MapLocation : NSObject<MKAnnotation> //街道信息属性 @property (nonatomic, copy) NSString *streetAddress; //城市信息属性 @property (nonatomic, copy) NSString *city; //州、省、市信息 @property (nonatomic, copy) NSString *state; //邮编 @property (nonatomic, copy) NSString *zip; //地理坐标 @property (nonatomic, readwrite) CLLocationCoordinate2D coordinate; @end

MapLocation.m

//地图调用函数 #import "MapLocation.h" @implementation MapLocation - (NSString *)title { return @"您的位置!"; } - (NSString *)subtitle { NSMutableString *ret = [NSMutableString new]; if (_state) [ret appendString:_state]; if (_city) [ret appendString:_city]; if (_city && _state) [ret appendString:@", "]; if (_streetAddress && (_city || _state || _zip)) [ret appendString:@" "]; if (_streetAddress) [ret appendString:_streetAddress]; if (_zip) [ret appendFormat:@", %@", _zip]; return ret; } @end

【iOS开发之离线地图核心代码】相关文章:

iOS开发:自定义状态栏代码详解

iOS开发之微信聊天工具栏的封装

iOS开发之视图切换

iOS开发之UITableView详解

iOS实现从背景图中取色的代码

iOS开发中实现显示gif图片的方法

IOS多线程开发之线程的状态

iOS开发之触摸事件以及手势

IOS开发:如何挂起主线程

iOS开发:Web应用简单本地化

精品推荐
分类导航