地图框架

使用苹果自带的地图框架,需要在项目中加载MapKit.framework(项目—TARGETS--Build Phases--Link Binary With Libraries),并在头文件中导入#import<MapKit/MapKit.h>

一、MKMapView的常用属性和方法

NSArray *annotations;//保存地图中的大头针

MKCoordinateRegionregion; //显示区域

MKCoordinateRegion是个结构体,包括两个属性

typedefstruct {

CLLocationCoordinate2D center;

MKCoordinateSpan span;

} MKCoordinateRegion;

CLLocationCoordinate2D//显示经纬度

MKCoordinateSpan//显示精度

//设置显示位置,显示在屏幕中心点

CLLocationCoordinate2D coord;

coord.longitude = 113.346196;
//经度

coord.latitude = 23.140563;//纬度

//地图的显示精度,数值越小地图显示越详细

MKCoordinateSpan span;

span.longitudeDelta = 0.1;

span.latitudeDelta = 0.1;

//设置显示区域

[self.mapViewsetRegion:(MKCoordinateRegionMake(coord,
span))];

//点击屏幕上的位置,获取经纬度

- (IBAction)tapAction:(UITapGestureRecognizer*)sender
{

CGPoint p = [senderlocationInView:self.view];

//将屏幕上的点转换为地图坐标

CLLocationCoordinate2D coord = [self.mapViewconvertPoint:ptoCoordinateFromView:self.view];

NSLog(@"coord.longitude:%lf coord.latitude:%lf", coord.longitude,coord.latitude);

}

二、在地图上设置大头针

在地图上显示大头针,苹果是通过遵守一个MapKit框架中MKAnnotation协议来实现的。

1、创建一个继承自NSObject的子类

2、在子类中导入
#import <MapKit/MapKit.h>

3、让子类遵守
MKAnnotation协议,实现协议中的属性和方法

//必须实现

@property(nonatomic,readonly)CLLocationCoordinate2Dcoordinate;

//选择实现

// Title and subtitle for use by selection UI.

@property(nonatomic,copy)NSString*title;

@property(nonatomic,copy)NSString*subtitle;

// Called as a result of dragging an annotation view.

- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate;

4、在地图中添加大头针

//创建一个大头针

XYZAnnotation*ann = [[XYZAnnotationalloc]init];

//设置经纬度等属性

[annsetCoordinate:coord];

ann.title=
@"华师地铁站";

ann.subtitle=
@"这里是华师地铁站";

//往地图上添加一个大头针

[self.mapViewaddAnnotation:ann];

//获取地图中的大头针

NSArray*anns = [self.mapViewannotations];

//移除地图中所有的大头针

[self.mapViewremoveAnnotations:anns];

5、自定义大头针视图

  • 创建一个继承自MKAnnotationView的自定义大头针视图

@interface XYZAnnotationView :MKAnnotationView

@end

#import"XYZAnnotationView.h"

@implementation XYZAnnotationView

