iOS经典讲解之百度地图的使用及案例(iOS地图SDK)

地图API选型与实战:从高德百度到Google Mapbox的避坑指南 地图API是现代应用开发中实现位置服务与地理可视化的核心技术组件,其本质是将地理坐标数据转化为用户可交互的地图界面。其工作原理通常基于瓦片地图、地理编码和路径规划算法,通过RESTful API或JavaScript SDK为开发者提供服务。这项技术的核心价值在于为各类应用提供精准的空间数据支持,极大提升了涉及地理位置功能的开发效率与用户体验。在应用场景上,它广泛服务于出行导航、物流配送、本地生活服务、房产展示及社交应用等多个领域。本文聚焦于地图API的选型策略与工程实践,系统对比了高德、百度、腾讯等国内主 阅读详情

准备工作:

一、去百度开发平台注册,并且获得密钥,具体步骤百度开发平台详细说明,并且下载相应的BaiduMapAPI.framework。

二、引入BaiduMapAPI.framework

将所需的BaiduMapAPI.framework拷贝到工程所在文件夹下。在 TARGETS->Build Phases-> Link Binary With Libaries中点击“+”按钮,在弹出的窗口中点击“Add Other”按钮,选择BaiduMapAPI.framework文件添加到工程中。

三、引入所需的系统库

百度地图SDK中提供了定位功能和动画效果,v2.0.0版本开始使用OpenGL渲染,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework、SystemConfiguration.framework、CoreGraphics.framework、Security.framework。添加方式:在Xcode的Project -> Active Target ->Build Phases ->Link Binary With Libraries,添加这几个framework即可。

四、环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。

五、引入mapapi.bundle资源文件

如果使用了基础地图功能,需要添加该资源,否则地图不能正常显示

方法:选中工程名,在右键菜单中选择Add Files to “工程名”…,从BaiduMapAPI.framework||Resources文件中选择mapapi.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。

六、引入头文件

在使用SDK的类引入头文件:

#import <BaiduMapAPI/BMapKit.h>//引入所有的头文件
 
#import <BaiduMapAPI/BMKMapView.h>//只引入所需的单个头文件

七、在info.plist文件中添加

NSLocationWhenInUseUsageDescription

NSLocationAlwaysUsageDescription

Bundle display name等字段。因为百度提供的类中使用了

- (void)requestWhenInUseAuthorization

- (void)requestAlwaysAuthorization,方法。具体原因详见 iOS经典讲解之地图定位请求位置信息时出现的问题

如图所示:


准备工作完成后,下面是具体示例代码:

//
//  ViewController.m
//  BaiDuMapSample
#import "ViewController.h"
#import <BaiduMapAPI/BMapKit.h>
@interface ViewController () <BMKGeneralDelegate, BMKMapViewDelegate, BMKLocationServiceDelegate, BMKGeoCodeSearchDelegate, BMKRouteSearchDelegate>
// 开始城市
@property (nonatomic, strong) UITextField *startCityTF;
// 开始地址
@property (nonatomic, strong) UITextField *startAddressTF;
// 终点城市
@property (nonatomic,strong) UITextField *endCityTF;
// 终点地址
@property (nonatomic, strong) UITextField *endAddressTF;
// 添加地图
@property (nonatomic, strong) BMKMapView *mapView;
// 定位服务对象(专门用于定位)
@property (nonatomic, strong) BMKLocationService *locationService;
//声明地理位置搜索对象(负责地理编码)
@property (nonatomic, strong) BMKGeoCodeSearch *geocoder;
// 声明路线搜索服务对象
@property (nonatomic, strong) BMKRouteSearch *routeSearch;
// 开始路线检索节点
@property (nonatomic, strong) BMKPlanNode *statNode;
// 目标路线检索节点
@property (nonatomic, strong) BMKPlanNode *endNode;

@end

@implementation ViewController
-(void)dealloc
{
    self.geocoder.delegate = nil;
    self.locationService.delegate = nil;
    self.mapView.delegate = nil;
    self.routeSearch.delegate = nil;

}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 因为百度SDK的引擎是使用C++代码写成,所以我们必须保证我们的工程中至少有一个文件是.mm后缀
    // 创建百度地图主引擎类(使用百度地图功能之前必须启动引擎)
    BMKMapManager *manager = [[BMKMapManager alloc] init];
    // 启动引擎
    // foIpeFfSSd5SGy2fKxLmD0M8百度开发者平台注册的密钥
    // 注意要把NSLocationWhenInUseUsageDescription NSLocationAlwaysUsageDescription 字段添加到plist文件中
    [manager start:@"foIpeFfSSd5SGy2fKxLmD0M8" generalDelegate:self];
    
    
    // 设置内边距
    if ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
    }
    
    // 搭建UI
    [self addSubViews];
    
    // 创建定位服务对象
    self.locationService = [[BMKLocationService alloc] init];
    // 设置定位服务对象的代理
    self.locationService.delegate = self;
    // 设置再次定位的最小距离
    [BMKLocationService setLocationDistanceFilter:10];
    
    
    // 创建地理位置搜索对象
    self.geocoder = [[BMKGeoCodeSearch alloc] init];
    // 设置代理
    self.geocoder.delegate = self;
    
    
    // 创建routeSearch服务对象
    self.routeSearch = [[BMKRouteSearch alloc] init];
    // 设置代理
    self.routeSearch.delegate = self;
    
}

/**
 *  搭建UI方法
 */

- (void)addSubViews
{
    // 设置barButtonItem
    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"开始定位" style:(UIBarButtonItemStylePlain) target:self action:@selector(leftAction:)];
    self.navigationItem.leftBarButtonItem = leftButton;
    
    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithTitle:@"关闭定位" style:(UIBarButtonItemStylePlain) target:self action:@selector(rightAction:)];
    self.navigationItem.rightBarButtonItem = rightButton;
    
    // 设置textField
    // 开始城市
    self.startCityTF = [[UITextField alloc] initWithFrame:CGRectMake(20, 30, 100, 30)];
    self.startCityTF.text = @"开始城市";
    [self.view addSubview:self.startCityTF];
    // 开始地址
    self.startAddressTF = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(self.startCityTF.frame) + 30, CGRectGetMinY(self.startCityTF.frame), CGRectGetWidth(self.startCityTF.frame), CGRectGetHeight(self.startCityTF.frame))];
    self.startAddressTF.text = @"开始地址";
    [self.view addSubview:self.startAddressTF];
    // 目的城市
    self.endCityTF = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMinX(self.startCityTF.frame), CGRectGetMaxY(self.startCityTF.frame) + 10, CGRectGetWidth(self.startCityTF.frame), CGRectGetHeight(self.startCityTF.frame))];
    self.endCityTF.text = @"目的城市";
    [self.view addSubview:self.endCityTF];
    // 目的地址
    self.endAddressTF = [[UITextField alloc] initWithFrame:CGRectMake(CGRectGetMaxX(self.endCityTF.frame) + 30, CGRectGetMinY(self.endCityTF.frame), CGRectGetWidth(self.endCityTF.frame), CGRectGetHeight(self.endCityTF.frame))];
    self.endAddressTF.text = @"目的地址";
    [self.view addSubview:self.endAddressTF];;
    
    // 添加线路规划按钮
    UIButton *roadButton = [UIButton buttonWithType:UIButtonTypeCustom];
    roadButton.frame = CGRectMake(CGRectGetMaxX(self.startAddressTF.frame) + 10, CGRectGetMaxY(self.startAddressTF.frame), 100, 30);
    [roadButton setTitle:@"线路规划" forState:UIControlStateNormal];
    [roadButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    // 设置点击方法
    [roadButton addTarget:self action:@selector(roadAction:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:roadButton];

    // 添加地图
    self.mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.endAddressTF.frame) + 5, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - CGRectGetMaxY(self.endAddressTF.frame) - 5)];
    // 设置代理
    self.mapView.delegate = self;
    [self.view addSubview:self.mapView];
 
   
}

