用Swift语言使用IOS百度地图(折线的使用方法很特别)

用Swift语言使用IOS百度地图(折线的使用方法很特别),第1张

概述摘要 本文旨在讲解如何使用Swift语言单独集成百度地图的SDK 前言 百度地图iOS SDK是一套基于armv7、armv7s、arm64(自v2.5.0版本)处理器设备的应用程序接口,不仅提供构建地图的基本接口,还提供POI搜索、地理编码、路线规划、定位、本地覆盖物绘制等服务,自v2.0.0开始为矢量渲染的3D地图,并新增了矢量离线地图下载功能接口。 您可以使用百度地图iOS SDK开发适用于 摘要

本文旨在讲解如何使用Swift语言单独集成百度地图的SDK

前言

百度地图iOS SDK是一套基于armv7、armv7s、arm64(自v2.5.0版本)处理器设备的应用程序接口,不仅提供构建地图的基本接口,还提供POI搜索、地理编码、路线规划、定位、本地覆盖物绘制等服务,自v2.0.0开始为矢量渲染的3D地图,并新增了矢量离线地图下载功能接口。

您可以使用百度地图iOS SDK开发适用于移动设备的地图应用,通过接口,您可以轻松访问百度服务和数据,构建功能丰富、交互性强的地图应用程序。百度地图iOS SDK提供的功能如下:

地图:提供地图展示和地图 *** 作功能;

POI检索:支持周边检索、区域检索和城市内兴趣点检索;

地理编码:提供经纬度和地址信息相互转化的功能接口;

线路规划:支持公交、驾车、步行三种方式的线路规划;

覆盖物图层:支持在地图上添加覆盖物(标注、几何图形、热力图、地形图图层等),展示更丰富的LBS信息;

定位:获取当前位置信息,并在地图上展示(支持普通、跟随、罗盘三种模式);

离线地图:使用离线地图可节省用户流量,提供更好的地图展示效果;

导航:支持调启百度地图客户端导航和调启Web页面导航(H5导航);

LBS云检索:支持查询存储在LBS云内的自有数据;

特色功能:提供短串分享、Place详情检索、热力图等特色功能,帮助开发者搭建功能更加强大的应用;


百度地图是我使用LBS应用中开放度最高的地图之一了,但是这样的一个便捷好用SDK却没有一个完整好用的Swift的Demo教程,确实很让人伤心,百度没有跟随苹果的节奏,给我们开发者带来了一些不便,我的这篇文章旨在方便同道中人共同探讨学习。
编辑器版本

XCode Version 6.2 (6C131e)

百度地图版本

BaIDuMap_IOSSDK_v2.6.0_All

下载地址

http://developer.baIDu.com/map/index.PHP?Title=iossdk/sdkiosdev-download


duang的一声地图演示开始

一、申请密匙

至于密匙如何申请请大家参考百度的密匙申请文档,这点我就跳过不提了

密匙申请地址

http://lbsyun.baIDu.com/APIconsole/key

二、地图使用

新建一个项目叫SimpleMovIE



因为我们使用的Swift,而百度地图使用的全部是以前的ObjectC开发的,所以我们需要引入一个ObjectC写的文件,并把其中的一个实现文件(后缀名为m的)的后缀名改为mm的


在SimpleMovIE-BrIDging-header.h文件中写入以下文件

#import "BMapKit.h"
 参考百度的库文件引入,倒入相关包  



导入成功后,我们就开始我们的HelloBaIDuMap

在将要显示的地图的界面的vIEwDIDLoad方法中中初始化地图管理器,并设置地图

百度的写法

在您的AppDelegate.h文件中添加BMKMapManager的定义

@interface BaIDuMapAPIDemoAppDelegate : NSObject <UIApplicationDelegate> {          UIWindow *window;           UINavigationController *navigationController;            BMKMapManager* _mapManager;    }

在您的AppDelegate.m文件中添加对BMKMapManager的初始化,并填入您申请的授权Key,示例如下

