zoukankan      html  css  js  c++  java
  • 高德地图详细使用方法

    1.简单定位

    - (void)viewDidLoad {
        [super viewDidLoad];
        
        _mapView.showsUserLocation = YES;
        [_mapView setUserTrackingMode:MAUserTrackingModeFollow];
    }
    
    - (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation
    {
        NSLog(@"定位中...");
    }
    View Code

    2.创建大头针

    #import "AnnotationViewController.h"
    
    @interface AnnotationViewController ()
    
    @end
    
    @implementation AnnotationViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        MAPointAnnotation *annotation1 = [[MAPointAnnotation alloc]init];
        annotation1.coordinate = CLLocationCoordinate2DMake(39.9, 116.4);
        annotation1.title = @"北京";
        annotation1.subtitle = @"beijing";
        [_mapView addAnnotation:annotation1];
        
        MAPointAnnotation *annotation2 = [[MAPointAnnotation alloc]init];
        annotation2.coordinate = CLLocationCoordinate2DMake(39.94, 116.44);
        annotation2.title = @"上海";
        annotation2.subtitle = @"shanghai";
        [_mapView addAnnotation:annotation2];
    
    }
    
    - (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
    {
        static NSString *anIde = @"PointAnnotation";
        MAAnnotationView *view = (MAAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:anIde];
        if (!view) {
            view = [[MAAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:anIde];
    //        view.animatesDrop=YES;
            view.draggable=YES;
            view.image = [UIImage imageNamed:@"1.png"];
            view.canShowCallout = YES;
        }
        return view;
    }
    
    - (void)mapView:(MAMapView *)mapView didDeselectAnnotationView:(MAAnnotationView *)view
    {
        
    }
    
    - (void)mapView:(MAMapView *)mapView didSelectAnnotationView:(MAAnnotationView *)view
    {
        
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    View Code

    3.自定制大头针(实现MAAnnotation代理)

    #import <Foundation/Foundation.h>
    #import <MAMapKit/MAMapKit.h>
    @interface CustomAnnotation : NSObject<MAAnnotation>
    
    @property (nonatomic, assign) CLLocationCoordinate2D coordinate;
    
    @property (nonatomic,copy) NSString *title;
    @property (nonatomic,copy) NSString *subtitle;
    //
    @property (nonatomic,copy) NSString *leftImgName;
    
    @end
    View Code

    4.自定制大头针内容(继承MAAnnotationView)

    #import "CustomAnnotationView.h"
    
    @implementation CustomAnnotationView
    {
        DetailView *_detail;
    }
    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    - (void)drawRect:(CGRect)rect {
        // Drawing code
    }
    */
    
    - (void)setSelected:(BOOL)selected animated:(BOOL)animated
    {
        
        if (self.selected == selected) {
            return;
        }
    
        //选中添加详情
        if (selected)
        {
            if (!_detail) {
                _detail = [[DetailView alloc]initWithFrame:CGRectMake((-140+40)/2, -50, 140, 50)];
            }
            [self addSubview:_detail];
            CustomAnnotation *annotation = self.annotation;
            _detail.leftImgView.image = [UIImage imageNamed:annotation.leftImgName];
            _detail.titleLabel.text = annotation.title;
            _detail.subtitleLabel.text = annotation.subtitle;
        }
        //未选中时
        else
        {
            //移除详情
            [_detail removeFromSuperview];
        }
        
        [super setSelected:selected animated:animated];
    }
    
    @end
    View Code

    5.使用高德地图部分方法

    #import "CustomAnnotationViewController.h"
    #import "CustomAnnotationView.h"
    #import <AMapSearchKit/AMapSearchAPI.h>
    @interface CustomAnnotationViewController ()<AMapSearchDelegate>
    {
        AMapSearchAPI *_searchApi;
    }
    @end
    const static NSString *key = @"d0ab6d8ab6902765f6714c1534b4d4a0";
    @implementation CustomAnnotationViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
        CustomAnnotation *ann = [[CustomAnnotation alloc]init];
        ann.coordinate = CLLocationCoordinate2DMake(39.9, 116.4);
        ann.title = @"肯德基";
        ann.subtitle = @"KFC";
        ann.leftImgName = @"3.png";
        [_mapView addAnnotation:ann];
        
        MACircle *circle = [MACircle circleWithCenterCoordinate:ann.coordinate radius:3000];
        [_mapView addOverlay:circle];
        
        //搜索附近的kfc
        _searchApi = [[AMapSearchAPI alloc]initWithSearchKey:key Delegate:self];
        //创建request对象
        AMapPlaceSearchRequest *request = [[AMapPlaceSearchRequest alloc]init];
        //指定searchtype为周边搜索
        request.searchType = AMapSearchType_PlaceAround;
        //指定搜索附近的中心点位置
        request.location = [AMapGeoPoint locationWithLatitude:ann.coordinate.latitude longitude:ann.coordinate.longitude];
        //指定搜索半径
        request.radius = 3000;
        //关键字
        request.keywords = @"KFC";
        [_searchApi AMapPlaceSearch:request];
    //    
    //    AMapPlaceSearchRequest *request1 = [[AMapPlaceSearchRequest alloc]init];
    //    request1.keywords = @"俏江南";
    //    request1.city = @[@"beijing"];
    //    [_searchApi AMapPlaceSearch:request1];
    }
    
    - (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
    {
        if ([annotation isKindOfClass:[MAPointAnnotation class]]) {
            static NSString *annIde = @"PointAnnotation";
            MAPinAnnotationView *view = (MAPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annIde];
            if (!view) {
                view = [[MAPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annIde];
                view.canShowCallout = YES;
            }
            return view;
        }
        static NSString *annIde = @"CustomAnnotation";
        CustomAnnotationView *view = (CustomAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annIde];
        if (!view) {
            view = [[CustomAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:annIde];
        }
        view.image = [UIImage imageNamed:@"1.png"];
        return view;
    }
    
    - (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id<MAOverlay>)overlay
    {
        MACircleRenderer *circleRe = [[MACircleRenderer alloc]initWithOverlay:overlay];
        circleRe.strokeColor = [UIColor redColor];
        circleRe.fillColor = [UIColor colorWithWhite:0.2 alpha:0.4];
        circleRe.lineWidth = 5;
        return circleRe;
    }
    
    - (void)mapView:(MAMapView *)mapView didSelectAnnotationView:(MAAnnotationView *)view
    {
        //导航查询
        AMapNavigationSearchRequest *request = [[AMapNavigationSearchRequest alloc]init];
        request.searchType = AMapSearchType_NaviDrive;
        //起点
        request.origin = [AMapGeoPoint locationWithLatitude:39.9 longitude:116.4];
        //终点
        request.destination = [AMapGeoPoint locationWithLatitude:[view.annotation coordinate].latitude longitude:[view.annotation coordinate].longitude];
        [_searchApi AMapNavigationSearch:request];
    }
    
    - (void)onNavigationSearchDone:(AMapNavigationSearchRequest *)request response:(AMapNavigationSearchResponse *)response
    {
        AMapRoute *route = response.route;
        NSArray *paths = route.paths;
        for (AMapPath *path in paths) {
            for (AMapStep *step in path.steps) {
                NSLog(@"%@",step.instruction);
            }
        }
    }
    
    - (void)onPlaceSearchDone:(AMapPlaceSearchRequest *)request response:(AMapPlaceSearchResponse *)response
    {
        if (!response.count) {
            return;
        }
        
        //遍历搜索结果,创建annotation,显示搜索结果
        for (AMapPOI *poi in response.pois) {
            MAPointAnnotation *annotation = [[MAPointAnnotation alloc]init];
            annotation.coordinate = CLLocationCoordinate2DMake(poi.location.latitude, poi.location.longitude);
            annotation.title = poi.name;
            annotation.subtitle = poi.tel;
            [_mapView addAnnotation:annotation];
        }
    }
    
    - (void)searchRequest:(id)request didFailWithError:(NSError *)error
    {
        NSLog(@"%@",error);
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    View Code
  • 相关阅读:
    【LOJ #6397】【THUPC2018】—蛋糕 / Cake(DFS)
    【Atcoder Regular Contest 072F】—Dam(单调队列)
    【Atcoder Regular Contest 072F】—Dam(单调队列)
    多测师讲解自动化测试 _RF封装_(三层模式)高级讲师肖sir
    多测师讲解自动化测试 _RF关键字001_( 中)_高级讲师肖sir
    多测师讲解自动化测试 _RF分配id_高级讲师肖sir
    多测师讲解自动化--rf关键字--断言(下)_高级讲师肖sir
    多测师讲解自动化测试 _RF关键字001_(上)_高级讲师肖sir
    多测师讲解自动化测试 _RF模拟鼠标悬停_高级讲师肖sir
    多测师讲解自动化测试 _RF定位iframe框_高级讲师肖sir
  • 原文地址:https://www.cnblogs.com/liaods/p/4805568.html
Copyright © 2011-2022 走看看