首页 > 其他分享 >iOS百度地图 定位的实现

iOS百度地图 定位的实现

时间:2023-04-30 11:08:43浏览次数:42  
标签:定位 region iOS userLocation location coordinate mapView 百度




今天发现自己好笨啊。。。一直在搞定位,想为什么会是空的,原来定位也是需要代理去实现的



在初始化地图的时候,也就是在viewDidload里面是这样的


mapView.showsUserLocation = YES;
if (mapView.userLocation.location != nil)
    {
        NSLog(@"定位成功");
        coor = [[mapView.userLocation location] coordinate];
        NSLog(@"%f",coor.latitude);
        NSLog(@"%f",coor.longitude);
    }
    BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake(coor, BMKCoordinateSpanMake(0.02f,0.02f));
    BMKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];
    [mapView setRegion:adjustedRegion animated:YES];



一直以为是这样的呢,因为设定了showUserLocation 在去取到当前的userLocation就好了呢,这样做是不会立马就定位到的,它内部的实现是在子线程去定位,


然后通过代理方法去更新当前的用户位置的,好晕啊,仔细一找 ,就找到了这个更新用户当前位置的代理方法


    1. - (void)mapView:(BMKMapView *)mapView didUpdateUserLocation:(BMKUserLocation *)userLocation;




    那么就去实现它好了,这个时候应该是定位到了用户的位置了,也就是这个userLocation了





      1. mark mapViewDelegate 代理方法  
      2. - (void)mapView:(BMKMapView *)mapView1 didUpdateUserLocation:(BMKUserLocation *)userLocation  
      3. {  
      4.    BMKCoordinateRegion region;  
      5.    region.center.latitude  = userLocation.location.coordinate.latitude;  
      6.    region.center.longitude = userLocation.location.coordinate.longitude;  
      7.    region.span.latitudeDelta  = 0.2;  
      8.    region.span.longitudeDelta = 0.2;  
      9.    if (mapView)  
      10.    {  
      11.        mapView.region = region;  
      12.        NSLog(@"当前的坐标是: %f,%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);  
      13.    }  
      14. }





      总结



      实现定位必须



      1.初始化mapview



      2.设置mapview的showUserLocation的属性为YES



      3.去实现didUpdateUserLocation代理来实现当前位置显示在可视范围内



      小知识的积累,定是大财富的源泉。虚心学习,每天进步一点点。

      标签:定位,region,iOS,userLocation,location,coordinate,mapView,百度
      From: https://blog.51cto.com/u_548275/6237774

      相关文章

      • IOS为每个网请求添加进度标示
        UIViewController的子类,且只有界面才有必要现实进度标示。然后在网络请求的开始和结束调用这个方法1.基于UIViewController做扩展#import@implementationvoid)showProgress{NSLog(@"=======showProgress=========");MBProgressHUD*progressHUD=[[[MBPro......
      • [深入浅出Cocoa]iOS网络编程之Sock…
        一,iOS网络编程层次模型在前文《深入浅出Cocoa之Bonjour网络编程》中我介绍了如何在Mac系统下进行Bonjour编程,在那篇文章中也介绍过Cocoa中网络编程层次结构分为三层,虽然那篇演示的是Mac系统的例子,其实对iOS系统来说也是一样的。iOS网络编程层次结构也分为三层:Cocoa层:NSURL......
      • [iOS]GCD小结
        BriefIntroduction  GCD,全称GrandCentralDispath,是苹果开发的一种支持并行操作的机制。它的主要部件是一个FIFO队列和一个线程池,前者用来添加任务,后者用来执行任务。  GCD中的FIFO队列称为dispatchqueue,它可以保证先进来的任务先得到执行(但不保证一定先执行结束)。 ......
      • IOS实例变量和属性
        在IOS编程中,很多人没有理解实例变量与属性的区别,我根据自己的经验,这这里与大家分享下这里面的区别,下面我写一个简单的例子:.h@interfaceMyController:UIViewController{UILabel*_myLabel;//这里是实例变量声明}@property(nonatomic,retain)UILabel*myLabe......
      • iOS开发 UItableView中的单元…
        iOSiPhone开发UItableView中的单元格背景渐变渐变如果用背景图片,会让你的app臃肿。给APP瘦身,我们可以使用代码来解决渐变的问题。这篇文章是解决表格中的单元格的简便问题,同时解决单元格外边框问题。1:设置好开始颜色与结束颜色。推荐一个小工具,在chrome浏览器上安装一个扩展......
      • iOS数据存储的四种方案对比
        你是用什么方法来持久保存数据的?这是在几乎每一次关于iOS技术的交流或讨论都会被提到的问题,而且大家对这个问题的热情持续高涨。本文主要从概念上把“数据存储”这个问题进行剖析,并且结合各自特点和适用场景给大家提供一个选择的思路,并不详细介绍某一种方式的技术细节。谈到数据......
      • iOS开发UITableView基本使用方法总…
        UITableView基本使用方法1.首先,Controller需要实现两个delegate,分别是UITableViewDelegate和UITableViewDataSource2.然后UITableView对象的delegate要设置为self。3.然后就可以实现这些delegate的一些方法拉。(1)-(NSInteger)numberOfSectionsInTableView:(UITableView*......
      • CSS定位子元素包含特定 class 的父元素
        要定位子元素包含特定class的父元素,可以使用CSS选择器中的:has()选择器,但是这个选择器目前还没有得到广泛的浏览器支持。目前使用:has()选择器的最佳方式是使用jQuery或其他类似的JavaScript库。以下是一个使用jQuery的例子:<divclass="parent"><divclass="child......
      • Vue 异步通信Axios
        使用Axios实现异步通信需要先导入cdn:<scriptsrc="https://unpkg.com/[email protected]/dist/axios.min.js"></script>使用到的数据data.json{"name":"kuang","url":"https://www.bilibili.com/?spm_id_from=333.788.0......
      • python+playwright 学习-56 svg 元素定位
        前言SVG英文全称为ScalablevectorGraphics,意思为可缩放的矢量图,这种元素比较特殊,需要通过name()函数来进行定位。svg元素定位如下看到的svg标签,就是svg元素用普通的标签定位,是无法定位的,如xpath的//svg只能通过name()函数来定位//*[name()="svg"]页面上用多个svg元素如果......