精华内容
下载资源
问答
  • 百度地图导航非常实用,那么基于代码是如何实现的呢,下面通过本文给大家介绍IOS百度地图导航开发功能实现简述,需要的朋友可以参考下本
  • iOS定位 – 普通定位(没有地图) – 反地理编码(得到具体位置),下面通过代码给大家详解,代码如下: #import <CoreLocation> 使用到的头文件 要引入CoreLocation这个包 <CLLocationManagerDelegate> 使用的代理名称...
  • 使用百度地图SDK,实现定位、LBS云检索、自定义大头针、自定义弹出框等功能。
  • iOS 百度地图定位封装

    2018-05-08 14:24:40
    百度地图的定位封装,包含点对点的距离判断(是否进入区域内)
  • 一、自定义大头针和气泡 // 根据anntation生成对应的View - (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id )annotation { NSString *AnnotationViewID = [NSString stringWithFormat...
  • 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索、路径规划、地图标注、离线地图、定位、周边雷达等丰富的LBS能力 。 今天主要介绍以下接口 基础地图...
  • 百度地图已经开放了地图API,大家可以很方便的调用地图中的相应数据,并完成各项个性化的展示,下面这篇文章主要给大家介绍了关于iOS如何实现百度地图拖拽后更新位置以及反编码的相关资料,需要的朋友可以参考借鉴,...
  • ios 百度地图

    2014-09-13 11:31:03
    最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们用的就是百度地图,没有办法,从百度官网上下载了的demo。里面的功能还是比较多的,步骤详细...
  • 利用百度地图第三方框架来构建工程,实现功能为: 1、实时绘制轨迹 2、高精度 3、切换到后台仍然绘制
  • IOS 百度地图SDK 自定义大头针 ,可添加多个
  • iOS 百度地图轨迹实现

    2020-05-14 17:23:27
    由于之前对地图涉猎不深,故对百度地图SDK提供的APi并不熟悉。其间遇到了部分问题,印象最深刻的便是轨迹图片平铺、压缩,和预想中差距甚大,经过一天时间的尝试,最终解决了问题。遇到此问题,在网上查找并未找到...

    前言

    因需求,需要实现运动轨迹。由于之前对地图涉猎不深,故对百度地图SDK提供的APi并不熟悉。其间遇到了部分问题,印象最深刻的便是轨迹图片平铺、压缩,和预想中差距甚大,经过一天时间的尝试,最终解决了问题。遇到此问题,在网上查找并未找到相关描述或解决方式,特此记录,或许可以帮到初涉地图的人。

    实现轨迹

    去百度地图开放平台,查看文档,实现轨迹很简单,几句代码就可以出效果。下面是加入了网络请求后的代码:(onload中创建添加地图,网络请求后,调用下面代码)

    - (void)settingPolyline {
        
        NSArray * array = self.trackModel.userModel.locuslist;
        CLLocationCoordinate2D coords[100] = {0};
        for (int i = 0; i < array.count; i++) {
            WorkingTrackLocationModel * model = array[i];
            coords[i] = CLLocationCoordinate2DMake(model.latitude, model.longitude);
        }
    
        BMKPolyline * polyline = [BMKPolyline polylineWithCoordinates:coords count:array.count];
        [_mapView removeOverlays:self.mapView.overlays];
        [_mapView addOverlay:polyline];
    
        //设置地图中心位置
        BMKCoordinateRegion region;
        region.center = coords[0];
        [_mapView setRegion:region animated:YES];
        
    }
    
    

    下面是代理

    - (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id<BMKOverlay>)overlay {
    
        if([overlay isKindOfClass:[BMKPolyline class]]){
    
            BMKPolylineView * polylineView = [[BMKPolylineView alloc] initWithPolyline:(BMKPolyline *)overlay];
    
            //设置polylinView的画笔颜色为蓝色
    //        polylineView.strokeColor = navigationBackGroundColor;
    
            //设置polylineView的画笔宽度
            polylineView.lineWidth = 8;
            polylineView.tileTexture = YES;/// 是否纹理图片平铺绘制,默认NO
    //        polylineView.keepScale = YES; /// 纹理图片是否缩放(tileTexture为YES时生效),默认NO   
            [polylineView loadStrokeTextureImage:[UIImage imageNamed:@"icon_map_line"]];
    
            return polylineView;
        }
        return nil;
    }
    
    

    好了,代码到这里就完成了,运行程序,效果如下:
    在这里插入图片描述

    更改纹理密度

    运行上面代码,发现轨迹是实现了,可这个效果和想象中的差距有点大。太丑了,而且密度大,那些轨迹上的箭头很模糊,都快成一条直线了,几乎分不清轨迹的方向。
    于是,查了很多关于BMKPolyline和BMKPolylineView相关的APi以及属性,尝试更改属性,已达到预期的效果,反复多次尝试,都没有效果。
    在多次尝试更改属性无果后,后来,想着能不能从图片本身着手。纹理图片,是从安卓百度地图Demo包中取出来的,原始尺寸32*128像素。于是分别将尺寸等比例缩小及等比例放大,导入工程中。发现终于实现效果了。
    原始图片
    放大后的图片

    最终效果

    在这里插入图片描述
    注意点:上面的效果,纹理图片尺寸256*1024。代理中,设置宽度。设置平铺tileTexture为YES。缩放keepScale不设置,或为NO。

    展开全文
  • iOS 百度地图的使用

    2015-04-11 10:34:52
    这是参照百度Dome自己做的一个定位,很简单
  • 可以实现定位,百度地图展示 ,显示附近,并列表展示,文件过大, gitHub地址: https://github.com/13213334722/map-view
  • iOS百度地图Demo

    2015-10-21 21:15:49
    iOS 百度地图,定位,用户点击地图添加大头针,自定义大头针,并且可以对大头针的信息增删改
  • 在这里就不在介绍百度的具体配置,配置详见http://developer.baidu.com/map/index.php?title=iossdk1.首先接受基本的地图功能新建一个地图类,xib拖也行,我这边是代码实现的。_mapView=[[BMKMapViewalloc]...

    在这里就不在介绍百度的具体配置,配置详见http://developer.baidu.com/map/index.php?title=iossdk

    1.首先接受基本的地图功能

    新建一个地图类,xib拖也行,我这边是代码实现的。

    _mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0,self.view.frame.size.width, self.view.frame.size.height)];//添加mapVIew

    [self.view addSubview:_mapView];

    #pragma mark - 设置mapView属性

    -(void)setMapViewProperty

    {

    _mapView.mapType = BMKUserTrackingModeFollowWithHeading;

    _mapView.showsUserLocation = YES; //是否显示定位图层(即我的位置的小圆点)

    _mapView.zoomLevel = 16;//地图显示比例

    _mapView.rotateEnabled = NO; //设置是否可以旋转

    [self  passLocationValue];

    }

    #pragma mark -传入定位坐标

    //设置定位到得用户的位置,这里是简单的应用方法(必须打开程序时已经获取到地理位置坐标,为了解决地图定位时总是先显示天安门)

    -(void)passLocationValue

    {

    BMKCoordinateRegion viewRegion = BMKCoordinateRegionMake([UserLocationManager sharedInstance].clloction.coordinate, BMKCoordinateSpanMake(0.02f,0.02f));

    BMKCoordinateRegion adjustedRegion = [_mapView regionThatFits:viewRegion];

    [_mapView setRegion:adjustedRegion animated:YES];

    }

    #pragma mark -设置定位圆点属性

    -(void)setUserImage

    {

    //用户位置类

    BMKLocationViewDisplayParam* param = [[BMKLocationViewDisplayParam alloc] init];

    param.locationViewOffsetY = 0;//偏移量

    param.locationViewOffsetX = 0;

    param.isAccuracyCircleShow =NO;//设置是否显示定位的那个精度圈

    param.isRotateAngleValid = NO;

    [_mapView updateLocationViewWithParam:param];

    }

    这样基本的地图界面就出来了

    如果你需要在地图上做一些请求,可以实现BMKMapViewDelegate,以下是mapView的一些协议方法

    **

    *地图区域即将改变时会调用此接口

    *@param mapview 地图View

    *@param animated 是否动画

    */

    - (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated

    {

    //TODO

    }

    /**

    *地图区域改变完成后会调用此接口

    *@param mapview 地图View

    *@param animated 是否动画

    */

    - (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

    {

    //TODO

    }

    /**

    *地图状态改变完成后会调用此接口

    *@param mapview 地图View

    */

    - (void)mapStatusDidChanged:(BMKMapView *)mapView

    {

    //TODO

    }

    2.地图定位

    我这边是将定位封装了一个独立的manager类来管理定位和地图上滑动到的位置,是将定位功能和地图mapVIew独立开来,管理地理移动位置的变化

    #import 

    #import "BMapKit.h"

    @interface UserLocationManager : NSObject 

    {

    CLLocation *cllocation;

    BMKReverseGeoCodeOption *reverseGeoCodeOption;//逆地理编码

    }

    @property (strong,nonatomic) BMKLocationService *locService;

    //城市名

    @property (strong,nonatomic) NSString *cityName;

    //用户纬度

    @property (nonatomic,assign) double userLatitude;

    //用户经度

    @property (nonatomic,assign) double userLongitude;

    //用户位置

    @property (strong,nonatomic) CLLocation *clloction;

    //初始化单例

    + (UserLocationManager *)sharedInstance;

    //初始化百度地图用户位置管理类

    - (void)initBMKUserLocation;

    //开始定位

    -(void)startLocation;

    //停止定位

    -(void)stopLocation;

    @end

    #import "UserLocationManager.h"

    @implementation UserLocationManager

    + (UserLocationManager *)sharedInstance

    {

    static UserLocationManager *_instance = nil;

    @synchronized (self) {

    if (_instance == nil) {

    _instance = [[self alloc] init];

    }

    }

    return _instance;

    }

    -(id)init

    {

    if (self == [super init])

    {

    [self initBMKUserLocation];

    }

    return self;

    }

    #pragma 初始化百度地图用户位置管理类

    /**

    *  初始化百度地图用户位置管理类

    */

    - (void)initBMKUserLocation

    {

    _locService = [[BMKLocationService alloc]init];

    _locService.delegate = self;

    [self startLocation];

    }

    #pragma 打开定位服务

    /**

    *  打开定位服务

    */

    -(void)startLocation

    {

    [_locService startUserLocationService];

    }

    #pragma 关闭定位服务

    /**

    *  关闭定位服务

    */

    -(void)stopLocation

    {

    [_locService stopUserLocationService];

    }

    #pragma BMKLocationServiceDelegate

    /**

    *用户位置更新后,会调用此函数

    *@param userLocation 新的用户位置

    */

    - (void)didUpdateUserLocation:(BMKUserLocation *)userLocation

    {

    cllocation = userLocation.location;

    _clloction = cllocation;

    _userLatitude = cllocation.coordinate.latitude;

    _userLongitude = cllocation.coordinate.longitude;

    [self stopLocation];(如果需要实时定位不用停止定位服务)

    }

    /**

    *在停止定位后,会调用此函数

    */

    - (void)didStopLocatingUser

    {

    }

    /**

    *定位失败后,会调用此函数

    *@param error 错误号

    */

    - (void)didFailToLocateUserWithError:(NSError *)error

    {

    [self stopLocation];

    }

    展开全文
  • 完成后台实时定位 记录。 上传位置记录。 查看轨迹 查看附近使用改软件的人。
  • ios 百度地图之路线规划,公交车,自驾车,步行
  • IOS百度地图的实时绘出运行轨迹

    热门讨论 2014-04-01 18:06:39
    本人小白,第一次接触地图,写个两天终于把这个Demo写好了,给大家分享下一。 百度的SDK用的是真机版的。 如果是模拟器请更换一下,再说这个实时绘制轨迹,不在真机上真没办法测试。
  • ios 百度地图定位

    2018-10-16 16:26:50
    该项目从申请百度秘钥,到百度sdk集成 实现定位 反地理编码功能
  • //移动到中心点 } 在开发百度地图的时候会有这样的需求,需要设置地图显示在某个地方,虽然问题比较小,还是来记录一下。 并带有移动效果。 解决方案: BMKCoordinateRegion region ;//表示范围的结构体 region....

    定位后移动到定位中心点

    - (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

    {

    NSLog(@"didUpdateUserLocation lat %f,long %f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

    NSLog(@"定位成功!!!");

    [myMap updateLocationData:userLocation];//更新位置 前提是MapView.showsUserLocation=YES;

    myMap.centerCoordinate = userLocation.location.coordinate;//移动到中心点

    }

    在开发百度地图的时候会有这样的需求,需要设置地图显示在某个地方,虽然问题比较小,还是来记录一下。

    并带有移动效果。

    解决方案:

    BMKCoordinateRegion region ;//表示范围的结构体

    region.center = coordinate;//中心点

    region.span.latitudeDelta = 0.1;//经度范围(设置为0.1表示显示范围为0.2的纬度范围)

    region.span.longitudeDelta = 0.1;//纬度范围

    [_mapView setRegion:region animated:YES];

    展开全文
  • 路线规划使用百度地图SDK版本为2.9.1。需要将改代码:#import #import #import #import #import #import #import "HXRouteViewController.h"#import "UIView+Extension.h"#import "HXAnnotationView.h"#import ...

    路线规划

    使用百度地图SDK版本为2.9.1。

    需要将改

    代码:

    #import

    #import

    #import

    #import

    #import

    #import

    #import "HXRouteViewController.h"

    #import "UIView+Extension.h"

    #import "HXAnnotationView.h"

    #import "HXAnnotation.h"

    #import "HXMenDDetail.h"

    #import "UIImage+Rotate.h"

    #import "UIColor+HexString.h"

    #import "FMActionSheet.h"

    #import "ZoomInOrOutButton.h"

    #define MYBUNDLE_NAME @ "mapapi.bundle"

    #define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: MYBUNDLE_NAME]

    #define MYBUNDLE [NSBundle bundleWithPath: MYBUNDLE_PATH]

    /**

    * 路线的标注

    */

    @interface RouteAnnotation : BMKPointAnnotation

    {

    int _type; ///<0:起点 1:终点 2:公交 3:地铁 4:驾乘 5:途经点

    int _degree;

    }

    @property (nonatomic) int type;

    @property (nonatomic) int degree;

    @end

    @implementation RouteAnnotation

    @synthesize type = _type;

    @synthesize degree = _degree;

    @end

    @interface HXRouteViewController (){

    BMKMapView *_mapView;

    NSString *_cityName;

    BMKRouteSearch *_routesearch;

    }

    /**

    * 返回按钮

    */

    //@property (nonatomic , weak)UIButton *preBtn;

    /**

    * 存放标注数组

    */

    @property(nonatomic , strong) NSMutableArray *annotations;

    /**

    * 用户当前位置

    */

    @property(nonatomic , strong) BMKUserLocation *userLocation;

    @property(nonatomic , strong) HXAnnotation *anno;

    @end

    @implementation HXRouteViewController

    - (NSString*)getMyBundlePath1:(NSString *)filename

    {

    NSBundle * libBundle = MYBUNDLE ;

    if ( libBundle && filename ){

    NSString * s=[[libBundle resourcePath ] stringByAppendingPathComponent:filename];

    return s;

    }

    return nil ;

    }

    - (void)viewDidLoad

    {

    [super viewDidLoad];

    UIView *statusView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREENW, 20)];

    statusView.backgroundColor = [UIColor colorWithR:46 G:139 B:84 alpha:1.];

    [self.view addSubview:statusView];

    _routesearch = [[BMKRouteSearch alloc] init];

    _routesearch.delegate = self;

    //初始化BMKMapView并设置代理

    _mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, 20, SCREENW, SCREENH - 140)];

    [self.view addSubview:_mapView];

    _mapView.delegate = self;

    _mapView.buildingsEnabled = YES;

    _mapView.overlookEnabled = YES;

    _mapView.showMapScaleBar = YES;

    _mapView.overlooking = -45;

    //设置放大/缩小按钮

    [self setupNavButton];

    //返回按钮

    [self backButton];

    //设置导航按钮

    // [self setupNavButton];

    //驾车路线

    [self showDriveSearch];

    //设置放大/缩小按钮

    [self setupZoomButton];

    }

    #pragma mark 设置放大/缩小按钮

    -(void)setupZoomButton{

    ZoomInOrOutButton *zoomInOrOutBtn = [[[NSBundle mainBundle] loadNibNamed:@"ZoomInOrOutButton" owner:nil options:nil] lastObject];

    zoomInOrOutBtn.layer.cornerRadius = 5;

    zoomInOrOutBtn.x = SCREENW - 110;

    zoomInOrOutBtn.y = _mapView.height - 50;

    [_mapView addSubview:zoomInOrOutBtn];

    [zoomInOrOutBtn.zoomInBtn addTarget:self action:@selector(zoomInBtnClick:) forControlEvents:UIControlEventTouchUpInside];

    zoomInOrOutBtn.zoomInBtn.tag = 0;

    [zoomInOrOutBtn.zoomOutBtn addTarget:self action:@selector(zoomInBtnClick:) forControlEvents:UIControlEventTouchUpInside];

    zoomInOrOutBtn.zoomInBtn.tag = 1;

    }

    #pragma mark 点击放大按钮

    -(void)zoomInBtnClick:(UIButton *)sender{

    _mapView.zoomLevel = sender.tag ? _mapView.zoomLevel++ : _mapView.zoomLevel--;

    }

    #pragma mark 返回按钮

    -(void)backButton{

    UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(10, 30, 30, 40)];

    [backButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];

    backButton.backgroundColor = [UIColor blackColor];

    backButton.layer.cornerRadius = 5;

    backButton.alpha = 0.7;

    [backButton bringSubviewToFront:_mapView];

    [backButton initSpringTouch];

    [self.view addSubview:backButton];

    [backButton addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside];

    }

    #pragma mark 返回

    -(void)goBack{

    [self dismissViewControllerAnimated:YES completion:nil];

    }

    #pragma mark 导航按钮

    -(void)setupNavButton{

    UIView *bgView = [[UIView alloc] init];

    bgView.frame = CGRectMake(0, SCREENH - 120, SCREENW, 120);

    bgView.backgroundColor = [UIColor whiteColor];

    [self.view addSubview:bgView];

    CGFloat viewX = 15;

    UILabel *shopLabel = [[UILabel alloc] initWithFrame:CGRectMake(viewX, 5, SCREENW - 30, 25)];

    shopLabel.text = [NSString stringWithFormat:@"门店名称:%@",self.mendDetail.shopName];

    shopLabel.textColor = [UIColor blackColor];

    shopLabel.font = [UIFont systemFontOfSize:15];

    [bgView addSubview:shopLabel];

    UILabel *addressLabel = [[UILabel alloc] initWithFrame:CGRectMake(viewX, 30, SCREENW - 30, 25)];

    addressLabel.text = [NSString stringWithFormat:@"门店地址:%@",self.mendDetail.address];

    addressLabel.textColor = [UIColor lightGrayColor];

    addressLabel.font = [UIFont systemFontOfSize:14];

    [bgView addSubview:addressLabel];

    UIButton *navButton = [[UIButton alloc] init];

    navButton.frame = CGRectMake(15, 65, SCREENW - 30, 40);

    [navButton setTitle:@"导航" forState:UIControlStateNormal];

    [navButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    [navButton.layer setMasksToBounds:YES];

    [navButton.layer setCornerRadius:6];

    [navButton.layer setBorderWidth:1.0];

    [navButton initSpringTouch];

    //设置按钮的边界颜色

    CGColorRef color = [UIColor colorWithR:46 G:139 B:84 alpha:1.].CGColor;

    [navButton.layer setBorderColor:color];

    [navButton addTarget:self action:@selector(navButtonClick) forControlEvents:UIControlEventTouchUpInside];

    [bgView addSubview:navButton];

    }

    #pragma mark弹出选择框

    -(void)navButtonClick{

    //弹出框

    FMActionSheet *sheet = [[FMActionSheet alloc] initWithTitle:@"导航方式" buttonTitles:[NSArray arrayWithObjects:@"用手机自带地图导航", @"百度地图", nil] cancelButtonTitle:@"取消" delegate:(id)self];

    sheet.tag = 103;

    sheet.titleFont = [UIFont systemFontOfSize:15];

    sheet.titleBackgroundColor = [UIColor colorWithHexString:@"f4f5f8"];

    sheet.titleColor = [UIColor colorWithHexString:@"666666"];

    sheet.lineColor = [UIColor colorWithHexString:@"dbdce4"];

    [sheet show];

    }

    - (void)actionSheet:(FMActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{

    if (buttonIndex == 0) {

    //打开系统自带的地图

    [self openIOSMapNav];

    } else if (buttonIndex == 1) {

    //打开百度地图客户端导航

    [self opsenBaiduMap];

    }

    }

    #pragma mark 打开系统自带的地图

    -(void)openIOSMapNav{

    CLLocationCoordinate2D endCoor = CLLocationCoordinate2DMake([self.mendDetail.dimensions doubleValue], [self.mendDetail.longitude doubleValue]);

    MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];

    MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:endCoor addressDictionary:nil]];

    toLocation.name = self.mendDetail.shopName;

    [MKMapItem openMapsWithItems:@[currentLocation, toLocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving,MKLaunchOptionsShowsTrafficKey: [NSNumber numberWithBool:YES]}];

    }

    -(void)opsenBaiduMap{

    double latitude =self.coordinate.latitude;

    double longitude =self.coordinate.longitude;

    NSString *urlString = [NSString stringWithFormat:@"baidumap://map/direction?origin=%f,%f&destination=%@,%@&mode=driving&region=北京",latitude,longitude,self.mendDetail.dimensions,self.mendDetail.longitude];

    urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

    NSURL *mapUrl = [NSURL URLWithString:urlString];

    if ([[UIApplication sharedApplication] canOpenURL:mapUrl]) {

    [[UIApplication sharedApplication] openURL:mapUrl];

    } else {

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:@"您的手机没有安装百度地图" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];

    [alert show];

    }

    }

    - (UIColor *)actionSheet:(FMActionSheet *)actionSheet buttonTextColorAtIndex:(NSInteger)bottonIndex{

    UIColor *textColor = [UIColor colorWithR:41 G:140 B:82 alpha:1.];

    return textColor;

    }

    #pragma mark -显示大头针

    - (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id )annotation{

    if (![annotation isKindOfClass:[RouteAnnotation class]]) return nil;

    return [self getRouteAnnotationView:mapView viewForAnnotation:(RouteAnnotation *)annotation];

    }

    #pragma mark 获取路线的标注,显示到地图

    - (BMKAnnotationView*)getRouteAnnotationView:(BMKMapView *)mapview viewForAnnotation:(RouteAnnotation*)routeAnnotation{

    BMKAnnotationView *view = nil;

    switch (routeAnnotation.type) {

    case 0:

    {

    view = [mapview dequeueReusableAnnotationViewWithIdentifier:@"start_node"];

    if (view == nil) {

    view = [[BMKAnnotationView alloc] initWithAnnotation:routeAnnotation reuseIdentifier:@"start_node"];

    view.image = [UIImage imageWithContentsOfFile:[self getMyBundlePath1:@"images/icon_nav_start"]];

    view.centerOffset = CGPointMake(0, -(view.frame.size.height * 0.5));

    view.canShowCallout = true;

    }

    view.annotation = routeAnnotation;

    }

    break;

    case 1:

    {

    view = [mapview dequeueReusableAnnotationViewWithIdentifier:@"end_node"];

    if (view == nil) {

    view = [[BMKAnnotationView alloc] initWithAnnotation:routeAnnotation reuseIdentifier:@"end_node"];

    view.image = [UIImage imageWithContentsOfFile:[self getMyBundlePath1:@"images/icon_nav_end"]];

    view.centerOffset = CGPointMake(0, -(view.frame.size.height * 0.5));

    view.canShowCallout = true;

    }

    view.annotation =routeAnnotation;

    }

    break;

    case 4:

    {

    view = [mapview dequeueReusableAnnotationViewWithIdentifier:@"route_node"];

    if (view == nil) {

    view = [[BMKAnnotationView alloc] initWithAnnotation:routeAnnotation reuseIdentifier:@"route_node"];

    view.canShowCallout = true;

    } else {

    [view setNeedsDisplay];

    }

    UIImage *image = [UIImage imageWithContentsOfFile:[self getMyBundlePath1:@"images/icon_direction"]];

    view.image = [image imageRotatedByDegrees:routeAnnotation.degree];

    view.annotation = routeAnnotation;

    }

    break;

    default:

    break;

    }

    return view;

    }

    #pragma mark 驾车路线

    -(void)showDriveSearch{

    //线路检索节点信息

    BMKPlanNode *start = [[BMKPlanNode alloc] init];

    start.pt = self.coordinate;

    start.cityName = @"北京市";

    BMKPlanNode *end = [[BMKPlanNode alloc] init];

    CLLocationCoordinate2D endCoordinate = CLLocationCoordinate2DMake([self.mendDetail.dimensions doubleValue], [self.mendDetail.longitude doubleValue]);

    end.pt = endCoordinate;

    end.cityName = @"北京市";

    BMKDrivingRoutePlanOption *drivingRouteSearchOption = [[BMKDrivingRoutePlanOption alloc] init];

    drivingRouteSearchOption.from = start;

    drivingRouteSearchOption.to = end;

    BOOL flag = [_routesearch drivingSearch:drivingRouteSearchOption];

    if (flag) {

    }

    }

    #pragma mark 返回驾乘搜索结果

    - (void)onGetDrivingRouteResult:(BMKRouteSearch*)searcher result:(BMKDrivingRouteResult*)result errorCode:(BMKSearchErrorCode)error

    {

    NSArray* array = [NSArray arrayWithArray:_mapView.annotations];

    [_mapView removeAnnotations:array];

    array = [NSArray arrayWithArray:_mapView.overlays];

    [_mapView removeOverlays:array];

    if (error == BMK_SEARCH_NO_ERROR) {

    //表示一条驾车路线

    BMKDrivingRouteLine* plan = (BMKDrivingRouteLine*)[result.routes objectAtIndex:0];

    // 计算路线方案中的路段数目

    int size = (int)[plan.steps count];

    int planPointCounts = 0;

    for (int i = 0; i < size; i++) {

    //表示驾车路线中的一个路段

    BMKDrivingStep* transitStep = [plan.steps objectAtIndex:i];

    if(i==0){

    RouteAnnotation* item = [[RouteAnnotation alloc]init];

    item.coordinate = plan.starting.location;

    item.title = @"起点";

    item.type = 0;

    [_mapView addAnnotation:item]; // 添加起点标注

    }else if(i==size-1){

    RouteAnnotation* item = [[RouteAnnotation alloc]init];

    item.coordinate = plan.terminal.location;

    item.title = @"终点";

    item.type = 1;

    [_mapView addAnnotation:item]; // 添加终点标注

    }

    //添加annotation节点

    RouteAnnotation* item = [[RouteAnnotation alloc]init];

    item.coordinate = transitStep.entrace.location;

    item.title = transitStep.entraceInstruction;

    item.degree = transitStep.direction * 30;

    item.type = 4;

    [_mapView addAnnotation:item];

    //轨迹点总数累计

    planPointCounts += transitStep.pointsCount;

    }

    // 添加途经点

    if (plan.wayPoints) {

    for (BMKPlanNode* tempNode in plan.wayPoints) {

    RouteAnnotation* item = [[RouteAnnotation alloc]init];

    item.coordinate = tempNode.pt;

    item.type = 5;

    item.title = tempNode.name;

    [_mapView addAnnotation:item];

    }

    }

    //轨迹点

    BMKMapPoint * temppoints = new BMKMapPoint[planPointCounts];

    int i = 0;

    for (int j = 0; j < size; j++) {

    BMKDrivingStep* transitStep = [plan.steps objectAtIndex:j];

    int k=0;

    for(k=0;k

    temppoints[i].x = transitStep.points[k].x;

    temppoints[i].y = transitStep.points[k].y;

    i++;

    }

    }

    // 通过points构建BMKPolyline

    BMKPolyline* polyLine = [BMKPolyline polylineWithPoints:temppoints count:planPointCounts];

    [_mapView addOverlay:polyLine]; // 添加路线overlay

    delete []temppoints;

    [self mapViewFitPolyLine:polyLine];

    }

    }

    #pragma mark 根据overlay生成对应的View

    -(BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id)overlay{

    if ([overlay isKindOfClass:[BMKPolyline class]]) {

    BMKPolylineView* polylineView = [[BMKPolylineView alloc] initWithOverlay:overlay];

    polylineView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:1];

    polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];

    polylineView.lineWidth = 3.0;

    return polylineView;

    }

    return nil;

    }

    #pragma mark 根据polyline设置地图范围

    - (void)mapViewFitPolyLine:(BMKPolyline *) polyLine {

    CGFloat ltX, ltY, rbX, rbY;

    if (polyLine.pointCount < 1) return;

    BMKMapPoint pt = polyLine.points[0];

    ltX = pt.x, ltY = pt.y;

    rbX = pt.x, rbY = pt.y;

    for (int i = 0; i < polyLine.pointCount; i++) {

    BMKMapPoint pt = polyLine.points[i];

    if (pt.x < ltX) {

    ltX = pt.x;

    }

    if (pt.x > rbX) {

    rbX = pt.x;

    }

    if (pt.y > ltY) {

    ltY = pt.y;

    }

    if (pt.y < rbY) {

    rbY = pt.y;

    }

    }

    BMKMapRect rect;

    rect.origin = BMKMapPointMake(ltX , ltY);

    rect.size = BMKMapSizeMake(rbX - ltX, rbY - ltY);

    [_mapView setVisibleMapRect:rect];

    _mapView.zoomLevel = _mapView.zoomLevel - 0.3;

    }

    -(void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    [_mapView viewWillDisappear];

    _mapView.delegate = nil; // 不用时,置nil

    _routesearch.delegate = nil;

    }

    @end

    展开全文
  • -(void)showAnnotationPoints:(NSArray *)aArray{ if(aArray||aArray.count==0){ return; } BMKMapRect zoomRect = BMKMapRectNull; for (BMKPointAnnotation *an in aArray) { ...
  • IOS百度地图经典demo

    千次下载 热门讨论 2013-07-17 16:04:05
    新手会需要的。IOS百度地图经典demo
  • ios百度地图自定义大头针

    热门讨论 2013-10-07 17:16:17
    仿安居客app客户端效果,自定义大头针,大头针带有请求数据的数据量,点击大头针,弹出一个列表,点击跳到详细页面
  • ios百度地图

    2013-01-26 10:46:20
    一个调用百度api的ios百度地图Demo
  • 百度地图 —— 百度坐标系:bd09 高德地图 —— 火星坐标系:GCJ-02坐标系 使用第三方https://github.com/JackZhouCn/JZLocationConverter *高德坐标转成百度的* /** * @...
  • iOS百度地图导航

    千次阅读 2016-09-09 15:42:54
    手把手教你实现百度地图导航功能! 一 :将工程中导入百度地图库  1.首先将百度地图SDK导入到工程里,这里我就不演示用手动导了,直接Cocopods导,首先打开终端,终端输入cd / +你的工程 路径,如下图...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,812
精华内容 4,724
关键字:

ios百度地图