// 开始定位方法
- (void)leftAction:(UIBarButtonItem *)leftButton
{
    // 开启定位服务
    [self.locationService startUserLocationService];
    // 在地图上显示用户位置
    self.mapView.showsUserLocation = YES;
    
}
// 关闭定位方法
- (void)rightAction:(UIBarButtonItem *)rightButton
{
    // 关闭定位服务
    [self.locationService stopUserLocationService];
    // 设置地图不显示用户位置
    self.mapView.showsUserLocation = NO;
    // 删除我们添加的标注对象
    [self.mapView removeAnnotation:self.mapView.annotations.lastObject];
}
// 线路规划点击方法
- (void)roadAction:(UIButton *)button
{
    // 完成正向地理编码
    // 1、创建正向地理编码选项对象
    BMKGeoCodeSearchOption *geocoderOption = [[BMKGeoCodeSearchOption alloc] init];
    // 2、给进行正向地理位置编码的位置赋值
    geocoderOption.city = self.startCityTF.text;
    geocoderOption.address = self.startAddressTF.text;
    // 执行地理位置编码
    [self.geocoder geoCode:geocoderOption];
    
    
}
#pragma mark - BMKLocationService代理方法
-(void)willStartLocatingUser
{
    NSLog(@"开始定位");
}
-(void)didFailToLocateUserWithError:(NSError *)error
{
    NSLog(@"定位失败%@", error);
}

/**
 *  定位成功,再次定位的方法(定位成功触发)
 */
-(void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
    // 完成地理反编码
    // 1、创建反向地理编码选项对象
    BMKReverseGeoCodeOption *reverseOption = [[BMKReverseGeoCodeOption alloc] init];
    // 2、给反向地理编码选项对象坐标点赋值
    reverseOption.reverseGeoPoint = userLocation.location.coordinate;
    // 3、执行反向地理编码操作
    [self.geocoder reverseGeoCode:reverseOption];
    
}

#pragma mark - BMKGeoCodeSearch代理方法

