您的位置:首页 > 移动开发 > Swift

IOS开发--基于Swift集成高德地图

2015-12-31 17:34 507 查看
新入职了一家公司,由于近段时间公司的事务不是很忙,我的上级领导让我学习swift语言并且进行一些Demo的制作。这不,领导让我集成高德地图的SDK,并完成一些功能,刚才开始的时候真是一头雾水呀,从来没有实际开发过IOS应用的我,在学习Swift不到半个月的时间就让我做这么高难度的东西,当时是欲哭无泪呀。于是乎到处找资料........下面说说使用Swift如何集成高德地图。

官方的Demo:http://lbs.amap.com/api/ios-sdk/guide/swift/

我的Demo也是参照官方的,但是会比较具体,对初学者来说会比较容易看得懂吧。

1、首先创建一个工程 Single View Application 。



product Name : 工程名称。

Organization Name :组织或个人的名称。

Organization Identifier:组织或个人的唯一标示,这里在我们打包上传到APPStore里面会有用到。

Bundle Identifier:绑定唯一标识。

Language:基于什么语言去编写,这里选择Swift。

Devices:该工程运行在什么设备上,iphone或ipad。这里选择Uiversal,意思是通用的,都在iphone和ipad上都能运行。

创建好工程后的目录是这样的:



2、接下来我们需要导入高德地图的SDK,如果没有下载的话可以去高德地图官网下载:http://lbs.amap.com/api/ios-sdk/down/



需要下载2D地图SDk和搜索SDK。

以下是导入SDK的步骤:


j

具体的导入可参考一下官网,这里需要说明的一点是,我们需要将下仔下来的2D地图SDK和搜索SDK放在工程目录下面,别问我为什么,当时就没放在工程目录下,出现的错误坑了我好久。如图:



现在我们只需要更改一些ViewController.swift文件就可以了:



这里的APPkey获取和很简单,直接去官网注册就行了。



接下来我们需要新建一个桥接文件:

在(工程路径)下面新建一个MapOfGaoDe-Bridging-Header.h,并添加以下内容。

接着,左侧目录中选中工程名,在 TARGETS->Build Setting-> Swift Compiler - Code Generation -> Objective-C Briding Header 中输入桥接文件的路径,如下图:



在模拟器上运行一下程序,就能显示地图了,如果运行在手机上,需要证书。

第二部分 ,那么我们如何来操作地图呢?

查看高德地图的API文档,你会欢喜的看到,里面提供了各种个样的方法,文档地址:http://lbs.amap.com/Public/reference/iOS_SDK/

查看 MAMapView,你会发现各种方法。

我们可以在initMapView()方法里面随意做修改:

//是否显示标尺

mapView!.showsScale = false

//设置当前地图的缩放级别
mapView!.setZoomLevel(4.1, animated:
true)
......and so on !!!
那么我们如何在地图上添加覆盖物呢,相信你看API的时候也发现了,对,没错,就是addOverlay()方法,那我们改怎么用呢?
首先,你要在ViewController.m的ViewController类里面添加一个方法:
//实现一个圆
func mapView(mapView: MAMapView!, viewForOverlay overlay: MAOverlay!) -> MAOverlayView! {

if overlay.isKindOfClass(MACircle){

let circle = MACircleView.init(overlay: overlay) ;

circle.lineWidth = 50.0 ;

circle.strokeColor = UIColor.blueColor() ;

circle.fillColor = UIColor.redColor() ;

return circle

}

return nil ;

}

让后在initMapView里面添加以下代码:

let coordinate:CLLocationCoordinate2D =
CLLocationCoordinate2D.init(latitude:40.078537,longitude:116.5871)
let overlay:MAOverlay =
MACircle.init(centerCoordinate: coordinate, radius:
5000.0)
mapView!.addOverlay(overlay) ;
整体代码如下:



现在就运行一下代码看看效果吧?

如果有什么不会的话可以给我留言~~。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: