http://blog.iosxcode4.com/archives/74

☉限制:必须将iPhone的操作系统更新到ios3.0版本,开发使用的SDK也要是SDK 3.0才有內建Mapkit Framework

☉效果画面:

☉步骤说明:
在 地图上每一个记号,都是一個MKAnnotationView,也就是UI。而每一個MKAnnotationView都需要有对应的资料 MKAnnotation,这是Protocal,也就是存储每個座坐标所需要用到的资料的地方。因此,我们要先建立一個使用MKAnnotation的类别。

依照iPhone开发者文件的说明。这个Protocal需要声明三个属性和一个初始化方法。三个属性分別是coordinate、title、subtitle,和一个方法initWithCoords。

下面是MKAnnotation类的代码 POI.h

#import
#import
#import @interface POI : NSObject  {CLLocationCoordinate2D coordinate;NSString *subtitle;NSString *title;
}@property (nonatomic,readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic,retain) NSString *subtitle;
@property (nonatomic,retain) NSString *title;-(id) initWithCoords:(CLLocationCoordinate2D) coords;@end

下面是MKAnnotation类的代码 POI.m

#import "POI.h"@implementation POI@synthesize coordinate,subtitle,title;- (id) initWithCoords:(CLLocationCoordinate2D) coords{self = [super init];if (self != nil) {coordinate = coords; }return self;}- (void) dealloc{[title release];[subtitle release];[super dealloc];
}@end

声明了符合MKAnnotation Protocal的类别后,我们就要在Google Map上建立坐标点。在iPhone上先是Google Map的程序可以參考上一篇博文

接下來,
第一步: 我声明了一个函数createMapPoint创建坐标点。在这个用到了我们在前面声明类别POI(这个符合MKAnnotation Protocal的类别),我们实例化一个POI,接着将坐标点所需的经纬度,标题,子标题等信息都放进去。接着调用

[mapView addAnnotation:poi];

把我們所建立的POI加入地图(MKMapView)的Annotation集合中。放入集合的只是坐标点的资料,这個時候还沒有真正建立坐标点

以下是函数createMapPoint的代码:

#import "POI.h"-(void*) createMapPoint:(MKMapView *)mapView coordinateX:(double)coorX coordinateY:(double)coorYTitle:(NSString*)title Subtitle:(NSString*)subtitle{if(mapView!=nil){//set POI lat and lngCLLocationCoordinate2D p1;POI *poi;if(coorX && coorY){p1.latitude=coorX;p1.longitude = coorY;poi = [[POI alloc] initWithCoords:p1]; if(title!=NULL)poi.title=title;if(subtitle!=NULL)poi.subtitle=subtitle;[mapView addAnnotation:poi];[poi release];}}return NULL;
}

第二部:参考MKMapView的说明文件可以看到viewForAnnotation这个方法,这是MKMapView实际建立坐标点的地方。MKMapView类别在渲染地图的时候会按照Annotation集合中的资料建立坐标点。

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{//方法一:using default pin as a PlaceMarker to display on mapMKPinAnnotationView *newAnnotation = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation1"];newAnnotation.pinColor = MKPinAnnotationColorGreen;newAnnotation.animatesDrop = YES;//canShowCallout: to display the callout view by touch the pinnewAnnotation.canShowCallout=YES;UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];[button addTarget:self action:@selector(checkButtonTapped:event:) forControlEvents:UIControlEventTouchUpInside];newAnnotation.rightCalloutAccessoryView=button;   return newAnnotation;//方法二:using the image as a PlaceMarker to display on map/*MKAnnotationView *newAnnotation=[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"annotation1"];newAnnotation.image = [UIImage imageNamed:@"icon.png"];newAnnotation.canShowCallout=YES;return newAnnotation;*/
}

Annotation 集合中有几个坐标点viewForAnnotation方法就会被执行几次。因此每次viewForAnnotation被执行,我们都要实例化一个MKAnnotationView。 MKMapView接收到MKAnnotationView的实例就会将它先是在地图上。在上面代码中使用了 MKPinAnnotationView是集成自MKAnnotationView,作用就是在地图上显示一个大头钉。你可以用

annotationView.pinColor = MKPinAnnotationColorGreen;

可以设置大头钉的颜色,不过只有红色、紫色、绿色三种。
newAnnotation.canShowCallout=YES;

设定在点大头钉的时候效果。 第10行到第12行动态建立了一個DetailDisclousue类型的按钮,替这个按钮设置了一个UIControlEventTouchUpInside事件,并将它放入气泡视图AccessoryView中。最后,将建立好的坐标回传给 MapView。

被注释的方法二 是直接使用MKAnnotationView建立坐标点,并且设置它的image属性。

- (void)checkButtonTapped:(id)sender event:(id)event{UIAlertView *tmp= [[UIAlertView alloc] initWithTitle:@"hi!" message:@"test" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];[tmp show];[tmp release];
}