//反编码代理方法执行
-(void)onGetReverseGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKReverseGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
{
    // 定义大头针标注
    BMKPointAnnotation *annotation = [[BMKPointAnnotation alloc] init];
    // 设置标注位置坐标
    annotation.coordinate = result.location;
    annotation.title = result.address;
    annotation.subtitle = [NSString stringWithFormat:@"%f-%f", result.location.latitude, result.location.longitude];
    // 添加到地图里
    [self.mapView addAnnotation:annotation];
    // 使地图显示该位置
    [self.mapView setCenterCoordinate:result.location animated:YES];
}
// 正向编码代理方法
-(void)onGetGeoCodeResult:(BMKGeoCodeSearch *)searcher result:(BMKGeoCodeResult *)result errorCode:(BMKSearchErrorCode)error
{
    //
    if ([result.address isEqualToString:self.startAddressTF.text]) {
        // 当前编码的对象是开始节点
        self.statNode = [[BMKPlanNode alloc] init];
        //给节点的坐标位置赋值
        _statNode.pt = result.location;
        // 发起对目标节点的地理编码
        // 1、创建正向地理编码选项对象
        BMKGeoCodeSearchOption *geoOption = [[BMKGeoCodeSearchOption alloc] init];
        geoOption.city = self.endCityTF.text;
        geoOption.address = self.endAddressTF.text;
        // 执行编码
        [self.geocoder geoCode:geoOption];
        
         self.endNode = nil;
    } else {
        
        self.endNode = [[BMKPlanNode alloc] init];
        _endNode.pt = result.location;
    }
    if (_statNode != nil && _endNode != nil) {
        
        // 开始执行路线规划
        
        //1、创建驾车路线规划 这里以自驾模式为例 还可以是公交路线或者步行路线规划
        BMKDrivingRoutePlanOption *drivingRouteOption = [[BMKDrivingRoutePlanOption alloc] init];
        // 2、指定开始节点和目标节点
        drivingRouteOption.from = _statNode;
        drivingRouteOption.to = _endNode;
        // 3、让路线搜索服务对象搜索路线 开始执行代理方法
        [self.routeSearch drivingSearch:drivingRouteOption];
        
    }
    
}
// 获取到自驾路线回调
- (void)onGetDrivingRouteResult:(BMKRouteSearch *)searcher result:(BMKDrivingRouteResult *)result errorCode:(BMKSearchErrorCode)error
{
    // 删除原来的覆盖物
    NSArray *array = [NSArray arrayWithArray:self.mapView.annotations];
    [self.mapView removeAnnotations:array];
    // 删除overlays(原来的痕迹)
    array = [NSArray arrayWithArray:self.mapView.overlays];
    [self.mapView removeOverlays:array];
    //
    if (error == BMK_SEARCH_NO_ERROR) {
        // 选取获取到所有路线中的一条路线
        BMKDrivingRouteLine *plan = [result.routes objectAtIndex:0];
        // 计算路线方案中路段的数目
        NSUInteger size = [plan.steps count];
        // 声明一个整型变量用来计算所有轨迹点的总数
        int planPointCounts = 0;
        for (int i = 0; i < size; i++) {
            // 获取路线中的路段
            BMKDrivingStep *step = plan.steps[i];
            if (i == 0) {
                // 地图显示经纬区域
                [self.mapView setRegion:BMKCoordinateRegionMake(step.entrace.location, BMKCoordinateSpanMake(0.001, 0.001))];
            }
            
            // 累计轨迹点
            planPointCounts += step.pointsCount;
        }
        
        // 声明一个结构体数组来保存所有的轨迹点(每一个轨迹点都是一个结构体)
        // 轨迹点结构体的名字为BMKMapPoint C++写法,必须写在.mm文件中
        BMKMapPoint *tempPoints = new BMKMapPoint[planPointCounts]; // 声明一个有planPointCounts个元素的数组,数组名为tempPoints
        int i = 0;
        for (int j = 0; j < size; j++) {
            BMKDrivingStep *transitStep = [plan.steps objectAtIndex:j];
            int k = 0;
            for (k = 0; k < transitStep.pointsCount; k++) {
                // 获取每个轨迹点的x y放入数组中
                tempPoints[i].x = transitStep.points[k].x;
                tempPoints[i].y = transitStep.points[k].y;
                i++;
                
            }
        }
        
        // 通过轨迹点构造BMKPolyline(折线)
        BMKPolyline *polyline = [BMKPolyline polylineWithPoints:tempPoints count:planPointCounts];
        // 添加到mapView上
        // 想要在地图上显示轨迹 只能先添加overlay对象(类似大头针标注)添加好之后,地图就会根据设置的overlay显示出轨迹
        [self.mapView addOverlay:polyline];
    }
}

#pragma mark - mapView代理方法
-(BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id<BMKOverlay>)overlay
{
    if ([overlay isKindOfClass:[BMKPolyline class]]) {
        
        // 创建要显示的折线
        BMKPolylineView *view = [[BMKPolylineView alloc] initWithOverlay:overlay];
        // 设置该线条的填充颜色
        view.fillColor = [UIColor redColor];
        // 设置线条颜色
        view.strokeColor = [UIColor redColor];
        // 设置线条宽度
        view.lineWidth = 3;
        return view;
    }
    
    return nil;
}

@end


注:静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm)。

代码中包含C++语法因此必须写在.mm文件中。例如BMKMapPoint *tempPoints = new BMKMapPoint[planPointCounts];,因此上面代码一定要写在.mm文件中。

iOS应用中的百度地图定位与附近搜索实现 在移动应用开发中,地理位置服务是至关重要的功能之一,它不仅能够提升用户体验,还能为应用带来更丰富的交互可能性。iOS平台上的百度地图SDK提供了一系列强大的定位和搜索功能,允许开发者在他们的应用中嵌入地图视图,并实现基于位置的服务。百度地图提供的POI搜索API支持多种检索方式,包括关键词搜索、周边搜索和路径搜索等。在关键词搜索中,开发者可以根据提供的关键词和限定条件(如地点类别、行政区划、范围、偏移量等)返回搜索结果。这些API的调用依赖于已经正确配置的百度地图SDK和有效的AppID。 阅读详情

