zoukankan      html  css  js  c++  java
  • ios中Core Location跟Map Kit的基本使用

    地图类开发应用中,离不开地理位置跟MKMapView的使用,下面就记录下自己在使用这两个东西中学到的。

    不过并不是所有苹果的设备都支持地理位置,我们在使用前应该做个判断,代码如下:

    1 BOOL locationAvailabe = [CLLocationManager locationServicesEnabled];
    2 BOOL magnetometerAvailable = [CLLocationManager headingAvailable];

    在地理位置中,我们用到主要类就是:CLLocationManager,关于它的常见代码如下:

    1 CLLocationManager *locationManager = [[CLLocationManager alloc] init]; 
    2 locationManager.delegate = self;
    3 locationManager.distanceFilter = 1000; // 1km
    4 locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;
    5 if ([CLLocationManager locationServicesEnabled] ) {
    6     [locationManager startUpdatingLocation]; 
    7 } else {
    8     NSLog(@"Location services not enabled."); 
    9 }

    通过设置distancFilter我们可以做到只有位置变动在1公里以上的时候才会进行通知,然后我们通过设置delegate,实现自己相应的逻辑,常见实现的两个协议如下:

    1 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation {
    2     NSLog(@"Moved from %@ to %@", oldLocation, newLocation); 
    3 }
    4 - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {
    5     NSLog(@"Received Core Location error %@", error);
    6     [manager stopUpdatingLocation]; 
    7 } 

    上面就是关于地理位置的常见用法,当然还有CLLocationCoorinate2D类,这是一个关于区域的地理类。

    好了,接下来说说MKMapView这个控件,这是一个地图应用常规控件,常用代码如下:

    1 MKMapView.layer.cornerRadius = 10.0; //园角
    2 MKMapView。showsUserLocation = YES;
    3 [MKMapView setRegion: animated:] //使地图显示哪个区域附近的信息

    如果我们想在地图控件插上大头针,应该怎么做呢,专业术语就是:Annotating Maps,显示效果如下:

    那如何来做到这一点呢,其实关键是我们要实现一个协议,此协议名是:MKAnnotation。

    然后通过如下代码

    1 [MKMapView addAnnotation:]

    把这个annotation加入到MapView中,运行查看就是上面图中的效果了。

  • 相关阅读:
    STM32Cube IDE配置串口发送与接收
    STM32CubeIDE Debug Configurations
    STM32CubeMX FreeRTOS定时器的使用
    单片机处理串口逗号分隔符命令
    自定义任务状态来操作FreeRTOS任务的挂起,恢复,删除
    Halcon WPF C#采集图像区域灰度值
    STM32CubeMX FreeRTOS no definition for "osThreadGetState" 解决办法
    Hyper-V应用
    AutoFixture 数据对象生成器
    visual studio的XAML无法热更新
  • 原文地址:https://www.cnblogs.com/xwang/p/3608913.html
Copyright © 2011-2022 走看看