iOS自带地图功能

////  KCMainViewController.m//  AppleMap////  Created by Kenshin Cui on 14/3/27.//  Copyright (c) 2014年 Kenshin Cui. All rights reserved.//#import "KCMainViewController.h"#import#import@interface KCMainViewController ()

@property (nonatomic,strong) CLGeocoder *geocoder;

@end

@implementation KCMainViewController

- (void)viewDidLoad {

[super viewDidLoad];

_geocoder=[[CLGeocoder alloc]init];

[self listPlacemark];

}

#pragma mark 在地图上定位

-(void)location{

//根据“北京市”进行地理编码

[_geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray *placemarks, NSError *error) {

CLPlacemark *clPlacemark=[placemarks firstObject];//获取第一个地标

MKPlacemark *mkplacemark=[[MKPlacemark alloc]initWithPlacemark:clPlacemark];//定位地标转化为地图的地标

NSDictionary *options=@{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard)};

MKMapItem *mapItem=[[MKMapItem alloc]initWithPlacemark:mkplacemark];

[mapItem openInMapsWithLaunchOptions:options];

}];

}

-(void)listPlacemark{

//根据“北京市”进行地理编码

[_geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray *placemarks, NSError *error) {

CLPlacemark *clPlacemark1=[placemarks firstObject];//获取第一个地标

MKPlacemark *mkPlacemark1=[[MKPlacemark alloc]initWithPlacemark:clPlacemark1];

//注意地理编码一次只能定位到一个位置,不能同时定位,所在放到第一个位置定位完成回调函数中再次定位

[_geocoder geocodeAddressString:@"郑州市" completionHandler:^(NSArray *placemarks, NSError *error) {

CLPlacemark *clPlacemark2=[placemarks firstObject];//获取第一个地标

MKPlacemark *mkPlacemark2=[[MKPlacemark alloc]initWithPlacemark:clPlacemark2];

NSDictionary *options=@{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard)};

//MKMapItem *mapItem1=[MKMapItem mapItemForCurrentLocation];//当前位置

MKMapItem *mapItem1=[[MKMapItem alloc]initWithPlacemark:mkPlacemark1];

MKMapItem *mapItem2=[[MKMapItem alloc]initWithPlacemark:mkPlacemark2];

[MKMapItem openMapsWithItems:@[mapItem1,mapItem2] launchOptions:options];

}];

}];

}

-(void)turnByTurn{

//根据“北京市”进行地理编码

[_geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray *placemarks, NSError *error) {

CLPlacemark *clPlacemark1=[placemarks firstObject];//获取第一个地标

MKPlacemark *mkPlacemark1=[[MKPlacemark alloc]initWithPlacemark:clPlacemark1];

//注意地理编码一次只能定位到一个位置,不能同时定位,所在放到第一个位置定位完成回调函数中再次定位

[_geocoder geocodeAddressString:@"郑州市" completionHandler:^(NSArray *placemarks, NSError *error) {

CLPlacemark *clPlacemark2=[placemarks firstObject];//获取第一个地标

MKPlacemark *mkPlacemark2=[[MKPlacemark alloc]initWithPlacemark:clPlacemark2];

NSDictionary *options=@{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard),MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving};

//MKMapItem *mapItem1=[MKMapItem mapItemForCurrentLocation];//当前位置

MKMapItem *mapItem1=[[MKMapItem alloc]initWithPlacemark:mkPlacemark1];

MKMapItem *mapItem2=[[MKMapItem alloc]initWithPlacemark:mkPlacemark2];

[MKMapItem openMapsWithItems:@[mapItem1,mapItem2] launchOptions:options];

}];

}];

}


/**********************************************************/

ios开发中常常会用到地图控件MKMapView,可以用如下方法在点击MKMapView中某点的时候获取改点的经纬度:假如声明了一个MKMapView为myMapView1、在地图中添加一个手势,这个手势是一个点击动作,点击时会调用tapPress这个方法

UITapGestureRecognizer *mTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapPress:)];

[myMapView addGestureRecognizer:mTap];[mTap release];

2、接下来就可以在tapPress这个方法中进行转换了

- (void)tapPress:(UIGestureRecognizer*)gestureRecognizer

{

CGPoint touchPoint = [gestureRecognizer locationInView:myMapView];

//这里touchPoint是点击的某点在地图控件中的位置

CLLocationCoordinate2D touchMapCoordinate =[myMapView convertPoint:touchPoint toCoordinateFromView:myMapView];

//这里touchMapCoordinate就是该点的经纬度了}

你可能感兴趣的:(iOS自带地图功能)