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

        新入职了一家公司,由于近段时间公司的事务不是很忙,我的上级领导让我学习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) ;

整体代码如下:


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

如果有什么不会的话可以给我留言~~。










评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值