WKInterfaceMapr提供 一个非交互的地图为你本地自定义,在interface controller中,地图必须设置成动态,用WKInterfaceMap方法,去自定义地图可视化的区域,增加大头针和POI,点击苹果表上的地图并展示相对应的位置。
一、简介
伴随着地图对象,可展现定义地理区域和地图上增加大头针。大头针图像是在地图视图上,可以自定图片和展示系统自带的图片,地图一次不能展示5个大头针一定不能用代码实例化对象,而是将控件定义在storyboard中,然后从storyboard中拉线到controller中,如下面Listing 1的格式。
Code Listing 1
@property (weak, nonatomic) IBOutlet WKInterfaceMap* myMap;
当实例化 interface controller时,WatchKit已经创建一个新的interface controller对象和为myMap初始化。你就可以在 awakeWithContext:方法中修改地图;此时iWatch 要联网才能加载地图
二、常用属性和方法
@interface WKInterfaceMap : WKInterfaceObject
//设置可视化的地图
- (void)setVisibleMapRect:(MKMapRect)mapRect;
//设置地带
- (void)setRegion:(MKCoordinateRegion)coordinateRegion;
//增加大头针 自定义图片,图片没有缓存
- (void)addAnnotation:(CLLocationCoordinate2D)location withImage:(nullable UIImage *)image centerOffset:(CGPoint)offset;
//增加大头针,图片有缓存
- (void)addAnnotation:(CLLocationCoordinate2D)location withImageNamed:(nullable NSString *)name centerOffset:(CGPoint)offset;
//增加大头针 系统自带和
- (void)addAnnotation:(CLLocationCoordinate2D)location withPinColor:(WKInterfaceMapPinColor)pinColor;
//移除所有的大头针
- (void)removeAllAnnotations;
@end
三、用法
添加大头针,只能增加5个。另外模拟器不能显示地图,请使用真机。模拟器不支持显示地图,请参考;
@interface InterfaceController()
@property (unsafe_unretained, nonatomic) IBOutlet WKInterfaceMap *map;
@end
@implementation InterfaceController
- (void)awakeWithContext:(id)context {
[super awakeWithContext:context];
//设置中心点位置
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(30, 120);
//设置跨度
MKCoordinateSpan span = MKCoordinateSpanMake(0.01, 0.01);
//设置地图区域
MKCoordinateRegion region = MKCoordinateRegionMake( center, span);
//添加大头针 系统自带的
[self.map addAnnotation:center withPinColor:WKInterfaceMapPinColorRed];
//添加大头针,添加图片
// [self.map addAnnotation:center withImageNamed:@"4" centerOffset:CGPointMake(0, 0)];
[self.map setRegion:region];
// Configure interface objects here.
}
下图是代码生成的界面。
Snip20170308_35.png
Over , Thanks!
网友评论