////? 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{
//根據(jù)“北京市”進(jìn)行地理編碼
[_geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *clPlacemark=[placemarks firstObject];//獲取第一個(gè)地標(biāo)
MKPlacemark *mkplacemark=[[MKPlacemark alloc]initWithPlacemark:clPlacemark];//定位地標(biāo)轉(zhuǎn)化為地圖的地標(biāo)
NSDictionary *options=@{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard)};
MKMapItem *mapItem=[[MKMapItem alloc]initWithPlacemark:mkplacemark];
[mapItem openInMapsWithLaunchOptions:options];
}];
}
-(void)listPlacemark{
//根據(jù)“北京市”進(jìn)行地理編碼
[_geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *clPlacemark1=[placemarks firstObject];//獲取第一個(gè)地標(biāo)
MKPlacemark *mkPlacemark1=[[MKPlacemark alloc]initWithPlacemark:clPlacemark1];
//注意地理編碼一次只能定位到一個(gè)位置驯镊,不能同時(shí)定位粉寞,所在放到第一個(gè)位置定位完成回調(diào)函數(shù)中再次定位
[_geocoder geocodeAddressString:@"鄭州市" completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *clPlacemark2=[placemarks firstObject];//獲取第一個(gè)地標(biāo)
MKPlacemark *mkPlacemark2=[[MKPlacemark alloc]initWithPlacemark:clPlacemark2];
NSDictionary *options=@{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard)};
//MKMapItem *mapItem1=[MKMapItem mapItemForCurrentLocation];//當(dāng)前位置
MKMapItem *mapItem1=[[MKMapItem alloc]initWithPlacemark:mkPlacemark1];
MKMapItem *mapItem2=[[MKMapItem alloc]initWithPlacemark:mkPlacemark2];
[MKMapItem openMapsWithItems:@[mapItem1,mapItem2] launchOptions:options];
}];
}];
}
-(void)turnByTurn{
//根據(jù)“北京市”進(jìn)行地理編碼
[_geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *clPlacemark1=[placemarks firstObject];//獲取第一個(gè)地標(biāo)
MKPlacemark *mkPlacemark1=[[MKPlacemark alloc]initWithPlacemark:clPlacemark1];
//注意地理編碼一次只能定位到一個(gè)位置,不能同時(shí)定位洋措,所在放到第一個(gè)位置定位完成回調(diào)函數(shù)中再次定位
[_geocoder geocodeAddressString:@"鄭州市" completionHandler:^(NSArray *placemarks, NSError *error) {
CLPlacemark *clPlacemark2=[placemarks firstObject];//獲取第一個(gè)地標(biāo)
MKPlacemark *mkPlacemark2=[[MKPlacemark alloc]initWithPlacemark:clPlacemark2];
NSDictionary *options=@{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard),MKLaunchOptionsDirectionsModeKey:MKLaunchOptionsDirectionsModeDriving};
//MKMapItem *mapItem1=[MKMapItem mapItemForCurrentLocation];//當(dāng)前位置
MKMapItem *mapItem1=[[MKMapItem alloc]initWithPlacemark:mkPlacemark1];
MKMapItem *mapItem2=[[MKMapItem alloc]initWithPlacemark:mkPlacemark2];
[MKMapItem openMapsWithItems:@[mapItem1,mapItem2] launchOptions:options];
}];
}];
}
/**********************************************************/
ios開發(fā)中常常會(huì)用到地圖控件MKMapView,可以用如下方法在點(diǎn)擊MKMapView中某點(diǎn)的時(shí)候獲取改點(diǎn)的經(jīng)緯度:假如聲明了一個(gè)MKMapView為myMapView1魏割、在地圖中添加一個(gè)手勢(shì)撇寞,這個(gè)手勢(shì)是一個(gè)點(diǎn)擊動(dòng)作,點(diǎn)擊時(shí)會(huì)調(diào)用tapPress這個(gè)方法
UITapGestureRecognizer *mTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapPress:)];
[myMapView addGestureRecognizer:mTap];[mTap release];
2正勒、接下來就可以在tapPress這個(gè)方法中進(jìn)行轉(zhuǎn)換了
- (void)tapPress:(UIGestureRecognizer*)gestureRecognizer
{
CGPoint touchPoint = [gestureRecognizer locationInView:myMapView];
//這里touchPoint是點(diǎn)擊的某點(diǎn)在地圖控件中的位置
CLLocationCoordinate2D touchMapCoordinate =[myMapView convertPoint:touchPoint toCoordinateFromView:myMapView];
//這里touchMapCoordinate就是該點(diǎn)的經(jīng)緯度了}