zoukankan      html  css  js  c++  java
  • MapKit

    加入MapKit library

    首先得在项目中加入MapKit,如图

    MapView

    先增加一个ViewController,我这里用的storyboard,这个玩意还是挺好用的,比以前用xib好多了。

    然后拖一个mapview上去,如:

    给新增加的ViewController绑定一个class。首先得增加一个class,从uiViewController继承下来。这个很简单,如图

    把新增加的ViewController绑定到这个class,也很easy,发现Xcode还是挺牛的。就是在右边Identity inspector里面的custom class里面改成新增加的类,原来是UIViewController。

    然后给map view控件绑定一个变量,类型是MKMapView

    然后就初始化mapview,显示。代码如下:

    1. - (void)viewDidLoad  
    2. {  
    3.     [super viewDidLoad];  
    4.     // Do any additional setup after loading the view.  
    5.       
    6.     _mapView.mapType = MKMapTypeStandard;//标准模式  
    7.     _mapView.showsUserLocation = YES;//显示自己  
    8.   
    9.     _mapView.zoomEnabled = YES;//支持缩放  
    10.       
    11.       
    12.     CLLocationCoordinate2D pos = {39.931203, 116.395573};//找个坐标,我是用百度坐标抓取弄的。http://api.map.baidu.com/lbsapi/getpoint/  
    13.       
    14.     MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);//以pos为中心,显示2000米  
    15.     MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸  
    16.     [_mapView setRegion:adjustedRegion animated:YES];  
    17.       
    18.   
    19. }  

    我这里使用百度坐标,找了个坐标(直接搜索“百度 坐标”),然后在我们自己的地图里显示。这样运行一下就可以看到:


    Map view delegate 回调

    可以实现协议MKMapViewDelegate, 这样就会有几个回调。

    1. - (void) mapViewWillStartLoadingMap:(MKMapView *)mapView//开始从服务器获取地图数据  
    2. {  
    3.      
    4. }  
    5.   
    6. -(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView//获取数据结束  
    7. {  
    8.       
    9. }  
    10.   
    11. - (void) mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error//获取数据失败了。  
    12. {  
    13.       
    14. }  


    获取设备当前位置并且在地图中显示

    增加一个按钮,点击这个按钮,将显示设备当前位置。点击上面的按钮将显示某个固定位置。

    CLLocationManager,首先使用CLLocationManager来获取设备的当前位置。

    代码也是很简单

    1. //获得自己的当前的位置信息  
    2. - (void) getCurPosition  
    3. {  
    4.     //开始探测自己的位置  
    5.     if (locationManager==nil)  
    6.     {  
    7.         locationManager =[[CLLocationManager alloc] init];  
    8.     }  
    9.       
    10.       
    11.     if ([CLLocationManager locationServicesEnabled])  
    12.     {  
    13.         locationManager.delegate=self;  
    14.         locationManager.desiredAccuracy=kCLLocationAccuracyBest;  
    15.         locationManager.distanceFilter=10.0f;  
    16.         [locationManager startUpdatingLocation];  
    17.     }  
    18. }  


    然后实现回调函数

    1. #pragma mark -- CLLocationManagerDelegate  
    2. - (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations  
    3. {  
    4.     if ([locations count] > 0) {  
    5.         CLLocation* loc = [locations objectAtIndex:0];  
    6.         CLLocationCoordinate2D pos = [loc coordinate];  
    7.           
    8.         NSLog(@"locationManager, longitude: %f, latitude: %f", pos.longitude, pos.latitude);  
    9.           
    10.         if (show == NO) {  
    11.             MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);//以pos为中心,显示2000米  
    12.             MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸  
    13.             [_mapView setRegion:adjustedRegion animated:YES];  
    14.   
    15.             show = YES;  
    16.         }  
    17.     }  
    18. }  

    当设备位置变化时,这个函数会被调用。这样我们就可以根据位置来做一些事情了。这个例子里就在第一次获取位置的时候更新一下地图显示。以设备当前位置为中心,显示2000米。

    完了。贴一下mapview所在的controller代码:

      1. //  
      2. //  KMapViewController.m  
      3. //  MapDemo  
      4. //  
      5. //  Created by Kevin on 14-2-10.  
      6. //  Copyright (c) 2014年 Kevin. All rights reserved.  
      7. //  
      8.   
      9. #import "KMapViewController.h"  
      10.   
      11. @interface KMapViewController ()  
      12.   
      13. @end  
      14.   
      15. @implementation KMapViewController  
      16.   
      17. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
      18. {  
      19.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
      20.     if (self) {  
      21.         // Custom initialization  
      22.     }  
      23.     return self;  
      24. }  
      25.   
      26. - (void)viewDidLoad  
      27. {  
      28.     [super viewDidLoad];  
      29.     // Do any additional setup after loading the view.  
      30.       
      31.     show = NO;  
      32.       
      33.     _mapView.mapType = MKMapTypeStandard;//标准模式  
      34.     _mapView.showsUserLocation = YES;//显示自己  
      35.     _mapView.delegate = self;  
      36.     _mapView.zoomEnabled = YES;//支持缩放  
      37.       
      38.       
      39.     NSString* i = self.Index;  
      40.       
      41.     if([i isEqualToString:@"1"])  
      42.     {  
      43.         CLLocationCoordinate2D pos = {39.931203, 116.395573};//找个坐标,我是用百度坐标抓取弄的。http://api.map.baidu.com/lbsapi/getpoint/  
      44.           
      45.         MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);//以pos为中心,显示2000米  
      46.         MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸  
      47.         [_mapView setRegion:adjustedRegion animated:YES];  
      48.   
      49.     }  
      50.     else  
      51.     {  
      52.         [self getCurPosition];  
      53.     }  
      54.   
      55. }  
      56.   
      57. - (void)didReceiveMemoryWarning  
      58. {  
      59.     [super didReceiveMemoryWarning];  
      60.     // Dispose of any resources that can be recreated.  
      61. }  
      62.   
      63. - (void) dealloc  
      64. {  
      65.       
      66.  //   [super dealloc];  
      67. }  
      68.   
      69. //获得自己的当前的位置信息  
      70. - (void) getCurPosition  
      71. {  
      72.     //开始探测自己的位置  
      73.     if (locationManager==nil)  
      74.     {  
      75.         locationManager =[[CLLocationManager alloc] init];  
      76.     }  
      77.       
      78.       
      79.     if ([CLLocationManager locationServicesEnabled])  
      80.     {  
      81.         locationManager.delegate=self;  
      82.         locationManager.desiredAccuracy=kCLLocationAccuracyBest;  
      83.         locationManager.distanceFilter=10.0f;  
      84.         [locationManager startUpdatingLocation];  
      85.     }  
      86. }  
      87.   
      88. #pragma mark -- MPMapViewDelegate  
      89.   
      90. - (void) mapViewWillStartLoadingMap:(MKMapView *)mapView  
      91. {  
      92.       
      93. }  
      94.   
      95. -(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView  
      96. {  
      97.       
      98. }  
      99.   
      100. - (void) mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error  
      101. {  
      102.       
      103. }  
      104.   
      105. #pragma mark -- CLLocationManagerDelegate  
      106. - (void) locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations  
      107. {  
      108.     if ([locations count] > 0) {  
      109.         CLLocation* loc = [locations objectAtIndex:0];  
      110.         CLLocationCoordinate2D pos = [loc coordinate];  
      111.           
      112.         NSLog(@"locationManager, longitude: %f, latitude: %f", pos.longitude, pos.latitude);  
      113.           
      114.         if (show == NO) {  
      115.             MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(pos,2000, 2000);//以pos为中心,显示2000米  
      116.             MKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];//适配map view的尺寸  
      117.             [_mapView setRegion:adjustedRegion animated:YES];  
      118.   
      119.             show = YES;  
      120.         }  
      121.     }  
      122. }  
      123.   
      124. @end  
  • 相关阅读:
    旋转加载loading和点点加载loadingdemo
    css 点点加载demo
    gulp——myself配置
    AngularJS官网seed目录结构
    CSS content换行技术实现字符animation loading效果
    gulp入门与一些基本设置
    css 图标 旋转中
    【图文教程】WebStorm下使用Github下载以及上传代码
    gulp-uglify的使用
    面试题 ——— 二维数组的查找
  • 原文地址:https://www.cnblogs.com/wxd3652/p/4939054.html
Copyright © 2011-2022 走看看