高德地图

#pragma mark - 创建地图

-(void)createMapView
{
    _mapView = [[MAMapView alloc]initWithFrame:self.view.frame];
    [self.view addSubview:_mapView];
    //设置代理
    _mapView.delegate = self;
    /*高德地图涉及到的一些属性*/
    //1.设置是否显示底层的建筑名称标注
    _mapView.showsLabels = YES;
    //2.设置地图的类型,分为卫星地图,标准地图和夜景地图
    _mapView.mapType = MAMapTypeStandard;
    //3.设置是否显示交通状况
    _mapView.showTraffic = YES;
    //4.设置显示本人的位置,结合定位功能使用
    _mapView.showsUserLocation = YES;
    //5.设置地图logo,默认字样是“高德地图”,用logoCenter来设置logo的位置
    _mapView.logoCenter = CGPointMake(self.view.frame.size.width - 100, self.view.frame.size.height - 50);
    //6.设置指南针compass,默认是开启状态,大小是定值,显示在地图的右上角
    _mapView.showsCompass = YES;
    _mapView.compassOrigin = self.view.center;
   //7.设置比例尺scale,默认显示在地图的左上角
   _mapView.showsScale = YES;
   _mapView.scaleOrigin = CGPointMake(100, 100);
   //8.设置地图手势
   _mapView.zoomEnabled = YES;//开启地图手势
   //[_mapView setZoomLevel:15 animated:YES];
   //9.设置是否开启滑动手势
   _mapView.scrollEnabled = YES;
   //10.设置是否开启旋转手势
   _mapView.rotateEnabled = YES;
   //11.设置是否开启倾斜手势
   _mapView.rotateCameraEnabled = YES;
}

#pragma mark - 在地图上添加大头针标注

-(void)addAnnotation
{
    MAPointAnnotation * pointAnnotation = [[MAPointAnnotation alloc]init];
    //设置大头针需要标记的位置
    pointAnnotation.coordinate = CLLocationCoordinate2DMake(39.989631, 116.481018);
    //设置标题
    pointAnnotation.title = @"方恒国际";
    //设置副标题
    pointAnnotation.subtitle = @"这是我家";
    [_mapView addAnnotation:pointAnnotation];
}

#pragma mark - 设置大头针的代理方法

