注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

熊猫正正的博客

熊猫正正的天空

 
 
 

日志

 
 

定位与地图(四)  

2013-05-08 23:55:10|  分类: ios开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
地图上的锚点默认的都是红色的,你想根据你自己的意愿来添加一些不同颜色的锚点。

	
		
		
	
	
		

通过 mapView:viewForAnnotation:这个方法来返回一个 MKPinAnnotationView 实例对 象,来进行一些相关的操作。每一个动画都是添加到一个 MKMapView 实例化对象的视图 上,然后加以显示的。这些视图一般称为动画视图。一个动画视图是一个 MKAnnotationView 类型的对象。也是 UIView 的子类。如果一个实现类的对象是一个地图的 视图,并且实现了 mapVIew:viewForAnnotation:这个方法,那么这个实现类将会返回一个 MKAnnotationView 的实例,然后你可以自己添加一个动画的视图效果,从而使他们在地图 视图上得以显示。

代码如下:

#import <Foundation/Foundation.h>

#import <MapKit/MapKit.h>


#define REUSABLE_PIN_RED @"Red"

#define REUSABLE_PIN_GREEN @"Green"

#define REUSABLE_PIN_PURPLE @"Purple"


@interface MyAnnotation : NSObject <MKAnnotation>


@property (nonatomic,readonly) CLLocationCoordinate2D coordinate;

@property (nonatomic,copy,readonly) NSString *title;

@property (nonatomic,copy,readonly) NSString *subtitle;

@property (nonatomic,unsafe_unretained) MKPinAnnotationColor pinColor;


- (id) initWithCoordinates: (CLLocationCoordinate2D) paramCoordinates title:(NSString *) paramTitle

                  subTitle:(NSString *) paramSubTitle;

+(NSString*) reusableIdentifierforPinColor: (MKPinAnnotationColor) paramColor;


@end

-----------

#import "MyAnnotation.h"


@implementation MyAnnotation


+ (NSString *) reusableIdentifierforPinColor:(MKPinAnnotationColor)paramColor

{

    NSString *result = nil;

    switch (paramColor) {

        case MKPinAnnotationColorRed:

        {

            result = REUSABLE_PIN_RED;

            break;

        }

        case MKPinAnnotationColorGreen:

        {

            result = REUSABLE_PIN_GREEN;

            break;

        }

        case MKPinAnnotationColorPurple:

        {

            result = REUSABLE_PIN_PURPLE;

            break;

        }

        default:

            break;

    }

    return result;

}


- (id) initWithCoordinates:(CLLocationCoordinate2D)paramCoordinates title:(NSString *)paramTitle subTitle:(NSString *)paramSubTitle

{

    self = [super init];

    if (self != nil)

    {

        _coordinate = paramCoordinates;

        _title = paramTitle;

        _subtitle = paramSubTitle;

        _pinColor = MKPinAnnotationColorGreen;

    }

    return self;

}


@end

-------------

#import <UIKit/UIKit.h>

#import <MapKit/MapKit.h>



@interface ViewController : UIViewController <MKMapViewDelegate>


@property (nonatomic,strong) MKMapView *myMapView;


@end

---------------

#import "ViewController.h"

#import "MyAnnotation.h"



@interface ViewController ()


@end


@implementation ViewController


- (void) didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

}


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

{

    MKAnnotationView *result = nil;

    if ([annotation isKindOfClass:[MyAnnotation class]] == NO)

    {

        return result;

    }

    

    if ([mapView isEqual:self.myMapView] == NO)

    {

        return result;

    }

    

    MyAnnotation *senderAnnotation = (MyAnnotation *) annotation;

    NSString *pinReusableIdentifier = [MyAnnotation reusableIdentifierforPinColor:senderAnnotation.pinColor];

    MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:pinReusableIdentifier];

    if (annotationView == nil)

    {

        annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:senderAnnotation reuseIdentifier:pinReusableIdentifier];

        [annotationView setCanShowCallout:YES];

    }

    

    annotationView.pinColor = senderAnnotation.pinColor;

    return result;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    self.myMapView = [[MKMapView alloc]

                      initWithFrame:self.view.bounds];

    self.myMapView.delegate = self;

    self.myMapView.mapType = MKMapTypeStandard;

    self.myMapView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

    [self.view addSubview:self.myMapView];

    

    CLLocationCoordinate2D location;

    location.latitude = 50.82191692907181;

    location.longitude = -0.13811767101287842;

    MyAnnotation *annotation = [[MyAnnotation alloc] initWithCoordinates:location title:@"My Title" subTitle:@"My Sub Title"];

    annotation.pinColor = MKPinAnnotationColorPurple;

    [self.myMapView addAnnotation:annotation];

}


- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation

{

    return YES;

}





@end


  评论这张
 
阅读(78)| 评论(0)

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018