我是个主张开源的开发者,从今天开始,我给大家分享一下总结的苹果自带的地图-高德地图的一些用法。今天准备跟大家讲一下mapkit的基本用法,废话不多说了,直接上代码,然后再跟大家解释。
//
// ViewController.m
// mapKit
//
// Created by 汤晓波 on 14-11-20.
// Copyright (c) 2014年 tangxiaobo. All rights reserved.
//
#import "ViewController.h"
#import <MapKit/MapKit.h>
@interface ViewController ()<MKMapViewDelegate>
@property (nonatomic, strong)MKMapView *mapView;
//地理编码器
@property (nonatomic, strong)CLGeocoder *geoCode;
@end
@implementation ViewController
- (CLGeocoder *)geoCode{
if (!_geoCode) {
_geoCode = [[CLGeocoder alloc] init];
}
return _geoCode;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
[self setMap];
}
//设置地图
- (void)setMap{
MKMapView *mapView = [[MKMapView alloc] initWithFrame:self.view.frame];
self.mapView = mapView;
[self.view addSubview:mapView];
self.mapView.userTrackingMode = MKUserTrackingModeFollow;//追踪模式
self.mapView.mapType = MKMapTypeStandard;//地图模式(三维,基本等等)
self.mapView.delegate = self;//设置代理
}
#pragma mark MKMapViewDelegate
//位置变化一次就调用一次
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation{
//MKUserLocation大头针模型
CLLocationCoordinate2D coordinate = userLocation.location.coordinate;
NSLog(@"%f --- %f",coordinate.latitude,coordinate.longitude);
//地理编码,根据<span style="font-family: Arial, Helvetica, sans-serif;">userLocation.location获取到地标。</span>
[self.geoCode reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"%d",placemarks.count);
if(placemarks.count == 0) return ;
CLPlacemark *placeMard = [placemarks firstObject];
NSLog(@"%@ -- %@",placeMard.subLocality,placeMard.locality);
userLocation.subtitle = placeMard.subLocality;
userLocation.title = placeMard.locality;
}];
}
@end
这是一个最简单的mapkit的应用,只是简单的将高德地图展示出来。这里有2点需要注意,1,代理方法调用很频繁,一定要慎用。2,注意几个数据模型,CLPlacemark,MKUserLocation,CLLocationCoordinate2D等等,这些数据模型装的都是关于用户的一些位置信息,具体有那些,大家可以直接去苹果的官方文档看。今天就这些了,明天继续。加油加油!!!!我要一天一篇!!!