二,工程图。
三,代码。
ViewController.h
#import <UIKit/UIKit.h>#import <CoreLocation/CoreLocation.h>#import "MapLocation.h"@interface ViewController : UIViewController<MKMapViewDelegate>{MKMapView *_mapView;NSString *addressString;}@endViewController.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]);}@endMapLocation.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;@endMapLocation.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