IOS 苹果地图 显示地图

.h

-------------------------------------------------------------------------------------------

//

//  ViewController.h

//  MyMap

//

//  Created by tian on 13-11-18.

//  Copyright (c) 2013 cq. All rights reserved.

//


#import <UIKit/UIKit.h>

#import <MapKit/MapKit.h>


@interface ViewController :UIViewController<MKMapViewDelegate>

@property (weak, nonatomic) IBOutletUITextField *txtQueryKey;

@property (weak, nonatomic) IBOutletMKMapView *mapView;

- (IBAction)geocodeQuery:(id)sender;


@end


.m

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//

//  ViewController.m

//  MyMap

//

//  Created by tian on 13-11-18.

//  Copyright (c) 2013 cq. All rights reserved.

//


#import "ViewController.h"

#import "MapLocation.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad

{

    [superviewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    ;

    if ([CLLocationManagerlocationServicesEnabled]) {

        self.mapView.mapType = MKMapTypeStandard;

       self.mapView.delegate =self;

        self.mapView.showsUserLocation =YES;

        [self.mapViewsetUserTrackingMode:MKUserTrackingModeFollowanimated:YES];

    }

}


- (void)didReceiveMemoryWarning

{

    [superdidReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


- (IBAction)geocodeQuery:(id)sender {  //标注动作 进行地理信息编码

    

   if (self.txtQueryKey.text ==nil || self.txtQueryKey.text.length ==0) {

       return;

    }

   CLGeocoder *geocoder = [[CLGeocoderalloc] init];

    [geocodergeocodeAddressString:self.txtQueryKey.textcompletionHandler:^(NSArray *placemarks,NSError *error){//地理信息编码

       NSLog(@"查询记录数:%i",[placemarks count]);

       if ([placemarks count] >0) {

            [_mapViewremoveAnnotations:self.mapView.annotations];

        }

    for (int i=0; i < [placemarkscount]; i++) {

        CLPlacemark *placemark = placemarks[i];

        //关闭键盘

         [self.txtQueryKeyresignFirstResponder];

         

         //调整地图位置和缩放比例

        MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(placemark.location.coordinate,10000, 10000);//placemark指定了目标区域的中心点,第二个参数 南北的跨度,第三个参数目标区域的东西跨度

         [self.mapViewsetRegion:viewRegion animated:YES];//重新设置地图视图的显示区域

         


         /*

           地标对象CLPlacemark对象取出,放入到MapLocation对象中

         */

         //MKPinAnnotationView视图中,只能接受MKAnnotation协议类,而地标类CLPlacemark没有实现MKAnnotation协议

        MapLocation *annotation = [[MapLocationalloc] init];  //地图标注点类

         annotation.streetAddress = placemark.thoroughfare;

         annotation.city = placemark.locality;

         annotation.state = placemark.administrativeArea;

         annotation.zip = placemark.postalCode;

         annotation.coordinate = placemark.location.coordinate;

         

         [self.mapViewaddAnnotation:annotation];//把标注点 MapLocation对象添加到地图视图上。一旦该方法被调用,地图视图委托方法mapView:viewForAnnotaion:就会被回调

     }

    }];

}


- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{ //给地图添加标注是被回调

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[self.mapViewdequeueReusableAnnotationViewWithIdentifier:@"PIN_ANNOTATION"];

   if (annotationView == nil) {

        annotationView = [[MKPinAnnotationViewalloc] initWithAnnotation:annotationreuseIdentifier:@"PIN_ANNOTATION"];

    }

    annotationView.pinColor =MKPinAnnotationColorPurple;  //大头针颜色是紫色

    annotationView.animatesDrop =YES;  //添加标注时,以动画的形式显示

    annotationView.canShowCallout =YES; //点击大头针,会出现一个气泡

   return annotationView;

    

}


- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error{

   NSLog(@"error:%@",[errordescription]);

}


- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{

    self.mapView.centerCoordinate = userLocation.location.coordinate;

}

@end



标注

.h

-----------------------------------------------------------------------------------------------

//

//  MapLocation.h

//  MyMap

//

//  Created by tian on 13-11-18.

//  Copyright (c) 2013 cq. All rights reserved.

//


#import <Foundation/Foundation.h>

#import <MapKit/MapKit.h>



@interface MapLocation :NSObject<MKAnnotation>

//@property (nonatomic,readwrite) CLLocationCoordinate2D coordinate;

@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


.m

------------------------------------------------------------------------------------

//

//  MapLocation.m

//  MyMap

//

//  Created by tian on 13-11-18.

//  Copyright (c) 2013 cq. All rights reserved.

//


#import "MapLocation.h"


@implementation MapLocation


- (NSString *)title{

    return@"你的位置";

}


- (NSString *)subtitle{

    NSMutableString *ret = [NSMutableStringnew];

   if (self.state) {

        [retappendString:self.state];

    }

   if (self.city) {

        [retappendString:self.city];

    }

   if (self.city &&self.state) {

        [retappendString:@","];

    }

   if (self.streetAddress && (self.city ||self.state ||self.zip)) {

        [retappendString:@""];

    }

    if (self.streetAddress) {

        [retappendString:self.streetAddress];

    }

   if (self.zip) {

        [retappendFormat:@", %@",self.zip];

    }

   return ret;

}


@end


例子下载:
http://download.csdn.net/detail/woshichongyouren/6573403

你可能感兴趣的:(ios,地图,苹果)