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 (nonatomicstrongMKMapView *mapView;  
  7. //经度  
  8. @property (nonatomicstrongUITextField *longitudetext;  
  9. //纬度  
  10. @property (nonatomicstrongUITextField *latitudeText;  
  11. //经度  
  12. @property (nonatomicstrongUILabel *longitudeLabel;  
  13. //纬度  
  14. @property (nonatomicstrongUILabel *latitudelabel;  
  15. //防止标注的button[  
  16. @property (nonatomicstrongUIButton *button;  
  17. //地址输入  
  18. @property (nonatomicstrongUITextField *destination;  
  19. //输入地址查询地图  
  20. @property (nonatomicretainUIButton *searchButton;  
  21. //可以获取设备当前的经纬度信息  
  22. @property (nonatomicstrongCLLocationManager *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(0204030)];  
  4.     self.longitudeLabel.text = @"经度";  
  5.       
  6.     self.longitudetext = [[UITextField alloc]initWithFrame:CGRectMake(402012030)];  
  7.     self.longitudetext.borderStyle = UITextBorderStyleRoundedRect;  
  8.     //纬度  
  9.     self.latitudelabel = [[UILabel alloc]initWithFrame:CGRectMake(0504030)];  
  10.     self.latitudelabel.text = @"纬度";  
  11.       
  12.     self.latitudeText = [[UITextField alloc]initWithFrame:CGRectMake(405012030)];  
  13.     self.latitudeText.borderStyle = UITextBorderStyleRoundedRect;  
  14.     //放置标注按钮  
  15.     self.button = [UIButton buttonWithType:(UIButtonTypeSystem)];  
  16.     self.button.frame = CGRectMake(307310030);  
  17.     [self.button setTitle:@"放置标注" forState:(UIControlStateNormal)];  
  18.     [self.button addTarget:self action:@selector(annotationAction:) forControlEvents:(UIControlEventTouchUpInside)];  
  19.     //地址输入  
  20.     self.destination = [[UITextField alloc]initWithFrame:CGRectMake(2002610030)];  
  21.     self.destination.borderStyle = UITextBorderStyleRoundedRect;  
  22.     //查询按钮  
  23.     self.searchButton = [UIButton buttonWithType:(UIButtonTypeSystem)];  
  24.     self.searchButton.frame = CGRectMake(2004610030);  
  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(0100320460)];  
  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.010.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.010.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.010.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.youkuaiyun.com/qq_31810357/article/details/49847813


内容概要:本文深入探讨了Kotlin语言在函数式编程和跨平台开发方面的特性和优势,结合详细的代码案例,展示了Kotlin的核心技巧和应用场景。文章首先介绍了高阶函数和Lambda表达式的使用,解释了它们如何简化集合操作和回调函数处理。接着,详细讲解了Kotlin Multiplatform(KMP)的实现方式,包括共享模块的创建和平台特定模块的配置,展示了如何通过共享业务逻辑代码提高开发效率。最后,文章总结了Kotlin在Android开发、跨平台移动开发、后端开发和Web开发中的应用场景,并展望了其未来发展趋势,指出Kotlin将继续在函数式编程和跨平台开发领域不断完善和发展。; 适合人群:对函数式编程和跨平台开发感兴趣的开发者,尤其是有一定编程基础的Kotlin初学者和中级开发者。; 使用场景及目标:①理解Kotlin中高阶函数和Lambda表达式的使用方法及其在实际开发中的应用场景;②掌握Kotlin Multiplatform的实现方式,能够在多个平台上共享业务逻辑代码,提高开发效率;③了解Kotlin在不同开发领域的应用场景,为选择合适的技术栈提供参考。; 其他说明:本文不仅提供了理论知识,还结合了大量代码案例,帮助读者更好地理解和实践Kotlin的函数式编程特性和跨平台开发能力。建议读者在学习过程中动手实践代码案例,以加深理解和掌握。
内容概要:本文深入探讨了利用历史速度命令(HVC)增强仿射编队机动控制性能的方法。论文提出了HVC在仿射编队控制中的潜在价值,通过全面评估HVC对系统的影响,提出了易于测试的稳定性条件,并给出了延迟参数与跟踪误差关系的显式不等式。研究为两轮差动机器人(TWDRs)群提供了系统的协调编队机动控制方案,并通过9台TWDRs的仿真和实验验证了稳定性和综合性能改进。此外,文中还提供了详细的Python代码实现,涵盖仿射编队控制类、HVC增强、稳定性条件检查以及仿真实验。代码不仅实现了论文的核心思想,还扩展了邻居历史信息利用、动态拓扑优化和自适应控制等性能提升策略,更全面地反映了群体智能协作和性能优化思想。 适用人群:具备一定编程基础,对群体智能、机器人编队控制、时滞系统稳定性分析感兴趣的科研人员和工程师。 使用场景及目标:①理解HVC在仿射编队控制中的应用及其对系统性能的提升;②掌握仿射编队控制的具体实现方法,包括控制器设计、稳定性分析和仿真实验;③学习如何通过引入历史信息(如HVC)来优化群体智能系统的性能;④探索中性型时滞系统的稳定性条件及其在实际系统中的应用。 其他说明:此资源不仅提供了理论分析,还包括完整的Python代码实现,帮助读者从理论到实践全面掌握仿射编队控制技术。代码结构清晰,涵盖了从初始化配置、控制律设计到性能评估的各个环节,并提供了丰富的可视化工具,便于理解和分析系统性能。通过阅读和实践,读者可以深入了解HVC增强仿射编队控制的工作原理及其实际应用效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值