- (BOol)application:(UIApplication *)application   dIDFinishLaunchingWithOptions(NSDictionary )launchOptions {       // 要使用百度地图,请先启动BaIDuMapManager      _mapManager = [[BMKMapManager alloc]init];   // 如果要关注网络及授权验证事件,请设定     generalDelegate参数      BOol ret [_mapManager start:@"在此处输入您的授权Key"  generalDelegate:nil;      if (!ret) {          NSLog(@"manager start Failed!");      }  // Add the navigation controller's vIEw to the window and display.      [self.window addSubvIEw:navigationController.vIEwwindow makeKeyAndVisible;     return YES;  }

我们的Swift写法

overrIDe func vIEwDIDLoad() {

super.vIEwDIDLoad()

// Do any additional setup after loading the vIEw,typically from a nib.

self.navigationItem.Title = "在线影院"

// 初始化地图管理器

self.mapManager = BMKMapManager()

// 地图管理器是否初始化成功

var ret = mapManager.start("填入你申请的key",generalDelegate: nil)

// 初始化地图

self.mapVIEw = BMKMapVIEw(frame: CGRect(x: 0,y: 0,wIDth: 320,height: 480))

self.vIEw = mapVIEw;

}


好了我们的地图就可以显示了,当然你也可以设置一些参数,比如说时地图中心,缩放等级。。。



如果想要开启挤出适量图和卫星图就可以这样设置,当然百度地图默认的是基础矢量图


// BMKMapTypestandard = 1,// < 标准地图

// BMKMapTypeSatellite = 2,// < 卫星地图

// self.mapVIEw.mapType = 2 //在这里无法使用这两种类型,只能使用数字代替


开启实时交通图

// self.mapVIEw.trafficEnabled = true //打开实时交通图

// self.mapVIEw.trafficEnabled = false //关闭实时交通图

打开城市热力图

self.mapVIEw.baIDuHeatMapEnabled = true //打开城市热力图

// self.mapVIEw.baIDuHeatMapEnabled = false//关闭城市热力图



好了我们需要关注的东西来了“地图标注”

1、首先我们显示地图的这个类需要实现BMKMapVIEwDelegate方法,以实现和地图的交互


2、添加显示的标注信息



3、添加显示标注的涂层


最终显示结果




好了接下来我们来实现一个折线图形,这个方法和我们平时用的时候是不一样的

这个代码片段是百度提供的

(voID)vIEwDIDLoad {         [super vIEwDIDLoad;        // 添加折线覆盖物        CLLocationCoordinate2D coors[2] {0};     coors].latitude = 39.315longitude 116.304;    coors139.515116.504;    BMKpolyline* polyline [BMKpolyline polylineWithCoordinates:coors count:;    [_mapVIEw addOverlay:polyline}    // OverrIDe    (BMKOverlayVIEw )mapVIEw(BMKMapVIEw )mapVIEw vIEwForOverlay(ID <BMKOverlay>)overlay{       ([overlay isKindOfClass[BMKpolyline class]){            BMKpolylineVIEw* polylineVIEw [BMKpolylineVIEw alloc] initWithOverlay:overlay] autorelease;            polylineVIEw.strokecolor [UIcolor purplecolor] colorWithAlphaComponent;        polylineVIEw.linewidth 5.0;        return polylineVIEw;       }       return nil}
这个是我们自己实现的

overrIDe func vIEwDIDLoad() {

super.vIEwDIDLoad()

// Do any additional setup after loading the vIEw,typically from a nib.

self.navigationItem.Title = "在线影院"

// 初始化地图管理器

self.mapManager = BMKMapManager()

// 地图管理器是否初始化成功

var ret = mapManager.start("填入你申请的key",generalDelegate: nil)

// 初始化地图

self.mapVIEw = BMKMapVIEw(frame: CGRect(x: 0,y: 0,wIDth: 320,height: 480))

self.vIEw = mapVIEw;

// 添加折线覆盖物

var coor1_latitude:CLLocationdegrees = 39.915

var coor1_longitude:CLLocationdegrees = 116.404

var coor1:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: coor1_latitude,longitude: coor1_longitude)

var coor2_latitude:CLLocationdegrees = 39.515

var coor2_longitude:CLLocationdegrees = 116.504

var coor2:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: coor2_latitude,longitude: coor2_longitude)

var c:[CLLocationCoordinate2D] = []

c.append(coor1)

c.append(coor2)

//这里的参数Coordinate用法是用的C语言的指针方式,具体请参考苹果官网给出的解释

https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.HTML

var polyline:BMKpolyline = BMKpolyline(coordinates: &c,count: 2)

self.mapVIEw.addOverlay(polyline)

}


func mapVIEw(mapVIEw: BMKMapVIEw!,vIEwForOverlay overlay: BMKOverlay!) -> BMKOverlayVIEw! {

if overlay.isKindOfClass(BMKpolyline){

var polylineVIEw:BMKpolylineVIEw = BMKpolylineVIEw(overlay: overlay)

polylineVIEw.strokecolor = UIcolor.purplecolor()


polylineVIEw.linewidth = 5.0

return polylineVIEw

}

return nil

}


效果显示如图

总结

以上是内存溢出为你收集整理的用Swift语言使用IOS百度地图(折线的使用方法很特别)全部内容,希望文章能够帮你解决用Swift语言使用IOS百度地图(折线的使用方法很特别)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1088282.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存