- (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier {

self = [super initWithAnnotation:annotationreuseIdentifier:reuseIdentifier];

if (self) {

UIImageView
*imageView = [[UIImageView
alloc]initWithFrame:CGRectMake(-15,
-30,30,30)]; //点击屏幕放置大头针,设置大头针的frame.origin修正偏移

imageView.image = [UIImageimageNamed:@"pink.png"];

[self addSubview:imageView];

}

return self;

}

@end

  • 当前视图控制器遵守 MKMapViewDelegate协议;
  • 设置mapView的委托对象为当前视图控制器(self.mapView.delegate=
    self或者在Storyboard中拖拽);
  • 实现协议方法

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{

static
NSString *annotationViewId = @"annotationView";

//从队列中获取一个annotationView

XYZAnnotationView *annotationView = (XYZAnnotationView *)[self.mapViewdequeueReusableAnnotationViewWithIdentifier:annotationViewId];

//如果队列中没有,则创建一个新的annotationView

if (!annotationView) {

annotationView = [[XYZAnnotationViewalloc]initWithAnnotation:annotationreuseIdentifier:annotationViewId];

}

return annotationView;

}

时间: 2024-10-13 00:25:32

地图框架的相关文章

Android中级篇之百度地图SDK v3.5.0-FragmentMap地图框架[图解SupportMapFragment类]

创建一个基于Fragment的地图框架 SupportMapFragment SupportMapFragment 类,管理地图生命周期. 构造器概要 构造器和说明: SupportMapFragment() 构造函数 方法概要 限定符和类型 方法 说明 BaiduMap getBaiduMap() 获取百度地图控制器,当执行完 onCreateView 函数之后调用,否则返回 null. MapView getMapView() 获取百度地图控件 static SupportMapFragme

MapKit --- iOS中的地图框架

iOS中可以简单地使用MapKit框架来进行地图的相关开发工作. 基本步骤: import MapKit ViewController 继承 MKMapViewDelegate 协议 添加一个MapKit View 准备一个相应的region信息, 即以哪为中心, 方圆多少范围 在mapView中设置该region即可 添加地理位置的标注annotation 地理位置标注添加到map中的相应操作. ViewController import UIKit import MapKit class V

IOS原生地图与高德地图

原生地图 1.什么是LBS LBS: 基于位置的服务   Location Based Service 实际应用:大众点评,陌陌,微信,美团等需要用到地图或定位的App 2.定位方式 1.GPS定位      2.基站定位      3.WIFI定位 3.框架 MapKit:地图框架,显示地图 CoreLocation:定位框架,没有地图时也可以使用定位. 4.如何使用原生地图<MapKit> 和定位<CoreLocation> MapKit: 1) 初始化MapView _map

iOS开发 定位服务与地图

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要实现地图.导航功能,往往需要先熟悉定位功能,在iO

Android地图开发之地图的选择

做lbs开发差不多快2年了,地图相关的产品也差不多做了3个了,用到过的地图包括google地图.高德地图.百度地图.图吧.Osmdroid,今天总结下,方便大家开发时选择合适的地图. 首先说定位模块选择,高德地图.百度地图现在都有了单独的地位sdk,且都支持全球定位,都是非常不错的选择.我现在做的项目对定位要求很高,现在的选择是gps定位使用系统定位方式,基站定位使用百度定位,gps连接成功使用系统定位接口,gps断开切换到百度基站定位. gps定位,百度和高德都用过,但是测试发现没有同类产品统

第3章 用C#编写百度地图Android手机应用程序(第1讲)

示例1--显示地图并为后续内容做准备 1.运行效果 本章共有25个示例,在x86模拟器中运行的效果如下: 下面介绍主要设计步骤. 2.添加资源 (1)drawable-hdpi Resources/ drawable-hdpi下的文件:将下载的示例对应文件夹下的文件全部拖放到该文件夹下,并将所有[生成操作]属性全部设置为“AndroidResource”. (2)layout Resources/layout下的文件:该文件夹下的所有文件的[生成操作]属性全部为“AndroidResource”

iOS8定位与地图

iOS开发系列--地图与定位 转载:http://www.cnblogs.com/kenshincui/ 概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看

ios开发系统地图知识

现在很多社交.电商.团购应用都引入了地图和定位功能,地图功能不再是地图应用和导航应用所特有的.目前地图和定位功能已经大量引入到应用开发中.今天就和大家一起看一下iOS如何进行地图开发. 一.Core Location定位使用 在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用.在Core Location中主要包含了定位.地理编码(包括反编码)功能. 定位是一个很常用的功

ios之定位与地图

概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用 和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个陌生的地方想要查找附近的酒 店.超市等就可以打开软件搜索周边;类似的,还有很多团购软件可以根据你所在的位置自动为你推荐某些商品.总之,目前地图和定位功能已经大量引入到应用开 发中.今天就和大家一起看一下iOS如何进行地图和定位开发. 定位 地图 定位 要 实现地图.导航功能,往往需要先熟悉定位功能