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

一,效果图。


二,工程图。


三,代码。

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开发之离线地图核心代码 的全部内容, 来源链接: utcz.com/z/337502.html

回到顶部