iOS中 百度地图详解

版权声明:本文为博主原创文章,未经博主允许不得转载。

需要准备工作按照下图引进类库

需要添加

添加的两个字符串为:NSLocationWhenInUseUsageDescription  /  NSLocationAlwaysUsageDescription

默认定位设置:

设置工作准备完毕上代码:

指示根视图:

[objc] view plain copy

  1. [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:23/255.0 green:180/255.0 blue:237/255.0 alpha:1]];  
  2. self.window.rootViewController = [MapViewController new];  

MapViewController.m//设置需要的属性

[objc] view plain copy

  1. #import "MapViewController.h"  
  2. #import <MapKit/MapKit.h>  
  3. #import "Mypoint.h"  
  4. #import <CoreLocation/CoreLocation.h>  
  5. @interface MapViewController ()<MKMapViewDelegate,CLLocationManagerDelegate>  
  6. @property (nonatomic, strong) MKMapView *mapView;  
  7. //经度  
  8. @property (nonatomic, strong) UITextField *longitudetext;  
  9. //纬度  
  10. @property (nonatomic, strong) UITextField *latitudeText;  
  11. //经度  
  12. @property (nonatomic, strong) UILabel *longitudeLabel;  
  13. //纬度  
  14. @property (nonatomic, strong) UILabel *latitudelabel;  
  15. //防止标注的button[  
  16. @property (nonatomic, strong) UIButton *button;  
  17. //地址输入  
  18. @property (nonatomic, strong) UITextField *destination;  
  19. //输入地址查询地图  
  20. @property (nonatomic, retain) UIButton *searchButton;  
  21. //可以获取设备当前的经纬度信息  
  22. @property (nonatomic, strong) CLLocationManager *locManager;  
  23. @end  
  24.   
  25. @implementation MapViewController  

调用:

[objc] view plain copy

  1. - (void)viewDidLoad {  
  2.     [super viewDidLoad];  
  3.     self.view.backgroundColor = [UIColor whiteColor];  
  4.     self.locManager = [[CLLocationManager alloc]init];  
  5.     //代理  
  6.     _locManager.delegate = self;  
  7.     //定位精度  
  8.     _locManager.desiredAccuracy = kCLLocationAccuracyBest;  
  9.     //定位频率,10米定位一次  
  10.     CLLocationDistance distance = 10.0;  
  11.     _locManager.distanceFilter = distance;  
  12.     //更新位置  
  13.     [_locManager requestAlwaysAuthorization];  
  14.     [self.locManager startUpdatingLocation];  
  15.     //查询两个地点之间的距离  
  16.     [self countDistance];  
  17.     //调用布置视图  
  18.     [self configureView];  
  19.     [self setMapView];  
  20. }  

//布置视图

[objc] view plain copy

  1. - (void)configureView{  
  2.     //经度  
  3.     self.longitudeLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 20, 40, 30)];  
  4.     self.longitudeLabel.text = @"经度";  
  5.       
  6.     self.longitudetext = [[UITextField alloc]initWithFrame:CGRectMake(40, 20, 120, 30)];  
  7.     self.longitudetext.borderStyle = UITextBorderStyleRoundedRect;  
  8.     //纬度  
  9.     self.latitudelabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 50, 40, 30)];  
  10.     self.latitudelabel.text = @"纬度";  
  11.       
  12.     self.latitudeText = [[UITextField alloc]initWithFrame:CGRectMake(40, 50, 120, 30)];  
  13.     self.latitudeText.borderStyle = UITextBorderStyleRoundedRect;  
  14.     //放置标注按钮  
  15.     self.button = [UIButton buttonWithType:(UIButtonTypeSystem)];  
  16.     self.button.frame = CGRectMake(30, 73, 100, 30);  
  17.     [self.button setTitle:@"放置标注" forState:(UIControlStateNormal)];  
  18.     [self.button addTarget:self action:@selector(annotationAction:) forControlEvents:(UIControlEventTouchUpInside)];  
  19.     //地址输入  
  20.     self.destination = [[UITextField alloc]initWithFrame:CGRectMake(200, 26, 100, 30)];  
  21.     self.destination.borderStyle = UITextBorderStyleRoundedRect;  
  22.     //查询按钮  
  23.     self.searchButton = [UIButton buttonWithType:(UIButtonTypeSystem)];  
  24.     self.searchButton.frame = CGRectMake(200, 46, 100, 30);  
  25.     [self.searchButton setTitle:@"查询" forState:(UIControlStateNormal)];  
  26.     [self.searchButton addTarget:self action:@selector(detailSearchAction:) forControlEvents:(UIControlEventTouchUpInside)];  
  27.       
  28.     [self.view addSubview:self.button];  
  29.     [self.view addSubview:self.latitudelabel];  
  30.     [self.view addSubview:self.longitudeLabel];  
  31.     [self.view addSubview:self.longitudetext];  
  32.     [self.view addSubview:self.latitudeText];  
  33.     [self.view addSubview:self.searchButton];  
  34.     [self.view addSubview:self.destination];  
  35. }  

