地图框架

简介: <div style="font-family:Arial; font-size:14px; line-height:26px">   http://blog.csdn.net/debolee/article/details/44886209<br></div> <div style="font-family:Arial; font-size:14px; line-height:26p
   http://blog.csdn.net/debolee/article/details/44886209

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

一、MKMapView的常用属性和方法
NSArray *annotations;//保存地图中的大头针
MKCoordinateRegion region; //显示区域
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 = [sender locationInView : self . view ];
   
  // 将屏幕上的点转换为地图坐标
   
  CLLocationCoordinate2D  coord = [ self . mapView convertPoint :p toCoordinateFromView : 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 ) CLLocationCoordinate2D coordinate;

// 选择实现
// 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 . mapView annotations ];
//移除地图中所有的大头针
[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;
}

目录
相关文章
|
6月前
|
前端开发 搜索推荐 定位技术
GIS前端—地图标注
GIS前端—地图标注
138 1
|
4月前
|
数据可视化 定位技术 数据格式
Tableau可视化设计案例-07 多边形地图和背景图地图
Tableau可视化设计案例-07 多边形地图和背景图地图
|
9月前
|
定位技术
高德地图进阶开发实战案例(6):添加自定义图片覆盖物图层获取可视范围经纬度的解决方案
高德地图进阶开发实战案例(6):添加自定义图片覆盖物图层获取可视范围经纬度的解决方案
177 0
|
6月前
|
前端开发 数据可视化 定位技术
GIS前端-地图标绘与动画
GIS前端-地图标绘与动画
76 0
|
6月前
|
开发框架 前端开发 JavaScript
GIS前端-地图操作与交互
GIS前端-地图操作与交互
97 0
|
6月前
|
前端开发 JavaScript 定位技术
GIS前端-地图事件编程
GIS前端-地图事件编程
36 0
|
9月前
|
搜索推荐 JavaScript 数据可视化
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
数据可视化大屏高德地图javascript webAPI开发的智慧治安物联网管理系统实战解析(web GIS、3D视图、个性化地图、标注、涟漪动画、自定义弹窗、3D控件)
383 0
|
9月前
|
数据可视化 JavaScript 定位技术
地图开发实战案例:高德地图实现区域掩膜的是地图可视化效果
地图开发实战案例:高德地图实现区域掩膜的是地图可视化效果
379 0
|
编解码 定位技术 数据处理
【从零开始学GIS再到精通GIS】专题图制作-地图渲染-地图整饰
【从零开始学GIS再到精通GIS】专题图制作-地图渲染-地图整饰
【从零开始学GIS再到精通GIS】专题图制作-地图渲染-地图整饰
|
数据可视化 JavaScript 前端开发
gis信息可视化之一Leaflet组件介绍
二维地理信息可视化是展示平面世界的基础,本文将将介绍开源界中的轻量级可视化基础框架Leaflet,介绍其主要功能以及如何使用,最后给出一个简单演示实例。
366 0
gis信息可视化之一Leaflet组件介绍