• MapKit


    iPhone SDK 3.0 MAPKit使用入门(1) 创建一个MKMapView实例by Elton on 2009年06月21日, under iPhone

    iPhone OS 3.0发布了,MAPKit是其中新增的API,但是Apple并没有公布相应的guide,只有一个相关函数的API。 再网上参考了其他人的例子,试着照猫画虎的做了几个例子。
    MAPKit主要的类是MKMapView,它提供了一个嵌入式的地图接口,就像在自带的Maps程序里提供的那样。你可以使用这个类在你的程序中显示地图和操作地图
    当你初始化一个map view(MKMapView的实例)的时候,你需要指定一个region(MKCoordinateRegion类型)给这个地图。你可以通过指定map view实例的region属性来设置它的值。region定义了一个中央点和水平和垂直的距离,这个区域显示的大小和比例是根据一个span来调节的。
    span(MKCoordinateSpan)定义了指定中央点(point)的map能显示多少内容以及比例尺。 一个大的span的值,将可以展现更多的内容和更小的放大级别,反之则展现更细节的内容和更大的放大级别。
    你可以通过设置map view的scrollEnabled 和 zoomEnabled属性来设置是否允许滚动地图和放大缩小地图。
    我们先来看一个例子:
    创建一个utility application应用程序,在MainViewController.h中引入MapKit/MapKit.h头文件,定义一个MKMapView实体变量
     
    #import "FlipsideViewController.h"
    #import <mapKit/MapKit.h>
     
    @interface MainViewController : UIViewController <flipsideViewControllerDelegate> {
            MKMapView *mapView;
    }
     
    - (IBAction)showInfo;
     
    @end
     
    在MainViewController.m中,
     
    #import "MainViewController.h"
    #import "MainView.h"
     
     
    @implementation MainViewController
     
     
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
        if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
            // Custom initialization
        }
        return self;
    }
     
     
     
     // Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
     - (void)viewDidLoad {
     [super viewDidLoad];
             mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
             mapView.showsUserLocation=TRUE;
             [self.view insertSubview:mapView atIndex:0];
     }
     
    就是初始化了一个MKMapView实例,并将它显示在主视图上。

    之后就可以执行了, 你可以看到一个标有你当前位置点的小程序。

    ☉目标:在前一个范例中建立的Google Map上,加上座标点(POIs),当点选座标点会触发对应的event。
    ☉限制:必须将iPhone的作业系统更新到OS 3.0版本,开发使用的SDK也要是SDK 3.0才有内建Mapkit Framework。
    ☉效果画面: 
     

    ☉步骤说明:
    在 地图上每一个座标点,都是一个MKAnnotationView,也就是UI。而每一个MKAnnotationView都需要有对应的资料 MKAnnotation,这是Protocal,也就是储存每个座标点所需要用到的资料的地方。因此,我们要先建立一个使用MKAnnotation的 类别。
    依照iPhone开发者文件的说明。这个Protocal需要宣告三个属性和一个初始化方法。三个属性分别是coordinate、title、subtitle,和一个方法initWithCoords。

     托方法

    //绘制Annotation

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{}
    //地图移动

    - (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated{}  (void)mapView:-(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{}(void)mapViewWillStartLoadingMap:(MKMapView *)mapView{}- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView{}- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error{}

    - (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views{}

    - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{}

  • 相关阅读:
    关于数据源跟事件封装实例
    IOS开发基础知识--碎片27
    IOS开发基础知识--碎片26
    IOS开发基础知识--碎片25
    iOS菜单滚动联动内容区域功能实现
    IOS开发基础知识--碎片24
    iOS仿京东分类菜单之UICollectionView内容
    iOS仿京东分类菜单实例实现
    IOS开发基础知识--碎片23
    通用性好的win2003序列号: (推荐先用这个里面的)
  • 原文地址:https://www.cnblogs.com/mac_arthur/p/1663796.html
Copyright © 2020-2023  润新知