相关推荐

ios百度地图的使用(普通定位、反地理编码)

iOS定位 - 普通定位(没有地图) - 反地理编码(得到具体位置)使用代码如何实现呢,下面小编就给大家详解ios百度地图的使用(普通定位、反地理编码,有需要的朋友可以参考下

IOS中使用百度地图定位后获取城市坐标,城市名称,城市编号信息

百度地图定位后如何获取城市编号

nameis2541748437的专栏 1万+

基于FaceX-Zoo实现的Face Mask Adding人脸戴口罩

人脸系列文章目录 文章目录人脸系列文章目录前言一、加口罩效果二、实现原理二、代码实现 前言 目前人脸加口罩均为在人脸位置贴图式的,非常不真实。前段时间京东开源一个基于PRnet实现的3D口罩拟合人脸,加口罩非常逼真,但是只是单独一个加口罩demo,没有完整的流程。于是本人结合人脸检测,关键点对齐。PRnet加口罩实现一个完整的加口罩流程。只需一个命令简单方便调用,实现人脸加口罩。 https://github.com/JDAI-CV/FaceX-Zoo 一、加口罩效果 下图可以看出效果还是非常逼真的

zengwb的博客 3390

苹果手机上百度地图嗲音语音包使用教程

苹果手机上百度地图的嗲音语音包的使用教程

bugsycrack的博客 1万+

使用VNC可视化Docker容器

Docker容器可视化

Robert_Q的博客 1万+

封神台靶场,为了小芳,冲之——cookie注入

第二个靶场 打开网站 找一下注入点 一般在新闻这种里面点开看看 先判断是否存在注入 有waf 尝试了很多方法绕过都没成功,/and/,aandnd,AnD等一系列都没绕过去,乌鸡鲅鱼 删掉id=169 发现 然后判断cookie注入 在搜索框输入 Javascript:alert(document.cookie=”id=”+escape(‘169’)); 然后弹窗了(其中 “id=” 取决URL中的id= escape中的数值也是URL中id=的值)返回刚刚的页面,把ID删除后一样能正常显示。说明服务器能

Wubuqing的博客 650

百度地图如何引入mapapi.bundle资源文件

mapapi.bundle 文件在这里

wfkart2196的博客 2264

Visual Studio Code + MCP Server + Claude Code 三件套进行 ABAP 开发

本文介绍了如何在Visual Studio Code中利用Claude Code和SAP官方提供的MCP Server进行ABAP开发。作者分享了19年ABAP开发经验,从手动编码到如今通过自然语言生成高质量代码的技术演进。详细说明了配置步骤:启用ADT MCP Server、安装Claude Code扩展、配置.claude.json文件,并验证MCP Server的14个功能。通过实例演示了如何用自然语言指令让Claude Code创建包含冒泡排序实现和单元测试的ABAP类,展示了MCP Server在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1295

地图所需资源文件不完整,请根据开发指南正确添加mapapi.bundle文件

为什么80%的码农都做不了架构师?>>> ...

weixin_34384681的博客 576

uniapp - 实现APP后台持续定位+手机息屏后能持续上传位置信息数据,详解后台保活持续运行+手机锁屏保证后台持续/实时定位的解决方案及示例源码(完美兼容安卓android与苹果ios系统手机)

使用uniapp开发app实现后台保活定位能力,uniapp实时定位保活 息屏定位后台运行,uniapp APP实时定位高德 后台运行 支持锁屏息屏运行,持续获取定位信息,uniapp App端后台间隔时间发送定位功能实现,UniApp实现手机应用常活,固定时间内上传手机位置信息,后台(或锁屏)持续/实时定位的实现方案,uni-app后台持续定位,锁屏后能持续上传位置信息,实现后台定位持续无限制定位高德定位,百度定位,UniApp后台持续定位保如何在APP退到后台时保持定位服务,uniapp 切换app仍能

🏆 前端领域优质创作者 1万+

超十万字解读Spring AI实战:开篇

大模型技术正以惊人的速度改变世界,2025年的人工智能已不再是科幻,而是现实。大模型如ChatGPT等,正在重塑各行各业,降低技术门槛,使专业能力普及化。SpringAI的出现为Java开发者提供了桥梁,使其能在企业级系统中稳定运行AI,同时保持工程化思维。尽管SpringAI在生态、学习成本和性能上存在不足,但其企业级基因和国产化适配能力使其成为Java开发者的重要工具。本系列文章旨在介绍SpringAI的功能与特性,鼓励更多Java开发者参与AI实践,共同探索AI时代的无限可能。

liaokailin的专栏 1575

iOS经典讲解之解决集成百度鹰眼上传App Store经常出现的问题

学习视频,点击这里!!! 如果应用集成百度鹰眼,在打包上传App Store时提示一大堆错误,其中有一条错误代码是90087。 问题描述:可以直接使用鹰眼iOS SDK进行开发测试,但是上架到APP STORE时,由于苹果公司的要求,只能使用真机对应CPU架构的SDK,所以需要开发者需要使用lipo命令合成自身需要的CPU架构版本的SDK。 解决方案如下。 1.从你的工程中找到BaiduT...

刘新林的技术博客 1852

【数据集】2019年中国1km格网河网密度数据集

中国1km格网河网密度数据集

WW、forever的博客 1342

【粉丝福利社】Android应用案例开发大全(第4版)

《Android应用案例开发大全(第4版)》是一本面向Android开发者的实战指南,通过11个完整项目案例覆盖了LBS、AR、3D等热门技术。全书共12章,包含单机应用、网络应用、商业案例及游戏开发等多元场景,如3D动态壁纸、LBS应用、AR教育软件等,并提供完整源代码下载。 作者团队由资深技术专家组成,结合十余年开发与教学经验,系统讲解了Android高级开发技巧。本书特色包括前沿技术整合、详细开发步骤解析、真实项目策划方案,适合各层次开发者学习进阶。案例涵盖OpenGL ES、百度地图二次开发、流体仿

愚公智库 1万+

YOLOv11改进 | 损失函数改进篇 | 2024最新高质量的目标检测边界框回归损失Unified-IoU、FocalUIoU、FocalInvUIoU(设置动态epoch参数)

本文给大家带来的改进机制是最近新提出的高质量的目标检测边界框回归损失,其通过动态调整模型对不同质量预测框的关注,优化目标检测中的边界框回归精度。UIoU引入了FocalBox方法,通过缩放预测框与真实框分配权重,并采用了退火策略(引入动态参数epoch),逐渐将模型的注意力从低质量预测框转移到高质量预测框,平衡了训练速度与检测精度。其还有一定的解决样本不平衡问题,同时该损失函数可以和现有的任何边界框回归损失函数进行结合,例如ShapeIoU和其结合可以形成二次创新,它是一种类似于之前的Inner的机制.

Snu77的博客 4583

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

移动开发概述

移动开发是指为智能手机、平板等移动设备开发软件应用的过程。随着移动互联网的普及,移动应用开发已成为技术行业的一个重要分支。常见的移动开发平台包括iOS、Android,以及跨平台开发框架。移动开发是一个快速发展的领域,随着5G、AR/VR、AI等技术的应用,未来的移动应用将变得更加智能化和多元化。无论是从事Android、iOS开发,还是跨平台开发,理解平台的特性,掌握开发工具与框架,是成为一名优秀移动开发工程师的基础。希望以上内容能帮助你更好地入门或进阶移动开发。

ajie1117的博客 2371

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

移动开发是指为智能手机

移动开发是指为智能手机、平板等移动设备开发软件应用的过程。随着移动互联网的普及,移动应用开发已成为技术行业的一个重要分支。常见的移动开发平台包括iOS、Android,以及跨平台开发框架。移动开发是一个快速发展的领域,随着5G、AR/VR、AI等技术的应用,未来的移动应用将变得更加智能化和多元化。无论是从事Android、iOS开发,还是跨平台开发,理解平台的特性,掌握开发工具与框架,是成为一名优秀移动开发工程师的基础。希望以上内容能帮助你更好地入门或进阶移动开发。

laoxian0311的博客 986

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

移动开发平台与工具

移动开发是指为智能手机、平板等移动设备开发软件应用的过程。随着移动互联网的普及,移动应用开发已成为技术行业的一个重要分支。常见的移动开发平台包括iOS、Android,以及跨平台开发框架。移动开发是一个快速发展的领域,随着5G、AR/VR、AI等技术的应用,未来的移动应用将变得更加智能化和多元化。无论是从事Android、iOS开发,还是跨平台开发,理解平台的特性,掌握开发工具与框架,是成为一名优秀移动开发工程师的基础。希望以上内容能帮助你更好地入门或进阶移动开发。

ajie1117的博客 619

HTML5开发框架PhoneGap实战视频教程

HTML5开发框架PhoneGap实战(jQuery Mobile开发、API解析、3个经典项目实战) 适合人群:初级课时 数量:40课时 用到技术:HTML5、jQuery Mobile、PhoneGap 涉及项目:我要地图、豆瓣音乐、小强快跑 咨询qq:1840215592 一、课程适合的对象: Java开发想要转App开发的技术达人,移动应用开发人员,有HTML和JS基础的

xiarilove的专栏 1382

ios 集成百度地图(获取定位,反向地理编码)

原因 :之所以使用百度地图,是因为当时使用苹果自带的定位给后台传经纬度,后台用百度解析误差比较大,所以换成了百度地图 本文主要讲解下cocoapods 集成 看详细集成请点击(cocoapod集成链接) 1 、首先去百度地图开放平台注册账户 点击立即使用 然后注册 2、然后进行邮箱激活 ,申请秘钥 进入这个界面 红色框部分看项目需要哪些功能 选择哪些 然后提交 3、使用百度sdk 1) ...