[objc] view plain copy

  1. - (void)countDistance{  
  2.     CLLocation *loc1 = [[CLLocation alloc]initWithLatitude:34 longitude:113];  
  3.     CLLocation *loc2 = [[CLLocation alloc]initWithLatitude:35 longitude:113];  
  4.     CLLocationDistance distance = [loc1 distanceFromLocation:loc2];  
  5.     NSLog(@"(%@) 和 (%@)的距离为: %f", loc1, loc2, distance);  
  6. }  

#pragma mark - CLLocationManagerDelegate Methods

// 此方法会被频繁调用

[objc] view plain copy

  1. - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations  
  2. {  
  3. //    NSLog(@"didUpdateLocations---%lu", (unsigned long)locations.count);  
  4.     // 用来表示某个位置的地理信息, 比如经纬度, 海拔等等  
  5.     CLLocation *location = locations.lastObject;  
  6.     // location.coordinate.latitude  维度  
  7.     // location.coordinate.longitude 经度  
  8.     NSLog(@"经度 == %f, 维度 == %f", location.coordinate.longitude, location.coordinate.latitude);  
  9.     self.longitudetext.text = [NSString stringWithFormat:@"%f",location.coordinate.longitude];  
  10.     self.latitudeText.text = [NSString stringWithFormat:@"%f",location.coordinate.latitude];  
  11.     // 停止更新位置(不用定位服务时马上停止, 因为非常耗电)  
  12. //    [manager stopUpdatingLocation];  
  13. }  

//调出地图

[objc] view plain copy

  1. - (void)setMapView{  
  2.     //创建地图视图,初始化参数  
  3.     //MKMapTypeStandard 显示街道和道路  
  4.     //MKMapTypeSatellite 显示卫星  
  5.     //MKMapTypeHybrid 显示混合地图  
  6.     self.mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 100, 320, 460)];  
  7.     [self.mapView setMapType:MKMapTypeStandard];  
  8.     //显示用户当前的坐标,打开地图有相应的提示  
  9.     self.mapView.showsUserLocation = YES;  
  10.     //设置地图代理  
  11.     self.mapView.delegate = self;  
  12.     [self.view addSubview:self.mapView];  
  13. }  

#pragma mark 根据输入的经纬度确定位置

//放置标注

[objc] view plain copy

  1. //放置标注  
  2. - (void)annotationAction:(UIButton *)sender{  
  3.     //创建CLLocation 设置经纬度  
  4.     CLLocationCoordinate2D location = CLLocationCoordinate2DMake([[self.latitudeText text]floatValue], [[self.longitudetext text]floatValue] );  
  5.     //创建标题  
  6.     NSString *title = [NSString stringWithFormat:@"%f,%f",location.latitude,location.longitude];  
  7.     Mypoint *myPoint = [[Mypoint alloc]initWithCoordinate:location andTitle:title];  
  8.     //添加标注  
  9.     [self.mapView addAnnotation:myPoint];  
  10.     //放大到标注的位置  
  11.     MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, 0.01, 0.01);  
  12.     [self.mapView setRegion:region];  
  13.     [self showLocation];  
  14. }  

