zoukankan      html  css  js  c++  java
  • 关于原生地图定位的简单操作MapKit的使用

    //

    //  ViewController.m

    //  Demo_1 MKMapView

    //

    //  Created by tareba on 15/12/16.

    //  Copyright © 2015 tanada. All rights reserved.

    //

     

    #import "ViewController.h"

    #import <MapKit/MapKit.h>

    #import "TRAnnotation.h"

    @interface ViewController ()<MKMapViewDelegate>

    @property (weak, nonatomic) IBOutlet MKMapView *mapView;

    /**

     *  相同点:也要征求用户的同意

     */

    @property (nonatomic,strong)CLLocationManager *manager;

     

    - (IBAction)addAnnotation:(UIButton *)sender;

     

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

      //初始化manger

        self.manager=[[CLLocationManager alloc]init];

        //询问 征求用户同意

        [self.manager requestWhenInUseAuthorization];

        //delegate

        self.mapView.delegate=self;

      

        //设置地图不行允许旋转

        self.mapView.rotateEnabled=NO;

        //设置地图的显示类型(卫星/彼岸准地图/混合)

        //self.mapView.mapType=MKMapTypeHybrid;

        //开始定位

        self.mapView.userTrackingMode=MKUserTrackingModeFollow;

    }

    #pragma mark - MapViewDelegate

    //已经定位到用户的位置并且显示完

    - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{

        NSLog(@"维度%f,精度%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

        userLocation.title=@"用户位置";

        userLocation.subtitle=@"描述信息";

    }

    -  (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated{

        NSLog(@"地图即将发生移动");

    }

    //确定地图已经发生移动

    - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{

        NSLog(@"地图已经发生移动");

    }

     

    - (IBAction)addAnnotation:(UIButton *)sender {

        //创建模型类

        //遵循协议

        //.h中声明三个属性1个必须,两个可选

        //添加到地图视图上,(必须遵循MKAnnotation协议)

        CLLocationDegrees latitude = 35.123+arc4random_uniform(10);//0~10

        CLLocationDegrees longitude = 116.125+arc4random_uniform(20);

        TRAnnotation *annotation=[TRAnnotation new];

        annotation.coordinate=CLLocationCoordinate2DMake(latitude, longitude);

        //设置地图视图的显示区域(大头针都显示到视图的中心位置)

        //跨度

        MKCoordinateSpan span=MKCoordinateSpanMake(0.5, 0.52);

        //中心位置 跨度

        MKCoordinateRegion region=MKCoordinateRegionMake(annotation.coordinate, span);

        [self.mapView setRegion:region animated:YES];

        [self.mapView addAnnotation:annotation];

    }

     

    @end

     

     

     

    #import <Foundation/Foundation.h>

    #import <MapKit/MapKit.h>

     

    @interface TRAnnotation : NSObject<MKAnnotation>

    @property (nonatomic, assign) CLLocationCoordinate2D coordinate;

     

    @property (nonatomic, copy) NSString *title;

    @property (nonatomic, copy) NSString *subtitle;

    @end

    追寻最真
  • 相关阅读:
    绑定方式开始服务&调用服务的方法
    采用服务窃听电话示例
    后台服务运行示例
    Android短信监听器——示例
    利用广播实现ip拨号——示例
    Android图片的合成示例
    IIS 7.5 发布Web 网站步骤
    C# 中 多线程同步退出方案 CancellationTokenSource
    UML 类图常用表示方法.
    Socket Receive 避免 Blocking
  • 原文地址:https://www.cnblogs.com/zhao-jie-li/p/5052262.html
Copyright © 2011-2022 走看看