-(MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
{
   /*
    //1.用系统的大头针样式
    //大头针也涉及到复用,它的复用跟UITableViewCell的复用机制一样
    //面向对象语言的特性:封装,继承,多态(父类的指针可以指向子类的对象)
    MAPinAnnotationView * pinAnotationView = (MAPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"mapView"];
    //判断复用池中是否有可用的对象,如果没有则创建
    if (!pinAnotationView) {
        pinAnotationView = [[MAPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"mapView"];
    }
    //设置气泡可以显示
    pinAnotationView.canShowCallout = YES;
    //设置大头针降落的动画
    pinAnotationView.animatesDrop = YES;
    //设置大头针的颜色
    pinAnotationView.pinColor = MAPinAnnotationColorPurple;
    //设置大头针是否可以拖拽
    pinAnotationView.draggable = YES;
    return pinAnotationView;
 */


     //2.使用自定义的大头针样式
     MAAnnotationView * annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"mapView"];
     if (!annotationView) {
        annotationView = [[MAAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"mapView"];
     }

    //设置大头针的样式为一张图片
    annotationView.image = [UIImage imageNamed:@"pig1"];
    //让气泡显示
    annotationView.canShowCallout = YES;
    //设置是否拖拽
    annotationView.draggable = YES;
    return annotationView;
}

#pragma mark- 画折线 ,一般用于路径规划

-(void)drawLine
{
    //构造折线的数据点
    CLLocationCoordinate2D commonPolylineCoords[4];
    commonPolylineCoords[0].latitude = 39.832136;
    commonPolylineCoords[0].longitude = 116.34095;
    commonPolylineCoords[1].latitude = 39.832136;
    commonPolylineCoords[1].longitude = 116.42095;
    commonPolylineCoords[2].latitude = 39.902136;
    commonPolylineCoords[2].longitude = 116.42095;

    commonPolylineCoords[3].latitude = 39.902136;
    commonPolylineCoords[3].longitude = 116.44095;

    //构造折线对象
    //参数一:多个点组成的类似数组的经纬度数据
    //参数二:构成折线总共涉及到几个点
    MAPolyline * polyLine = [MAPolyline polylineWithCoordinates:commonPolylineCoords count:4];
    //将覆盖图层添加到地图上
    [_mapView addOverlay:polyLine];
}

#pragma mark - 画多边形,一般用于精确的搜索

-(void)drawGon
{
    //构造多边形数据
    CLLocationCoordinate2D coordinates[4];
    coordinates[0].latitude = 39.810892;
    coordinates[0].longitude = 116.233413;

    coordinates[1].latitude = 39.816600;
    coordinates[1].longitude = 116.331842;

    coordinates[2].latitude = 39.762187;
    coordinates[2].longitude = 116.357932;

    coordinates[3].latitude = 39.733653;
    coordinates[3].longitude = 116.278255;

    MAPolygon * polyGon = [MAPolygon polygonWithCoordinates:coordinates count:4];
   [_mapView addOverlay:polyGon];
}

#pragma mark - 画圆,一般用于模糊搜索

-(void)drawCircle
{
    //需要原点和半径
    MACircle * circle = [MACircle circleWithCenterCoordinate:CLLocationCoordinate2DMake(39.952136, 116.50095) radius:5000];
    [_mapView addOverlay:circle];
}

#pragma mark - 实现覆盖图层样式的代理方法

-(MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id<MAOverlay>)overlay
{
     //旧版的返回值是MAOverLayView,新版的是MAOverlayRenderer
     //画折线
     if ([overlay isKindOfClass:[MAPolyline class]]) {
           MAPolylineRenderer * polyLine = [[MAPolylineRenderer alloc]initWithPolyline:overlay];
           //设置属性
           //设置线宽
           polyLine.lineWidth = 5;
           //设置填充颜色
           polyLine.fillColor = [UIColor redColor];
           //设置笔触颜色
           polyLine.strokeColor = [UIColor greenColor];
           //设置断点类型
           polyLine.lineCapType = kMALineCapRound;
           return polyLine;
      } else if([overlay isKindOfClass:[MAPolygon class]])
      {
          MAPolygonRenderer * polyGon = [[MAPolygonRenderer alloc]initWithPolygon:overlay];
          polyGon.fillColor = [UIColor redColor];
          polyGon.strokeColor = [UIColor yellowColor];
          //设置显示未虚线
          polyGon.lineDash = YES;
          polyGon.lineWidth = 8;
          return polyGon;
      } else if([overlay isKindOfClass:[MACircle class   ]])
      {
          MACircleRenderer * circle = [[MACircleRenderer alloc]initWithCircle:overlay];
          circle.fillColor = [UIColor blueColor];
          circle.strokeColor = [UIColor yellowColor];
          circle.lineWidth = 5;
          circle.lineDash = YES;
          return circle;
      }
      return nil;
}

定位

- (void)viewDidLoad {
     [super viewDidLoad];
     //配置用户key
     [AMapLocationServices sharedServices].apiKey = @"e51bdf2a028ff1a08da5f20f114ff3c0";
     //初始化定位
     _manager = [[AMapLocationManager alloc]init];
     //设置代理
     _manager.delegate = self;
     //开启定位
    [_manager startUpdatingLocation];
}
//定位的目的是为了拿到经纬度值,iOS8之后更新的定位代理方法
-(void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location
{
     NSLog(@"经纬度值~~~%f---%f",location.coordinate.longitude,location.coordinate.latitude);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,233评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,013评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,030评论 0 241
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,827评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,221评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,542评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,814评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,513评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,225评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,497评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,998评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,342评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,986评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,812评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,560评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,461评论 2 266

推荐阅读更多精彩内容