//根据输入的经纬度显示位置

[objc] view plain copy

  1. //根据输入的经纬度显示位置  
  2. - (void)showLocation{  
  3.     //创建CLLocation 设置经纬度  
  4.     CLLocationCoordinate2D location = CLLocationCoordinate2DMake([[self.latitudeText text]floatValue], [[self.longitudetext text]floatValue] );  
  5.     //放大到标注的位置  
  6.     MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, 0.01, 0.01);  
  7.     [self.mapView setRegion:region animated:YES];  
  8. }  

#pragma mark 根据输入的地址搜寻位置

//根据地址输入搜索地图

[objc] view plain copy

  1. //根据地址输入搜索地图  
  2. - (void)detailSearchAction:(UIButton *)search{  
  3.     if (_destination.text == nil || [_destination.text length] == 0) {  
  4.         return;  
  5.     }  
  6.     CLGeocoder *geocode = [[CLGeocoder alloc]init];  
  7.     [geocode geocodeAddressString:_destination.text completionHandler:^(NSArray *placemarks, NSError *error) {  
  8.         if (error || placemarks.count == 0) {  
  9.             NSLog(@"地址不存在");  
  10.         }else{  
  11.             for (CLPlacemark *placemark in placemarks) {  
  12.                 NSLog(@"name=%@ locality=%@ country=%@ postalCode=%@",placemark.name,placemark.locality,placemark.country,placemark.postalCode);  
  13.             }  
  14.             CLPlacemark *firstPlacemark = [placemarks firstObject];  
  15.             CLLocationDegrees latitude = firstPlacemark.location.coordinate.latitude;  
  16.             CLLocationDegrees longitude = firstPlacemark.location.coordinate.longitude;  
  17.             //显示经纬度  
  18.             self.latitudeText.text = [NSString stringWithFormat:@"%.2f",latitude];  
  19.             self.longitudetext.text = [NSString stringWithFormat:@"%.2f",longitude];  
  20.             [self showLocation];  
  21.             [self searchDetailLocationAction];  
  22.         }  
  23.     }];  
  24. }  

//根据地址搜寻位置

[objc] view plain copy

  1. //根据地址搜寻位置  
  2. - (void)searchDetailLocationAction{  
  3.     //创建CLLocation 设置经纬度  
  4.     CLLocationCoordinate2D location = CLLocationCoordinate2DMake([self.latitudeText.text floatValue], [self.longitudetext.text floatValue]);  
  5.     //创建标题  
  6.     NSString *title = [NSString stringWithFormat:@"%f,%f",[self.latitudeText.text floatValue], [self.longitudetext.text floatValue]];  
  7.     Mypoint *myPoint = [[Mypoint alloc]initWithCoordinate:location andTitle:title];  
  8.     //添加标注  
  9.     [self.mapView addAnnotation:myPoint];  
  10.     //放大到标注的位置  
  11.     MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location, 0.01, 0.01);  
  12.     [self.mapView setRegion:region];  
  13. }  

建一个类:

[objc] view plain copy

  1. //.h  
  2. #import <Foundation/Foundation.h>  
  3. #import <MapKit/MapKit.h>  
  4. @interface Mypoint : NSObject<MKAnnotation>  
  5. //实现MKAnnotion协议必须要定义这个属性  
  6. @property (nonatomic,readonly)CLLocationCoordinate2D coordinate;  
  7. //标题  
  8. @property (nonatomic,copy)NSString *title;  
  9.   
  10. //初始化方法  
  11. - (id)initWithCoordinate:(CLLocationCoordinate2D)c andTitle:(NSString *)t;  
  12.   
  13. @end  

[objc] view plain copy

  1. //.m  
  2. #import "Mypoint.h"  
  3.   
  4. @implementation Mypoint  
  5. //初始化方法  
  6. - (id)initWithCoordinate:(CLLocationCoordinate2D)c andTitle:(NSString *)t{  
  7.     if (self = [super init]) {  
  8.         _coordinate = c;  
  9.         _title = t;  
  10.     }  
  11.     return self;  
  12. }  
  13. @end  

