#import "SecondViewController.h"
//定位头文件
#import
//地图显示头文件
#import
@interface SecondViewController ()
//地理编码对象
@property (strong, nonatomic)CLGeocoder *geocoder;
@end
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
//1. 初始化
self.geocoder = [[CLGeocoder alloc] init];
//2. 调用方法, 实现定位(一下两个方法, 同时只能执行一个)
[self location1];
[self location2];
}
#pragma mark ------ 确定一个城市的位置 -------
- (void)location1{
[self.geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray * _Nullable placemarks, NSError * _Nullable error) {
//获取第一个地标
CLPlacemark *placeMark = [placemarks firstObject];
//将定位地标, 转换为地图地标
MKPlacemark *MKplaceMark = [[MKPlacemark alloc] initWithPlacemark:placeMark];
//字典中放一个地图类型
NSDictionary *dic = @{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard)};
//初始化地图组
MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:MKplaceMark];
//打开地图, 根据地图类型
[mapItem openInMapsWithLaunchOptions:dic];
}];
}
#pragma mark ------ 确定两个城市的位置 -------
- (void)location2{
[self.geocoder geocodeAddressString:@"北京市" completionHandler:^(NSArray * _Nullable placemarks, NSError * _Nullable error) {
//获取第一个地标
CLPlacemark *CLPlaceMarkBJ = [placemarks firstObject];
//将定位地标转换为地图地标
MKPlacemark *MKPlaceMarkBJ = [[MKPlacemark alloc] initWithPlacemark:CLPlaceMarkBJ];
#注意: 地理的编码一次只能获取一个地理位置的坐标, 若需要同时获取两个位置的地理坐标, 需要将第二个地理编码方法放到第一个地理编码方法的回调函数中进行第二个城市的定位.
[self.geocoder geocodeAddressString:@"石家庄" completionHandler:^(NSArray * _Nullable placemarks, NSError * _Nullable error) {
//获取第一个地标
CLPlacemark *CLPlaceMarkSJZ = [placemarks firstObject];
//将定位地标, 转换为地图地标
MKPlacemark *MKPlaceMarkSJZ = [[MKPlacemark alloc] initWithPlacemark:CLPlaceMarkSJZ];
NSDictionary *dic = @{MKLaunchOptionsMapTypeKey:@(MKMapTypeStandard)};
MKMapItem *item1 = [[MKMapItem alloc] initWithPlacemark:MKPlaceMarkBJ];
MKMapItem *item2 = [[MKMapItem alloc] initWithPlacemark:MKPlaceMarkSJZ];
[MKMapItem openMapsWithItems:@[item1, item2] launchOptions:dic];
}];
}];
}
@end```