zoukankan      html  css  js  c++  java
  • 【代码笔记】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
    复制代码

     

  • 相关阅读:
    oracle sql developer连接信息的保存位置
    (转) Java EE 6无法安装的解决方法
    如何结合使用 Subversion 和 Eclipse
    ASUS P8H61MLE 硬刷激活win7旗舰版
    pb 版本控制
    Subversion Edge by Collabnet 的用户名密码
    (原)导入证书后报:错误应用程序名称: lmadmin.exe,版本: 11.10.0.9,时间戳: 0x4f02e435
    关于Xendesktop的心得
    Eclipse 3.4插件安装方式
    Java创建线程的两个方法
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/5406867.html
Copyright © 2011-2022 走看看