【代碼筆記】離線地圖,筆記離線地圖

來源:互聯網
上載者:User

【代碼筆記】離線地圖,筆記離線地圖

一,。

二,工程圖。

三,代碼。

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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.