地图实现地点查找和导航
2015-12-02 10:31
330 查看
环境:系统版本:
OSX 10.10.2
Xcodel版本:7.1.1
功能:用自带地图实现查找,导航
1.首先需要在info.plist中添加NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription两个属性
导入CoreLocation.framework框架
2.创建CLLocationManager类,启动定位功能
// 定位管理
self.locationManager = [[CLLocationManager alloc]init];
if (![CLLocationManager locationServicesEnabled]) {
NSLog(@"定位服务当前未打开");
return;
}
// 请求用户授权
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
[self.locationManager requestWhenInUseAuthorization];
}else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse){
// 设置代理
self.locationManager.delegate = self;
// 设置定位精度
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// 定位频率,每隔多少米定位一次
CLLocationDistance distance = 10.0; // 十米定位一次
self.locationManager.distanceFilter = distance;
// 启动跟踪定位
[self.locationManager startUpdatingLocation];
}
遵守CLLocationManagerDelegate代理,实现跟踪定位
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;">// </span>跟踪定位代理</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">{</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocation *location = [locations firstObject]; // <span style="line-height: normal; font-family: 'Heiti SC Light';">取出第一个位置</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocationCoordinate2D coordinate = location.coordinate; // <span style="line-height: normal; font-family: 'Heiti SC Light';">位置坐标</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSLog(@"<span style="line-height: normal; font-family: 'Heiti SC Light';">经度:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">纬度:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">海拔:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">航向:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">行走速度:</span>%f",coordinate.longitude,coordinate.latitude,location.altitude,location.course,location.speed);</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> _jinddu = coordinate.longitude;</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> _weidu = coordinate.latitude;</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;"> </span><span style="line-height: normal; font-family: Menlo;">//</span>如果不需要实时定位,使用完即使关闭定位服务</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> [_locationManager stopUpdatingLocation];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</p>
2.根据坐标取得地名
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;">// </span>根据坐标取得地名</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">-(void)getAddressByLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude{</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> //<span style="line-height: normal; font-family: 'Heiti SC Light';">反地理编码</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocation *location=[[CLLocation alloc]initWithLatitude:latitude longitude:longitude];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> [_geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLPlacemark *placemark=[placemarks firstObject];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSLog(@"<span style="line-height: normal; font-family: 'Heiti SC Light';">详细信息</span>:%@",placemark.addressDictionary);</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">
4000
}];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</p>
3.根据地名确定地理坐标
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">-(void)getCoordinateByAddress:(NSString *)address{</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> //<span style="line-height: normal; font-family: 'Heiti SC Light';">地理编码</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> [_geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;"> </span><span style="line-height: normal; font-family: Menlo;">//</span>取得第一个地标,地标中存储了详细的地址信息,注意:一个地名可能搜索出多个地址</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLPlacemark *placemark=[placemarks firstObject];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo; min-height: 16px;"> </p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocation *location=placemark.location;//<span style="line-height: normal; font-family: 'Heiti SC Light';">位置</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLRegion *region=placemark.region;//<span style="line-height: normal; font-family: 'Heiti SC Light';">区域</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSDictionary *addressDic= placemark.addressDictionary;//<span style="line-height: normal; font-family: 'Heiti SC Light';">详细地址信息字典</span>,<span style="line-height: normal; font-family: 'Heiti SC Light';">包含以下部分信息</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *name=placemark.name;//<span style="line-height: normal; font-family: 'Heiti SC Light';">地名</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *thoroughfare=placemark.thoroughfare;//<span style="line-height: normal; font-family: 'Heiti SC Light';">街道</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *subThoroughfare=placemark.subThoroughfare; //<span style="line-height: normal; font-family: 'Heiti SC Light';">街道相关信息,例如门牌等</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *locality=placemark.locality; // <span style="line-height: normal; font-family: 'Heiti SC Light';">城市</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *subLocality=placemark.subLocality; // <span style="line-height: normal; font-family: 'Heiti SC Light';">城市相关信息,例如标志性建筑</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *administrativeArea=placemark.administrativeArea; // <span style="line-height: normal; font-family: 'Heiti SC Light';">州</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *subAdministrativeArea=placemark.subAdministrativeArea; //<span style="line-height: normal; font-family: 'Heiti SC Light';">其他行政区域信息</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *postalCode=placemark.postalCode; //<span style="line-height: normal; font-family: 'Heiti SC Light';">邮编</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *ISOcountryCode=placemark.ISOcountryCode; //<span style="line-height: normal; font-family: 'Heiti SC Light';">国家编码</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *country=placemark.country; //<span style="line-height: normal; font-family: 'Heiti SC Light';">国家</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *inlandWater=placemark.inlandWater; //<span style="line-height: normal; font-family: 'Heiti SC Light';">水源、湖泊</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *ocean=placemark.ocean; // <span style="line-height: normal; font-family: 'Heiti SC Light';">海洋</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSArray *areasOfInterest=placemark.areasOfInterest; //<span style="line-height: normal; font-family: 'Heiti SC Light';">关联的或利益相关的地标</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSLog(@"<span style="line-height: normal; font-family: 'Heiti SC Light';">位置</span>:%@,<span style="line-height: normal; font-family: 'Heiti SC Light';">区域</span>:%@,<span style="line-height: normal; font-family: 'Heiti SC Light';">详细信息</span>:%@",location,region,addressDic);</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> }];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</p>
-(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];
}];
}
2.定位多个地名
- (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];
}];
}];
}
3.实现导航功能
-(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];
}];
}];
}
OSX 10.10.2
Xcodel版本:7.1.1
功能:用自带地图实现查找,导航
1.首先需要在info.plist中添加NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription两个属性
导入CoreLocation.framework框架
2.创建CLLocationManager类,启动定位功能
// 定位管理
self.locationManager = [[CLLocationManager alloc]init];
if (![CLLocationManager locationServicesEnabled]) {
NSLog(@"定位服务当前未打开");
return;
}
// 请求用户授权
if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
[self.locationManager requestWhenInUseAuthorization];
}else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse){
// 设置代理
self.locationManager.delegate = self;
// 设置定位精度
self.locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// 定位频率,每隔多少米定位一次
CLLocationDistance distance = 10.0; // 十米定位一次
self.locationManager.distanceFilter = distance;
// 启动跟踪定位
[self.locationManager startUpdatingLocation];
}
遵守CLLocationManagerDelegate代理,实现跟踪定位
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;">// </span>跟踪定位代理</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">{</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocation *location = [locations firstObject]; // <span style="line-height: normal; font-family: 'Heiti SC Light';">取出第一个位置</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocationCoordinate2D coordinate = location.coordinate; // <span style="line-height: normal; font-family: 'Heiti SC Light';">位置坐标</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSLog(@"<span style="line-height: normal; font-family: 'Heiti SC Light';">经度:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">纬度:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">海拔:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">航向:</span>%f,<span style="line-height: normal; font-family: 'Heiti SC Light';">行走速度:</span>%f",coordinate.longitude,coordinate.latitude,location.altitude,location.course,location.speed);</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> _jinddu = coordinate.longitude;</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> _weidu = coordinate.latitude;</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;"> </span><span style="line-height: normal; font-family: Menlo;">//</span>如果不需要实时定位,使用完即使关闭定位服务</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> [_locationManager stopUpdatingLocation];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</p>
2.根据坐标取得地名
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;">// </span>根据坐标取得地名</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">-(void)getAddressByLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude{</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> //<span style="line-height: normal; font-family: 'Heiti SC Light';">反地理编码</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocation *location=[[CLLocation alloc]initWithLatitude:latitude longitude:longitude];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> [_geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLPlacemark *placemark=[placemarks firstObject];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSLog(@"<span style="line-height: normal; font-family: 'Heiti SC Light';">详细信息</span>:%@",placemark.addressDictionary);</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">
4000
}];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</p>
3.根据地名确定地理坐标
<p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">-(void)getCoordinateByAddress:(NSString *)address{</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> //<span style="line-height: normal; font-family: 'Heiti SC Light';">地理编码</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> [_geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: 'Heiti SC Light';"><span style="line-height: normal; font-family: Menlo;"> </span><span style="line-height: normal; font-family: Menlo;">//</span>取得第一个地标,地标中存储了详细的地址信息,注意:一个地名可能搜索出多个地址</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLPlacemark *placemark=[placemarks firstObject];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo; min-height: 16px;"> </p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLLocation *location=placemark.location;//<span style="line-height: normal; font-family: 'Heiti SC Light';">位置</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> CLRegion *region=placemark.region;//<span style="line-height: normal; font-family: 'Heiti SC Light';">区域</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSDictionary *addressDic= placemark.addressDictionary;//<span style="line-height: normal; font-family: 'Heiti SC Light';">详细地址信息字典</span>,<span style="line-height: normal; font-family: 'Heiti SC Light';">包含以下部分信息</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *name=placemark.name;//<span style="line-height: normal; font-family: 'Heiti SC Light';">地名</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *thoroughfare=placemark.thoroughfare;//<span style="line-height: normal; font-family: 'Heiti SC Light';">街道</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *subThoroughfare=placemark.subThoroughfare; //<span style="line-height: normal; font-family: 'Heiti SC Light';">街道相关信息,例如门牌等</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *locality=placemark.locality; // <span style="line-height: normal; font-family: 'Heiti SC Light';">城市</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *subLocality=placemark.subLocality; // <span style="line-height: normal; font-family: 'Heiti SC Light';">城市相关信息,例如标志性建筑</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *administrativeArea=placemark.administrativeArea; // <span style="line-height: normal; font-family: 'Heiti SC Light';">州</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *subAdministrativeArea=placemark.subAdministrativeArea; //<span style="line-height: normal; font-family: 'Heiti SC Light';">其他行政区域信息</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *postalCode=placemark.postalCode; //<span style="line-height: normal; font-family: 'Heiti SC Light';">邮编</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *ISOcountryCode=placemark.ISOcountryCode; //<span style="line-height: normal; font-family: 'Heiti SC Light';">国家编码</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *country=placemark.country; //<span style="line-height: normal; font-family: 'Heiti SC Light';">国家</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *inlandWater=placemark.inlandWater; //<span style="line-height: normal; font-family: 'Heiti SC Light';">水源、湖泊</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSString *ocean=placemark.ocean; // <span style="line-height: normal; font-family: 'Heiti SC Light';">海洋</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> // NSArray *areasOfInterest=placemark.areasOfInterest; //<span style="line-height: normal; font-family: 'Heiti SC Light';">关联的或利益相关的地标</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> NSLog(@"<span style="line-height: normal; font-family: 'Heiti SC Light';">位置</span>:%@,<span style="line-height: normal; font-family: 'Heiti SC Light';">区域</span>:%@,<span style="line-height: normal; font-family: 'Heiti SC Light';">详细信息</span>:%@",location,region,addressDic);</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;"> }];</p><p style="margin-top: 0px; margin-bottom: 0px; font-size: 14px; line-height: normal; font-family: Menlo;">}</p>
使用苹果自带地图
1.根据单个地名在地图上定位-(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];
}];
}
2.定位多个地名
- (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];
}];
}];
}
3.实现导航功能
-(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];
}];
}];
}
相关文章推荐
- jQuery实现下滑菜单导航效果代码
- jquery实现的仿天猫侧导航tab切换效果
- PHP的栏目导航程序
- 百度地图经纬度转换到腾讯地图/Google 对应的经纬度
- jquery实现向下滑出的二级导航下滑菜单效果
- JS+CSS实现六级网站导航主菜单效果
- JS实现网页顶部向下滑出的全国城市切换导航效果
- js实现显示当前状态的导航效果代码
- javascript实现当前页导航激活的方法
- JS+CSS实现的日本门户网站经典选项卡导航效果
- JS实现自动变化的导航菜单效果代码
- jquery实现红色竖向多级向右展开的导航菜单效果
- jQuery实现的背景动态变化导航菜单效果
- 基于jquery固定于顶部的导航响应浏览器滚动条事件
- jquery动态导航插件dynamicNav用法实例分析
- jQuery+css实现的蓝色水平二级导航菜单效果代码
- jquery实现点击变换导航样式的方法
- jQuery ui实现动感的圆角渐变网站导航菜单效果代码
- jquery实现点击向下展开菜单项(伸缩导航)效果
- jquery实现鼠标点击后展开列表内容的导航栏效果