新入职了一家公司,由于近段时间公司的事务不是很忙,我的上级领导让我学习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,并添加以下内容。
#import <MAMapKit/MAMapKit.h>
#import <AMapSearchKit/AMapSearchKit.h> //V3.0.0(含)之后版本引入AMapSearchKit.h
//#import <AMapSearchKit/AMapSearchAPI.h> //V3.0.0(不含)之前版本引入AMapSearchAPI.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) ;
整体代码如下:
现在就运行一下代码看看效果吧?
如果有什么不会的话可以给我留言~~。