iPhone应用地图开发教程

移动开发 iOS
iPhone应用地图开发教程是本文要介绍的内容,开发中在处理MKAnnotationView时,都要判断对应annotation是不是MKUserLocation这个显示用户当前位置的蓝点,以避免误操作。

iPhone应用地图开发教程是本文要介绍的内容,文章讲述的是一个有趣的实例。不多说,我们之间来看详细内容介绍。

1,计算两点之间的距离

  1. [locationManager startUpdatingLocation];(已格式化成如12.34 km):  
  2. [NSString stringWithFormat:@"%0.2f km",[userLocation getDistanceFrom:location]/1000]  

2,在处理MKAnnotationView时,都要判断对应annotation是不是MKUserLocation这个显示用户当前位置的蓝点,以避免误操作。

  1. [annotation isKindOfClass:[MKUserLocation class]]  

3、

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

这个delegate函数一般会在给MKMapView对象添加 annotations后马上执行,但执行不会马上结束。如果在它完成之前就调用

  1. [mapView viewForAnnotation:someAnnotation]; 

的话,会返回nil的结果,这时对这个返回的nil做任何操作都不会在屏幕上显示……

4,MKMapView放大缩小时,需要注意的是放大,至少放大2倍以上才会被执行。

  1. - (IBAction)doZoomIn:(id)sender{//放大   
  2.     MKCoordinateRegion region = mMapView.region;   
  3.     regionregion.span.latitudeDelta=region.span.latitudeDelta * 0.4;   
  4.     regionregion.span.longitudeDelta=region.span.longitudeDelta * 0.4;   
  5.     [mapView setRegion:region animated:YES];   
  6. }   
  7. - (IBAction)doZoomOut:(id)sender{//缩小   
  8.     MKCoordinateRegion region = mMapView.region;   
  9.     regionregion.span.latitudeDelta=region.span.latitudeDelta * 1.3;   
  10.     regionregion.span.longitudeDelta=region.span.longitudeDelta * 1.3;   
  11.     [mapView setRegion:region animated:YES];   
  12. }  

5, 下面随便列一些其他没提到的代码,供搜索引擎搜索

  1. CLLocationCoordinate2D coordinate;   
  2. //Location Paris   
  3. coordinate.latitude = 48.856660;   
  4. coordinate.longitude = 2.350996;   
  5. MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(coordinate, distance, distance);   
  6. MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];   
  7. [mapView setRegion:adjustedRegion animated:animated];  

6,问 题:

发现MKAnnotationView的Callout View有bug。

我在后台更新subtitle后,若不手动点一下其他 MKAnnotationView再点回之前已经显示Calloutview的MKAnnotationView的话,那这个 MKAnnotationView的Calloutview里的subtitle就不会被更新……

说清楚点就是:点了某个大头针显示信息后,若这时后台更新了它的subtitle,然后你再点这个大头针会发现它的subtitle显示成了一个空白。这时得点一下其他大头针,再点回来,原来那个大头针的信息才是完整的。

虽然有个notification是 MKAnnotationCalloutInfoDidChangeNotification,但SDK手册里说这个已经不能用了。我尝试用了一下也没有任何效果……
不知道还有其他方法没。

小结:iPhone应用地图开发教程的内容介绍完了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-08 14:58:16

iPhone Xcode iOS

2012-09-24 09:46:20

JavaScriptJSHTML5

2011-08-08 18:19:09

iPhone音频播放

2011-08-10 10:23:20

iPhoneArchivingNSCoder

2011-08-15 13:44:07

iPhone开发UITableView

2011-08-10 15:48:10

iPhone网络

2011-08-02 17:37:01

IPhone开发 环境搭建

2011-07-08 16:02:24

iphone

2011-08-10 18:24:22

iPhone 图形 绘图

2011-08-09 17:29:29

iPhone文件屏幕

2011-08-08 10:10:14

iPhone开发 图片 方法

2011-08-08 16:56:44

iPhone 字符处理 视图

2011-08-10 10:10:21

iPhoneUIPopoverCo

2011-07-19 09:58:36

2011-07-19 09:46:38

2011-07-18 09:35:29

iPhone 框架

2011-07-21 10:29:18

iPhone 开发

2011-08-11 10:03:43

iPhonecocoaNSRunLoop

2011-08-05 14:48:06

iPhone应用 异步队列

2011-08-18 10:39:46

iPhone开发界面
点赞
收藏

51CTO技术栈公众号