zoukankan      html  css  js  c++  java
  • iOS.定位服务与地图应用.04.使用iOS苹果地图

    #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
    #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
    #import <UIKit/UIKit.h>
    #import <MapKit/MapKit.h>
    #import <CoreLocation/CoreLocation.h>
    #import "MapLocation.h"
    
    @interface T20140621234700ViewController : UIViewController
    
    @property (weak, nonatomic) IBOutlet UITextField *txtQueryKey;
    
    @property (weak, nonatomic) IBOutlet MKMapView *mapView;
    
    - (IBAction)geocodeQuery:(id)sender;
    
    @end
    #import "T20140621234700ViewController.h"
    
    @interface T20140621234700ViewController ()
    
    @end
    
    @implementation T20140621234700ViewController
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        _mapView.mapType = MKMapTypeStandard;
        //    _mapView.mapType = MKMapTypeSatellite;
        _mapView.delegate = self;
    }
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    - (IBAction)geocodeQuery:(id)sender {
        
        if (_txtQueryKey.text == nil || [_txtQueryKey.text length] == 0) {
            return;
        }
        
        CLGeocoder *geocoder = [[CLGeocoder alloc] init];
        [geocoder geocodeAddressString:_txtQueryKey.text completionHandler:^(NSArray *placemarks, NSError *error) {
            
            NSLog(@"查询记录数:%i",[placemarks count]);
            
            if ([placemarks count] > 0) {
                [_mapView removeAnnotations:_mapView.annotations];
            }
            
            for (int i = 0; i < [placemarks count]; i++) {
                
                CLPlacemark* placemark = placemarks[i];
                
                //关闭键盘
                [_txtQueryKey resignFirstResponder];
                
                //调整地图位置和缩放比例
                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 -
    #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
  • 相关阅读:
    Oracle中模拟SQL中的isnull函数
    Delphi:在OnBeforePost事件中取消TDataSet.Post(Delphi: Canceling a TDataSet.Post in an OnBeforePost Event)
    DBGrid的输入焦点控制
    刷新dbgrid 而不失去当前行位置
    MoveTo和MoveBy
    接口及接口测试
    ()文献可视化--vosviewer入门
    给出先序和中序,给一个数找到位置并输出它左子树里最大的数
    Kruskal算法:最小生成树
    Prim算法:最小生成树
  • 原文地址:https://www.cnblogs.com/cqchen/p/3802174.html
Copyright © 2011-2022 走看看