- 浏览: 236455 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lanzhiyuan:
楼主还混这里不?NSData *data = [NSURLCo ...
[转] 为UIWebView实现离线浏览 -
hyc4117:
#define OpenSSLRSAPublicKeyFile ...
IOS openssl rsa encrypt/decrypt -
guogongjun:
确实有效,不错,感谢啦大神
[转]安装openfire后admin无法登录管理控制平台 -
xiongyoudou1:
怎么办,而且你那下载的demo和你讲解的不是一样
[转] 为UIWebView实现离线浏览 -
xiongyoudou1:
有问题。执行到方法NSData *data = [NSURLC ...
[转] 为UIWebView实现离线浏览
在MKMapView中加pin其实就是加入MKAnnonation, 可以加入服和MKAnnonation协议的pin,下面展示一下方法。
1.首先创建一个服和MKAnnonation协议的委托类
2. 实例化该委托对像,加入到MKMapView中。
另一处介绍
修改viewDidLoad方法
注意:无论是自定义的MKAnnotationView还是标准的,一旦addAnnotation to MapView,如何更新它在地图上的位置呢?更新MKAnnotation protocol中的coordinate可以做到吗? 如果是手动更新位置是不可以让它在地图上移动的。请看官网文档 ,其中有一段描述:
手动更新后必须用KVO的方式通知系统,不然系统是不知道更新位置的。如何通知道呢,其实NSObject中有这样的方法willChangeValueForKey and didChangeValueForKey。如你写了个方法更新pin位置,如下:
IOS4中更新更简单,只需要调用- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate;这个方法就可以自动更新了。
1.首先创建一个服和MKAnnonation协议的委托类
@interface AnnotationDelegate : NSObject <MKAnnotation> { CLLocationCoordinate2D coordinate; } @property (nonatomic, readonly) CLLocationCoordinate2D coordinate; - (id) initWithCoordinate:(CLLocationCoordinate2D)coord; @end @implementation AnnotationDelegate @synthesize coordinate; - (id) initWithCoordinate:(CLLocationCoordinate2D)coord { coordinate.latitude = coord.latitude; coordinate.longitude = coord.longitude; return self; } @end
2. 实例化该委托对像,加入到MKMapView中。
view plaincopy to clipboardprint? AnnotationDelegate * annotationDelegate = [[[AnnotationDelegate alloc] initWithCoordinate:coordinate] autorelease]; [self._mapView addAnnotation:annotationDelegate];
另一处介绍
#import <Foundation/Foundation.h> #import <MapKit/MKAnnotation.h> @interface DisplayMap : NSObject <MKAnnotation>{ CLLocationCoordinate2D coordinate; NSString *title; NSString *subtitle; } @property (nonatomic, assign) CLLocationCoordinate2D coordinate; @property (nonatomic, copy) NSString *title; @property (nonatomic, copy) NSString *subtitle; @end #import "DisplayMap.h" @implementation DisplayMap @synthesize coordinate,title,subtitle; -(void)dealloc{ [title release]; [super dealloc]; } @end
修改viewDidLoad方法
- (void)viewDidLoad { [super viewDidLoad]; //mapView.showsUserLocation=YES; self.mapView.delegate=self; CLLocationManager *locationManager = [[CLLocationManager alloc] init];//创建位置管理器 locationManager.delegate=self;//设置代理 locationManager.desiredAccuracy=kCLLocationAccuracyBest;//指定需要的精度级别 locationManager.distanceFilter=1000.0f;//设置距离筛选器 [locationManager startUpdatingLocation];//启动位置管理器 MKCoordinateRegion theRegion = { {0.0, 0.0 }, { 0.0, 0.0 } }; theRegion.center=[[locationManager location] coordinate]; [locationManager release]; [mapView setZoomEnabled:YES]; [mapView setScrollEnabled:YES]; theRegion.span.longitudeDelta = 0.01f; theRegion.span.latitudeDelta = 0.01f; [mapView setRegion:theRegion animated:YES]; DisplayMap *ann = [[DisplayMap alloc] init]; ann.title = @"欧陆经典"; ann.subtitle = @"vsp"; //地点名字 ann.coordinate = theRegion.center; [mapView addAnnotation:ann]; } - (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation { MKPinAnnotationView *pinView = nil; if(annotation != mapView.userLocation) { static NSString *defaultPinID = @"com.invasivecode.pin"; pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID]; if ( pinView == nil ) pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease]; pinView.pinColor = MKPinAnnotationColorRed; pinView.canShowCallout = YES; pinView.animatesDrop = YES; } else { [mapView.userLocation setTitle:@"欧陆经典"]; [mapView.userLocation setSubtitle:@"vsp"]; } return pinView; }
注意:无论是自定义的MKAnnotationView还是标准的,一旦addAnnotation to MapView,如何更新它在地图上的位置呢?更新MKAnnotation protocol中的coordinate可以做到吗? 如果是手动更新位置是不可以让它在地图上移动的。请看官网文档 ,其中有一段描述:
“Important: When you implement the coordinate property in your class, it is recommended that you synthesize its creation. If you choose to implement the methods for this property yourself, or if you manually modify the variable underlying that property in other parts of your class after the annotation has been added to the map, be sure to send out key-value observing (KVO) notifications when you do. Map Kit uses KVO notifications to detect changes to the coordinate, title, and subtitle properties of your annotations and make any needed changes to the map display. If you do not send out KVO notifications, the position of your annotations may not be updated properly on the map.For more information about how to implement KVO-compliant accessor methods, see Key-Value Observing Programming Guide.” |
手动更新后必须用KVO的方式通知系统,不然系统是不知道更新位置的。如何通知道呢,其实NSObject中有这样的方法willChangeValueForKey and didChangeValueForKey。如你写了个方法更新pin位置,如下:
view sourceprint?-(void)UpdateCoord:(CLLocationCoordinate2D)newCoord { [self willChangeValueForKey:@"coordinate"]; coordinate = newCoord; [self didChangeValueForKey:@"coordinate"]; }
IOS4中更新更简单,只需要调用- (void)setCoordinate:(CLLocationCoordinate2D)newCoordinate;这个方法就可以自动更新了。
- BigHeadTip.zip (938.1 KB)
- 下载次数: 30
发表评论
-
ios 开发技术
2015-01-09 11:59 739引用 主题:xcode 6制作动态&静态库 连接:ht ... -
ios 错误合集(updated!)
2015-01-09 11:57 794引用 错误:dyld: Library not loaded ... -
几个不错的xcode插件
2014-09-11 13:33 63171、代码补全插件 http://alcatraz.io 2、 ... -
xcode 插件目录
2014-09-11 13:14 455~/Library/Application\ Suppor ... -
GCD 倒计时
2014-08-19 10:00 1006-(void)startTime{ __bloc ... -
Eventkit使用案例
2014-02-15 16:06 3196- (void)createNewEventAndNewR ... -
ios 应用内跳转到系统设置界面的最好写法
2013-04-24 11:43 10160如下是跳转到系统设置诸多界面的url prefs:roo ... -
beeframework "___gxx_personality_sj0", referenced from:错误解决
2013-04-17 13:50 1837到Bee_Precompile.h 找到如下一行: #de ... -
pod update/install git pull 443错误解决
2013-01-22 18:38 2348自从12306.cn抢票插件搞爆github服务器以后,我就再 ... -
[转]如何编写一个CocoaPods的spec文件
2012-12-27 16:25 14304本文转自http://ishalou.com/blog/201 ... -
[转]How to use NSAttributedString in iOS 6
2012-12-25 16:09 2610本文转自:http://soulwithmobiletechn ... -
mac上的小工具(updated)
2012-12-24 18:05 1013mac上显示隐藏文件的命令,如果要隐藏则 -bool fals ... -
github README.md 编辑技巧小结 (updated)
2012-12-18 11:39 20641.文字连接 [文字](http://ace.ajax.org ... -
iOS 怎样更方便使用第三方框架
2012-11-29 12:45 1607管理第三方库越来越成为每个程序员的基本工作,因为每次都要去加入 ... -
CocoaPods:管理 Objective-C 專案裡頭各種 Library 關聯性最棒的方式
2012-11-26 14:53 1040介绍: 开发应用的时候第三方的库是不可缺少的,它能提高开发的 ... -
转载:用HTML5/CSS3/JS开发Android/IOS应用框架大全
2012-11-22 15:16 1257现在,用js调用本地代码已经不是一件新鲜事,已经有成熟的库来做 ... -
core data 分页查询
2012-11-07 11:26 1527NSFetchRequest *request = [[N ... -
[转]从Flurry导出数据
2012-10-17 10:51 1176有时我们需要一些详细 ... -
AFNetworking multipart upload
2012-10-12 14:52 5433+ (NSDictionary*)parametersOf ... -
IOS openssl rsa encrypt/decrypt
2012-09-29 15:15 6379对OpenSSL RSA加解密的封 ...
相关推荐
在iOS中,地图功能主要通过苹果的MapKit框架来实现,而大头针(Annotation)是MapKit中用于在地图上标记特定位置的重要元素。默认情况下,大头针显示为红色,并有一个可选的标题和子标题。然而,为了提供更好的用户...
本示例源码“点击地图上的指针弹出窗口(里面显示该地点的相关信息)”主要展示了如何在iOS应用中实现地图交互功能,特别是当用户点击地图上的标记(pin)时,弹出一个窗口展示该地点的详细信息。这个功能是通过集成...
这个源码示例——"地图上多个指针显示”提供了如何在iOS地图上同时展示多个定位点的方法,这对于创建如位置分享、导航或者基于位置的社交功能十分有用。下面我们将深入探讨这一技术。 首先,我们需要了解的是苹果...
在iOS应用开发中,地图功能是非常重要的一部分,特别是在构建导航、位置服务或地理信息系统相关的应用时。本教程将深入探讨如何在iOS应用中实现地图...MapKit提供了丰富的API,使得在iOS上构建地图应用变得简单而强大。
在iOS开发中,地图功能是不可或缺的一部分,MapKit框架提供了集成地图、定位、大头针以及自定义气泡等核心功能。本篇文章将详细介绍如何在iOS应用中使用这些功能。 首先,我们需要导入MapKit框架,这可以通过在...
总的来说,要在iOS应用中实现在地图上显示多个指针,我们需要利用MapKit框架中的MKMapView和MKPointAnnotation,通过设置坐标、标题并将其添加到地图中。同时,通过自定义MKAnnotationView,我们可以进一步优化指针...
在iOS开发中,地图功能是不可或缺的一部分,而“大头针”(Pin)则是地图上常用的一种标记元素,用于指示特定的位置或者兴趣点。本文将深入探讨如何在iOS应用中实现地图上的大头针功能,以及相关的类库封装。 首先...
苹果提供了强大的MapKit框架,使得开发者可以轻松地在应用中集成地图,并对地图上的元素进行自定义。本篇将深入讲解如何利用MapKit中的`MKPinAnnotationView`进行地点标记的自定义,以满足个性化的需求。 `...
1. **自定义地图标注背景图**:在标准的`MKAnnotationView`中,通常只显示一个小的 pin 图标。为了实现自定义背景图,你需要继承`MKAnnotationView`,并在重写`- (void)layoutSubviews`方法中设置背景图片,例如`...
- 显示标记(pin)在地图上标注特定地点。 - **使用相机功能**: - 调用相机拍摄照片。 - 处理拍摄后的照片数据。 - 存储和显示拍摄的照片。 #### 六、设置、音频及晃动检测 - **TimeDown 应用案例分析**: - ...