哈皮吖的博客 1万+

iOS百度地图使用注意事项

百度地图使用注意事项

追梦 1705

【亲测免费】 百度地图 SDK (BaiduMapKit) 使用指南

百度地图 SDK (BaiduMapKit) 使用指南 项目介绍 百度地图 SDK(BaiduMapKit)是百度地图为移动开发者提供的强大地图服务组件,它支持iOS平台,允许开发者轻松集成百度地图功能到自己的应用程序中。通过这个SDK,你可以实现地图显示、定位、路径规划、标注管理等多种地图相关功能,从而提升应用的功能性和用户体验。 项目快速启动 安装步骤 首先,确保你的开发环境已配置Xcode并...

gitblog_00068的博客 1590

iOS原生OPENGL之贴图

iOS平台上学习OpenGL的资料比较少,加上深度也不够,比如贴图,只能用系统提供的effect类去绘制,在这里我将我整理得到的一些关于贴图的知识分享出来,希望能帮到不了解又想学gl知识的人.完整代码请参照:https://github.com/xuyaxiang/TriangleMipByShader// // ViewController.m // GoldTower // // Cre

enghou123的博客 1899

iOS高德地图SDK的运动功能实现

绘制运动时的折线轨迹 折线类为 MAPolyline,由一组经纬度坐标组成,并以有序序列形式建立一系列的线段。iOS SDK支持在3D矢量地图上绘制带箭头或有纹理等样式的折线,同时可设置折线端点和连接点的类型,以满足各种绘制线的场景。 思路:我们创建两个数组,其中一个存放用户位置的经度,一个存放用户位置的纬度,且数组长度均为2,在初始化的时候,我们将数组中的两个元素均存为初始时的经纬度,然后创建一个定时器,定时器每一秒执行一次事件函数,时间函数中先更新经纬度数组中第二个元素的内容为当前用户位置的经纬度,然后

m0_52192682的博客 1383
上一篇: iOS经典讲解之地图定位请求位置信息时出现的问题
下一篇: iOS经典讲解之实现App消息推送功能(一)
刘新林
博客等级 码龄11年 72粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值