就职文博公司要为博物馆做APP 涉及到瓦片地图的编写 在这里总结一些开发中遇到的问题 (将会不断更新 也是学习阶段)
着急写项目的同学 可以直接看code4上现成的瓦片地图代码:http://www.code4app.com/ios/Tiled-Scroll-View/4fba3fd66803fa8413000000
1. 首先实现利用scrollview实现图片的缩放: 需要设置
maximumZoomScale; // default is 1.0. must be > minimum zoom scale to enable zooming *****只有设置了这个属性值大于1.0 才能实现缩放效果
下面上代码
//.h 文件 #import <UIKit/UIKit.h> @interface HDMapView : UIScrollView <UIScrollViewDelegate> -(instancetype)initWithFrame:(CGRect)frame andContentSize:(CGSize)contentSize; -(void)setMapImage:(UIImage*)image; @end //.m 文件 #import "HDMapView.h" @interface HDMapView () @property(strong,nonatomic)UIImageView *myImageView; @end @implementation HDMapView -(instancetype)initWithFrame:(CGRect)frame andContentSize:(CGSize)contentSize { self = [super initWithFrame:frame]; if (self) { self.maximumZoomScale=17; self.frame = frame; self.delegate = self; self.contentSize = contentSize; self.myImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, contentSize.width, contentSize.height)]; self.myImageView.userInteractionEnabled = YES; [self addSubview:self.myImageView]; UITapGestureRecognizer *twiceTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapTwice)]; twiceTap.numberOfTapsRequired = 2; twiceTap.numberOfTouchesRequired = 1; [self.myImageView addGestureRecognizer:twiceTap]; } return self; } -(void)tapTwice { if (self.zoomScale > 3) { [self setZoomScale:1.0 animated:YES]; } else { CGFloat a = self.zoomScale; a++; [self setZoomScale:a animated:YES];; } } -(void)setMapImage:(UIImage*)image { self.myImageView.image = image; } #pragma mark - UIScrollViewDelegate -(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView { return self.myImageView; } -(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale { [self setZoomScale:scale animated:YES]; }