最终效果:

关注博主微博每日更新技术:http://weibo.com/hanjunqiang

原文地址:http://blog.csdn.net/qq_31810357/article/details/49847813

时间: 2024-12-01 10:55:11

iOS中 百度地图详解的相关文章

iOS中 百度地图详解 韩俊强的博文

需要准备工作按照下图引进类库 需要添加 添加的两个字符串为:NSLocationWhenInUseUsageDescription  /  NSLocationAlwaysUsageDescription 默认定位设置: 设置工作准备完毕上代码: 指示根视图: [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:23/255.0 green:180/255.0 blue:237/255.0 alpha:1]];

IOS中UIActionSheet使用详解

IOS中UIActionSheet使用方法详解 一.初始化方法 - (instancetype)initWithTitle:(NSString *)title delegate:(id<UIActionSheetDelegate>)delegate cancelButtonTitle:(NSString *)cancelButtonTitle destructiveButtonTitle:(NSString *)destructiveButtonTitle otherButtonTitles:

IOS中Tagged Pointer详解

前言 在2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念.对于64位程序,引入Tagged Pointer后,相关逻辑能减少一半的内存占用,以及3倍的访问速度提升,100倍的创建.销毁速度提升.本文从Tagged Pointer试图解决的问题入手,带领读者理解Tagged Pointer的实现细节和优势,最后指出了使用时的注意事项. 问题 我们先看看原有的对象为

iOS中 支付宝钱包详解/第三方支付

版权声明:本文为博主原创文章,未经博主允许不得转载. 每日更新关注:http://weibo.com/hanjunqiang  新浪微博! 一.在app中成功完成支付宝支付的过程   1.申请支付宝钱包.参考网址:  https://b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=4#ps-tabinfo-hash      这是使用支付宝支付的第一步,合作申请通过之后,会集成一个开发文件.即使不申请也可

iOS中 支付宝钱包详解/第三方支付 韩俊强的博客

每日更新关注:http://weibo.com/hanjunqiang  新浪微博! iOS开发者交流QQ群: 446310206 一.在app中成功完成支付宝支付的过程   1.申请支付宝钱包.参考网址:  https://b.alipay.com/order/productDetail.htm?productId=2014110308141993&tabId=4#ps-tabinfo-hash      这是使用支付宝支付的第一步,合作申请通过之后,会集成一个开发文件.即使不申请也可以下载,

iOS中 断点下载详解 韩俊强的博客

布局如下: 基本拖拉属性: #import "ViewController.h" #import "AFNetworking.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UILabel *progressLabel; @property (weak, nonatomic) IBOutlet UIProgressView *progressView; @property (n

iOS中 断点下载详解

版权声明:本文为博主原创文章,未经博主允许不得转载. 布局如下: 基本拖拉属性: [objc] view plain copy #import "ViewController.h"   #import "AFNetworking.h"      @interface ViewController ()      @property (weak, nonatomic) IBOutlet UILabel *progressLabel;      @property (w

ios-iOS 中百度地图poi搜索中想获取周边一定范围内所有的数据API有吗

问题描述 iOS 中百度地图poi搜索中想获取周边一定范围内所有的数据API有吗 poi搜索,百度地图中貌似默认是必须加上搜索关键词的.现在的需求是,我不要关键词,而是获得周边一定范围内所有的数据,百度现在有这个接口能用吗 解决方案 http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&pcevaname=pc2&da_par=direct&from=webmap&qt=bd&c=131&wd=

iOS开发UIScrollView使用详解

iOS开发UIScrollView使用详解 一.ScrollView常用方法和属性 @property(nonatomic)CGPoint contentOffset; 设置滚动的偏移量 @property(nonatomic)CGSize contentSize; 设置滑动区域 @property(nonatomic,assign) id<UIScrollViewDelegate>      delegate; 设置UIScrollView的代理 @property(nonatomic,ge