• iOS开发第三方工具——如何调用百度地图API


    BaiduMapKit for ios 下载

    一、路线搜索

    IOS开发之百度地图API应用

    二、调用百度地图的导航
    //latitude-纬度  longitude-经度
    NSString *stringURL = [NSString stringWithFormat:@"baidumap://map/direction?origin=%f,%f&destination=%f,%f&mode=driving",self.myCoordinate.latitude,self.myCoordinate.longitude,
                               self.sellerCoordinate.latitude,self.sellerCoordinate.longitude];
        NSURL *url = [NSURL URLWithString:stringURL];
        if (![[UIApplication sharedApplication] openURL:url]) {
            MBProgressHUD *hud = [[MBProgressHUD alloc] initWithView:self.view];
            hud.labelText = @"本机没有安装百度地图";
            [hud hide:YES afterDelay:0.5];
        }

    三、注意细节

    1. self.mapView.showsUserLocation = YES;//放在ViewDidLoad方法里一般不起作用,原因是mapView在Load的时候需要一段时间。设置该参数的意思是马上启动定位回调功能,并在地图上把自己的位置标注出来,正确的做法是放到ViewDidAppear方法里,如下代码:

    - (void)viewDidAppear:(BOOL)animated{
        self.mapView.showsUserLocation = YES;
        [super viewDidAppear:animated];
    }

    另外还要注意两点:(1)设置showsUserLocation=YES后,mapView并不会自己移动好合适的位置,需要自己写代码来移动。

        //放一个Annotation
        RouteAnnotation* item = [[RouteAnnotation alloc]init];
        item.coordinate = self.myCoordinate;// 我的经纬度信息
        item.title = @"我的位置";
        item.type = 1;
        [_mapView addAnnotation:item]; // 添加起点标注
        //移动地图的大小,把自己的位置放在mapView的中心点
        BMKCoordinateSpan span = BMKCoordinateSpanMake(0.01, 0.01);
        BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake(self.myCoordinate,span);//以自己的位置为中心
        [self.mapView setRegion:[self.mapView regionThatFits:viewRegion] animated:NO];

                              (2)设置showsUserLocation=YES后,会一直不停的回调didUpdateUserLocation方法,如果想关闭定位功能,只需设置didUpdateUserLocation=NO即可。
    2. 改变搜索线路的颜色

    - (BMKOverlayView*)mapView:(BMKMapView *)map viewForOverlay:(id<BMKOverlay>)overlay{
        HRLOG(@"- (void)mapView:viewForOverlay:->param:%@,%@", map, overlay);
        if ([overlay isKindOfClass:[BMKPolyline class]]) {
            BMKPolylineView* polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];
            polylineView.fillColor = BMKPOLYLINE_FILL_COLOR;    //填充颜色
            polylineView.strokeColor = BMKPOLYLINE_STROKE_COLOR;//画笔颜色
            polylineView.lineWidth = 3.0;//线条宽度
            return polylineView;
        }
        return nil;
    }

    3. onGetDrivingRouteResult和onGetWalkingRouteResult方法里的业务逻辑一样的
    4. 计算任意两个经纬度之间的距离(详细讲解根据两点经纬度计算距离

    //计算两个经纬度之间的距离
    double GetDistance(double lat1, double lng1, double lat2, double lng2){
        double EARTH_RADIUS = 6378.137;
        double radLat1 = (lat1 * M_PI) / 180.0;
        double radLat2 = (lat2 * M_PI) / 180.0;
        double a = radLat1 - radLat2;
        double b = (lng1 * M_PI) / 180.0  - (lng2 * M_PI) / 180.0 ; 
        double s = 2 * sin(sqrt(pow(sin(a/2),2) + cos(radLat1)*cos(radLat2)*pow(sin(b/2),2)));
        s = s * EARTH_RADIUS;
        s = round(s * 10000) / 10000;
        return s;
    }
     
     
     
  • 相关阅读:
    JAVA总结--正则表达式
    JAVA总结--java数据类型
    数据结构与算法
    JAVA总结--JDK版本区别
    JAVA总结--代码规范
    .net core 学习笔记(4)-ViewComponent
    .net core学习笔记(3)-依赖注入
    .net core 学习笔记(2)-中间件
    .net core 学习笔记(1)-分页控件的使用
    taginput ,complete使用笔记
  • 原文地址:https://www.cnblogs.com/yshch/p/3160612.html
Copyright © 2020-2023  润新知