MKAnnotationView,MKAnnotation与MKMapView结合使用显示坐标点相关推荐

  1. 【Qt系列】实时显示鼠标位于QGraphicsView或QGraphicsScene坐标点

    演示效果 坐标点的显示在右下角. 前言 在Graphics View框架结构主要包含三个类:场景类(QGraphicsScene).视图类(QGraphicsView)和图元类(QGraphicsIt ...

  2. echarts 折线图上标记独立坐标点

    实现下图所示功能: 在多条折线图中,给定一个独立的点坐标,在图上进行显示(图一),点击该坐标点显示该坐标的位置信息(图二) 具体实现代码: html: <div id="main&qu ...

  3. matlab gui 鼠标选择矩形区域 返回鼠标坐标点

    1.鼠标选择矩形区域 --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, event ...

  4. 用c++定义两个坐标点,计算两点间距离;进而计算线段的面积

    //本程序有三个层次 //第一层(define_class.h):构造坐标点类,颜色和宽度的结构体,线段类 //第二层(function.h):对上一层声明的函数进行定义 //第三层(distance ...

  5. c++求两点的距离利用友元_用c++定义两个坐标点,计算两点间距离;进而计算线段的面积...

    //本程序有三个层次 //第一层(define_class.h):构造坐标点类,颜色和宽度的结构体,线段类 //第二层(function.h):对上一层声明的函数进行定义 //第三层(distance ...

  6. cesium地图添加坐标点

    附上api文档链接 showPoint(){this.pointLayer= new Cesium.CustomDataSource("pointLayer");cViewer.d ...

  7. ArcGIS根据经纬度在地图上添加坐标点

    文章目录 前言 步骤 1.添加底图 2.制作经纬度表格 3.添加数据 4.显示xy数据 (1)显示XY数据对应的字段 (2)添加地理坐标系 5.添加经纬网等作图要素 结果展示与修改 总结 前言 常常需 ...

  8. python点击屏幕坐标_通过Python,如何获取鼠标在屏幕上的X、Y轴坐标点

    最近在开发基于模拟器的微信自动添加好友工具时,需要获取模拟器中相应按钮,在当前屏幕中的X.Y轴坐标点.先前都是通过"Ctrl+Alt+A"截屏的方式 获取.如下图红框部分所示: 由 ...

  9. 在一个圆内随机取若个坐标点(python)

    在一个指定位置的圆内随机取若干个坐标点,num为数量,radius为圆的半径,(centerx, centery)为圆心坐标. 方法一:根据条件判断的随机点产生方法 import random imp ...

  10. Pyecharts Geo在地图上添加坐标点

    Pyecharts Geo在地图上添加坐标点 添加坐标点 输入坐标点 将坐标点添加入系列并配置系列 加一点点小细节给图片美化一下 让坐标点不显示value 调整图例位置,向右靠拢 改变图例选中与非选中 ...

最新文章

  1. mysqldump定时备份数据库
  2. 三大趋势在移动互联网发展
  3. 工业级以太网交换机与普通商用交换机相比,在性能上有哪些优势?
  4. html 页面怎么加载富文本,UILabel加载html富文本
  5. nginx重启命令方法(linux,centos,ubuntu)总结
  6. linux 命令find
  7. 如何进行自动化PDF测试?这里有真正简单明了的方法
  8. WiFiDisplay
  9. python自动添加微信好友_Python实现微信自动通过好友申请并发送加群链接!
  10. Mac谷歌浏览器添加JSONView的插件以提高开发的效率
  11. 微信小程序名片版需要服务器吗,【微信小程序】壹脉智能名片小程序源码V3.5.0+前端+后端+无插件【包更新】...
  12. sqlite3:sqlite3_column 函数
  13. 2. 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时, 奖金可提10%;利润高于10万元, 低于20万元时, 低于10万元的部分按10%提成,...
  14. Beyond compare4 激活和秘钥
  15. win7开启uasp协议_移植win8通用USB驱动到win7上并开启UASP功能!
  16. 每个程序员都应该知道的那些事儿
  17. python外星人入侵添加音效_python外星人入侵游戏打包
  18. 匈牙利算法解指派问题(Java代码)
  19. IT行业里的热门技术
  20. Oracle小知识点之temp表空间

热门文章

  1. Wireshark实战分析之IP协议(二)
  2. 基于连接跟踪机制的状态防火墙的设计与实现
  3. Linux Workqueue
  4. Linux kernel路由机制分析(上)
  5. [linux-内核]内核日志及printk结构浅析
  6. PHP下添加PDO_Pgsql扩展
  7. 九宫幻方(蓝桥)深搜
  8. 如何将response里header的date转化为当地时间_将产品20元利润提升到2000元,靠的是卖体验!...
  9. 电脑手写输入法_5款好用的拼音输入法软件推荐
  10. 学生如何免费使用Jetbrains旗下包含Pycharm等开发工具(中文详细教程)