[iOS]Swift调用百度地图之概述
2017-10-20 14:23
435 查看
最近刚学Swift,总想着搞个大事件,可是实力不行,大事件还是不要搞了。利用百度地图简单写个小Demo吧。这样还能巩固Swift语法上的一些概念。百度SDK的下载,注册这里就不做介绍了。这里只写出自己如何思考以及如何利用百度地图SDK提供的API来实现自己的功能。
概述
利用地图SDK提供的定位服务,实现自己的功能。
总结
概述
其实,市场上有几款很成熟的地图SDK供我们选择,对于大部分人来说,这些成熟的地图SDK提供的功能,都能满足我们的需求,问题在于,有时候很纠结啊!到底选择那个地图好呢?与其纠结那个地图好,倒不如想想,自己的APP需求是什么。这样自己封装出一些类供APP调用,而支撑这些类的功能代码,可以随意选择一个SDK。这样后期如果想更换SDK,其实很简单的事情,只需要在自己封装的类里改动就行了。调用封装类的代码无须改动。
利用地图SDK提供的定位服务,实现自己的功能
第一个类,获取坐标地址。需实现两个类,功能类和模型类。
功能类,提供坐标。
模型类,封装坐标信息、以及坐标所在的地址。之所以不用第三方提供的类型,是因为第三方不可能遵循一个标准。自己封装一个数据模型类。
这里简单的给出了AGLocation、AGUserLocation的头文件,如果想看实现文件查看https://gitee.com/ag_explore/MapForSwift。
简单的给出了AGLocation,项目中如果需要坐标的话,只需要创建AGLocation对象即可。AGLocation的功能可以是第三方SDK提供。也可以是iOS API提供。总之,上层调用者不关心AGLocation的实现。这应该是开发AGLocation的猿应该关心的事情。
下面给出调用方法
总结
使用AGLocation不关心AGLocation是这么实现的,它只需要关心AGLocation提供的功能是否满足。而AGLocation的实现,则需要实现AGLocation的程序员关心。这样做的好处是,我后期可以替换任何SDK。
这篇只是定位服务,下篇封装地图。
概述
利用地图SDK提供的定位服务,实现自己的功能。
总结
概述
其实,市场上有几款很成熟的地图SDK供我们选择,对于大部分人来说,这些成熟的地图SDK提供的功能,都能满足我们的需求,问题在于,有时候很纠结啊!到底选择那个地图好呢?与其纠结那个地图好,倒不如想想,自己的APP需求是什么。这样自己封装出一些类供APP调用,而支撑这些类的功能代码,可以随意选择一个SDK。这样后期如果想更换SDK,其实很简单的事情,只需要在自己封装的类里改动就行了。调用封装类的代码无须改动。
利用地图SDK提供的定位服务,实现自己的功能
第一个类,获取坐标地址。需实现两个类,功能类和模型类。
功能类,提供坐标。
模型类,封装坐标信息、以及坐标所在的地址。之所以不用第三方提供的类型,是因为第三方不可能遵循一个标准。自己封装一个数据模型类。
//这里采用Objective-C实现功能类。 #import <Foundation/Foundation.h> #import <BaiduMapAPI_Location/BMKLocationComponent.h> /** * 设置locationAttributes属性,具体含义可参考CLLocationManager相关属性的注释。 */ typedef NSString* AGLocationAttributedStringKey; UIKIT_EXTERN AGLocationAttributedStringKey const AGDistanceFilterAttributeName; //CLLocationDistance UIKIT_EXTERN AGLocationAttributedStringKey const AGDesiredAccuracyAttributeName; //CLLocationAccuracy UIKIT_EXTERN AGLocationAttributedStringKey const AGHeadingFilterAttributeName; //CLLocationDegrees UIKIT_EXTERN AGLocationAttributedStringKey const AGPausesLocationUpdatesAutomaticallyAttributeName; //BOOL UIKIT_EXTERN AGLocationAttributedStringKey const AGAllowsBackgroundLocationUpdatesAttributeName; //BOOL @class AGUserLocation; typedef void(^UserLocation)(AGUserLocation *userLocation); @interface AGLocation : NSObject @property (nonatomic, strong) NSDictionary<AGLocationAttributedStringKey, id> *locationAttributes; //定位参数,定位根据参数,进行何时更新 @property (nonatomic, copy) UserLocation userlocation; //回调方法 - (void)startLocation; //开始定位 - (void)stopLocation; //停止定位 @end // 数据模型类 #import <Foundation/Foundation.h> @class CLLocation; @interface AGUserLocation : NSObject // 位置信息,尚未定位成功,则该值为nil @property (nonatomic, strong) CLLocation *location; // 定位标注点要显示的标题信息 @property (nonatomic, strong) NSString *title; /// 其它信息 @property (nonatomic, strong) NSString *other; @end
这里简单的给出了AGLocation、AGUserLocation的头文件,如果想看实现文件查看https://gitee.com/ag_explore/MapForSwift。
简单的给出了AGLocation,项目中如果需要坐标的话,只需要创建AGLocation对象即可。AGLocation的功能可以是第三方SDK提供。也可以是iOS API提供。总之,上层调用者不关心AGLocation的实现。这应该是开发AGLocation的猿应该关心的事情。
下面给出调用方法
//这里使用的是Swift _location = AGLocation() _location?.locationAttributes = [AGDistanceFilterAttributeName:kCLLocationAccuracyBest] _location?.userlocation = { (userLocation:AGUserLocation?) -> Void in if let userLocation = userLocation { print("定位成功") print(userLocation.location) } else { print("定位失败") } } _location?.start() //开启定位
总结
使用AGLocation不关心AGLocation是这么实现的,它只需要关心AGLocation提供的功能是否满足。而AGLocation的实现,则需要实现AGLocation的程序员关心。这样做的好处是,我后期可以替换任何SDK。
这篇只是定位服务,下篇封装地图。
相关文章推荐
- iOS开发swift如何调用系统相册和相机获取图片设置用户头像
- iOS-Swift调用OC的Block
- iOS开发笔记--OC工程中调用不了Swift代码
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
- [iOS开发]Swift调用Objective-C代码
- iOS开发中OC调用Swift报错
- iOS Swift百度地图 添加多个标注
- iOS开发之swift与OC混编出现的坑,oc中不能对swift的代理进行调用,不能访问swift中的代理,swift中的回调方法
- iOS开发笔记(Swift)-针对Swift调用PPiFlatSegmentedControl项目的一些修改
- Swift打包Framework,兼容Objective-C项目调用(Xcode9.4 iOS11
- [ios][swift]swift GPS传感器的调用
- iOS调用百度地图 V2.3.0
- IOS Object-C与Swift相互调用
- IOS开发-使用Alamofire 和 SwiftyJSON 完成服务器api的调用
- IOS 调用百度地图(SDK) 进行定位以及自定义位置弹出框(气泡)
- iOS混合编程之使用Swift+Objective-C调用WebService
- iOS 调用百度地图(网页和客户端两种)
- Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)
- 75.百度地图的URL分享--iOS 调用百度地图App进行导航